<?xml version="1.0" encoding="UTF-8"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Semana]]></title><link>https://www.semana.com</link><atom:link href="https://www.semana.com/arc/outboundfeeds/rss/" rel="self" type="application/rss+xml"/><description><![CDATA[Semana News Feed]]></description><lastBuildDate>Sat, 19 Sep 2026 09:33:36 +0000</lastBuildDate><language>es</language><ttl>1</ttl><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><item><title><![CDATA[El Congreso entra en batalla por las terapias de cambio de sexo en menores de edad: el caso de Laura y qué dicen los sectores políticos]]></title><link>https://www.semana.com/nacion/articulo/el-congreso-entra-en-batalla-por-las-terapias-de-cambio-de-sexo-en-menores-de-edad-el-caso-de-laura-y-que-dicen-los-sectores-politicos/202621/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/el-congreso-entra-en-batalla-por-las-terapias-de-cambio-de-sexo-en-menores-de-edad-el-caso-de-laura-y-que-dicen-los-sectores-politicos/202621/</guid><dc:creator><![CDATA[Esteban Felipe  Feria Quintero]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 08:19:21 +0000</pubDate><content:encoded><![CDATA[<p>Durante años, en Colombia se ha guardado en un baúl la discusión sobre los tratamientos de reafirmación de género y las cirugías de cambio de sexo en menores de edad. Tal vez por los pocos datos que existen o por ser considerado un tema tabú en muchas comunidades. <b>Sin embargo, esta semana, el debate volvió a ver la luz, por cuenta de una iniciativa que se radicó en el Congreso de la República y que buscaría la prohibición de estas terapias. </b></p><p>El senador Andrés Forero y los representantes a la Cámara Carol Borda, David Gerardo Cote y Luis Miguel López radicaron un proyecto de ley en el Congreso de la República denominado ‘Ley Laura’.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ESQFAC5QU5BHHMKCXFVVFFPGIE.jpg?auth=4ba84bc9ab93fc4eeb27692028c9ad060b2dbeb037a4297faa64800fe564d08e&smart=true&width=1280&height=720" alt="Andrés Forero y Mauricio Toro mantienen posiciones opuestas frente al proyecto de ley que plantea nuevas restricciones a los tratamientos de reafirmación de género para menores de edad." height="720" width="1280"/><p>Con la iniciativa buscan prohibir que menores de 18 años puedan acceder a intervenciones médicas destinadas a modificar características sexuales con el único objetivo de adecuarlas a una identidad de género distinta del sexo asignado al nacer. La normativa lleva el nombre de Laura,<b> luego de conocerse a inicios de este año el caso de una joven que, cuando era menor de edad, inició un tratamiento de este tipo, pero que años después, al alcanzar su mayoría de edad, se arrepintió. </b></p><p><a href="https://www.semana.com/opinion/articulo/justicia-para-laura-la-herida-que-deja-la-clinica-valle-del-lili/202533/" target="_blank" rel="noreferrer" title="https://www.semana.com/opinion/articulo/justicia-para-laura-la-herida-que-deja-la-clinica-valle-del-lili/202533/">Laura habló en SEMANA y relató algunas de sus percepciones alrededor de esta iniciativa que llega al Congreso</a>. Aseguró que el hecho de que exista esta ley le “hace justicia a la Laura de 15 años que necesitaba sanar el trauma del abuso sexual que vivió en su infancia, trauma por el que cargaba un fuerte miedo a ser mujer; inseguridad, ansiedad y depresión. <b>Pero en lugar de recibir un tratamiento adecuado, pasó el resto de su adolescencia en un pesado proceso médico-experimental, negligente, doloroso e innecesario”. </b></p><p>¿Qué debió hacerse distinto para evitar lo que vivió? “Se debieron tratar los problemas en el orden en que aparecieron; el abuso sexual debió ser tratado primero, ya que de ahí surgió la ansiedad, la depresión y el miedo a ser mujer… pero a pesar de la insistencia de mis padres para que fuera tratado, y de lo obvio que era el dolor que cargaba del abuso, a este trauma no se le dio importancia y nunca fue tratado”, detalló.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/63RX5VFXM5CSRHNSO2FWQZWXNM.jpg?auth=2a4158fec1c54708dc7003d17b487254f568d80bb6ee8d7b46efc2ab903baea6&smart=true&width=1280&height=1855" alt="El debate entre Andrés Forero y Mauricio Toro refleja las posiciones encontradas que existen en el Congreso frente a la atención médica relacionada con la identidad de género en menores." height="1855" width="1280"/><p>En el Congreso se enfrentarán dos posiciones. La primera, de quienes lideran el proyecto, que buscará demostrar<b> que no existe evidencia científica suficiente para decir que no hay efectos adversos a largo plazo cuando se utilizan este tipo de procedimientos en menores de edad.</b></p><p>“Esto no quiere decir que no vaya a haber atención para los menores de edad que tengan o experimenten disforia en convivencia de género; de hecho, hay uno de los parágrafos que lo plantea. Pero, así como sucede en el Reino Unido, consideramos que los tratamientos deben ser abordados principalmente desde un enfoque psicológico y psicosocial”, detalló Forero. </p><p>La segunda postura es la del representante a la Cámara por la Alianza Verde Mauricio Toro, defensor de los derechos de la comunidad LGBTIQ. <b>Según él, la narrativa a favor de la prohibición se apoya en el documental Colombia: fábrica de niños trans, que presenta al país como un lugar donde estos procedimientos se realizan de manera indiscriminada y sin regulación.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JTH5LZDBR5BWHGSPQSSANBHFDM.jpg?auth=4a79772ab6210085a96f5f30c6232854f0308462369bfaef7a3cd368c0223752&smart=true&width=594&height=396" alt="niño trans. (Photo by Luis Soto/SOPA Images/LightRocket via Getty Images)" height="396" width="594"/><p>“Es completamente falso que en Colombia estén permitidas las cirugías de cambio de sexo en menores de edad y así lo ha certificado el Ministerio de Salud”, dijo, y aseguró que poner este tema en el lado de una prohibición no solo raya en la desinformación, sino que puede traer consigo el discurso homofóbico y transfóbico a la discusión. </p><p>“Vamos a dar la pelea en el Congreso para evitar la discriminación, la transfobia y, sobre todo, que se afecten los derechos de la niñez, porque aquí estamos, existimos y vamos a seguir existiendo, así ellos quieran negar que las personas diversas estamos en este mundo”, concluyó. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LYDBNNUFBFGJZJ6ZFNMFG5QYKU.jpg?auth=e599d938099170aeee700c7f13bf382e8530290ef17812cf7e56c03d63b396d8&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[El Congreso abrió nuevamente el debate sobre los tratamientos de reafirmación de género y las intervenciones médicas relacionadas con menores de edad.]]></media:description></media:content></item><item><title><![CDATA[Los niños desaparecidos en Bogotá: el drama detrás de la “evasión voluntaria” que argumentan las autoridades, pero que las familias siguen sufriendo]]></title><link>https://www.semana.com/nacion/articulo/los-ninos-desaparecidos-en-bogota-el-drama-detras-de-la-evasion-voluntaria-que-argumentan-las-autoridades-pero-que-las-familias-siguen-sufriendo/202603/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/los-ninos-desaparecidos-en-bogota-el-drama-detras-de-la-evasion-voluntaria-que-argumentan-las-autoridades-pero-que-las-familias-siguen-sufriendo/202603/</guid><dc:creator><![CDATA[Esteban Felipe  Feria Quintero]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 08:18:03 +0000</pubDate><content:encoded><![CDATA[<p>La historia de Paula, Ana Lucía, Ayelen y más niños que han desaparecido en Bogotá se sigue repitiendo. En las últimas semanas, las redes sociales se han inundado de publicaciones con carteles de menores, de entre 10 y 17 años, desaparecidos. <a href="https://www.semana.com/nacion/articulo/guerrilla-detras-de-desapariciones-de-ninos-en-bogota-menor-revelo-violaciones-armas-y-como-escapo-del-cautiverio/202638/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/guerrilla-detras-de-desapariciones-de-ninos-en-bogota-menor-revelo-violaciones-armas-y-como-escapo-del-cautiverio/202638/">El patrón es el mismo: muchos salieron de sus casas y nunca más volvieron, sin dejar rastro ni decir una sola palabra, mientras sus familias quedaron sumidas en una angustia permanente.</a></p><p>La última semana se conocieron historias realmente desgarradoras. La de Lizeth, una menor de 16 años que desapareció el pasado 30 de julio en Ciudad Bolívar, tras salir de su casa y perder el conocimiento de un momento a otro. Tras recobrar el sentido, apareció en una zona boscosa junto a otros menores<b>. En su relato aseguró que había hombres con prendas camufladas, botas y otros elementos. </b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TFNSPDDUIRCWVKQ7LCE5LC2DH4.jpg?auth=acf087386f02f1277b844ff35680231cb392b602994c3c4942b6e051821e9ae8&smart=true&width=1280&height=720" alt="Los carteles con fotografías de menores desaparecidos se han multiplicado en redes sociales, donde sus familias piden información que permita encontrarlos." height="720" width="1280"/><p>Aunque muchos aparecen, hay otros que aún permanecen en la incertidumbre. El caso de Ayelen Sofía Páez Oliveros, de 16 años, no se cierra<b>. Su madre, Claudia Oliveros, aseguró que el sábado 9 de agosto de 202 la menor salió de su casa y nunca volvió.</b></p><p>Aunque ha tenido acompañamiento de un fiscal en su caso, durante las primeras semanas las autoridades le decían a Claudia que la desaparición era una “evasión voluntaria”, dado que era una adolescente.</p><p>“Desde un primer instante les supliqué: por favor, revisen las redes sociales; por favor, revisen, siento que a mi hija me la sacaron de la casa. Alguien se gana la confianza de ellos y los está sacando; ellos salen solitos por su propia voluntad. Pero alguien los está convenciendo para que se encuentren en algún lugar o para que salgan por algún motivo”, comentó Oliveros. </p><h2>Difícil recuerdo </h2><p>“Evasión voluntaria”, esa es la misma expresión que menciona Lorena Cacais, la madre de Lizeth, quien tras desaparecer por varios días regresó con vida a su casa, pero con un difícil recuerdo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KFUVCCJB6ZB6VFFYGV2IUWZEN4.jpg?auth=81716c121835fad60b4a09f1d272db4214932adcb402a4b78b60387392129ac3&smart=true&width=1280&height=720" alt="El caso de Ayelen Sofía Páez Oliveros, de 16 años, continúa sin resolverse desde su desaparición en Bogotá." height="720" width="1280"/><p>“Estuve peleando con alguien del Gaula, que me dijo que el caso correspondía a una evasión voluntaria. Le dije: ‘¿Usted cree que, en una evasión voluntaria, me entregan a mi hija abusada sexualmente y en las condiciones que yo la encontré?’. <b>Mi hija pudo negociar y salir de allí, pero ella recuerda todos los días lo que vivió. Siento que las autoridades no han servido para nada en mi caso”, detalla Cacais. </b></p><p>La “evasión voluntaria” no solo está en boca de las autoridades para justificar lo ocurrido. También del Distrito. Según el secretario de Seguridad, César Restrepo, lo que existe hoy en Bogotá no es una red criminal, no es una situación de desaparición forzada, sino que corresponde a una supuesta decisión de los adolescentes de salir de sus casas y no dejar rastro. </p><p>“Del total de los casos que se han resuelto y que tenemos conocimiento, así no hayan vuelto a sus casas, más del 75 por ciento de los motivos o razones por las cuales han desaparecido es por voluntad propia.<b> Es decir, no ha habido la intervención de un tercero en su desaparición”, dijo Restrepo a SEMANA.</b></p><p>Sobre el incremento de casos, señaló que este no es sostenido, sino que ahora hay más canales por los que se difunden las desapariciones tras la activación de la alerta rosa.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PUBZOE34VRATNOLJK7QJ4TR3KY.jpg?auth=db6a74ca61cab76ce3951182f9e88f7fbe18608be0aec2f1475ede27fca45aa3&smart=true&width=1280&height=720" alt="Lizeth, de 16 años, regresó a su hogar después de permanecer desaparecida y relató a su familia las circunstancias que habría vivido durante esos días." height="720" width="1280"/><p>“No es que haya más casos, sino que hoy existe mayor conocimiento público sobre estas situaciones”, insistió. Reportó que en 2016 había 1.600 menores desaparecidos; en 2025 se registraron 816 reportes y en lo corrido del año van 611.</p><p>Frente a medidas como aumentar la vigilancia en las calles, Restrepo fue enfático: “La Policía Nacional no funge como padre de familia”, y sostuvo que la responsabilidad principal recae en los hogares. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SQUDSZOLY5HFXBHNYHALHTR3LI.jpg?auth=6012b2f324169847b47275431d89f52ee90a0f29cd1a1fef55e3d426f9ef063d&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Familias de menores desaparecidos en Bogotá continúan buscando respuestas mientras las autoridades investigan cada uno de los casos reportados.]]></media:description></media:content></item><item><title><![CDATA[Ley de sometimiento: el ministro de Justicia, Iván Cancino, revela en exclusiva los detalles para la entrega de los criminales. “Se someten o vamos por ellos”]]></title><link>https://www.semana.com/nacion/articulo/ley-de-sometimiento-el-ministro-de-justicia-ivan-cancino-revela-en-exclusiva-los-detalles-para-la-entrega-de-los-criminales-se-someten-o-vamos-por-ellos/202644/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/ley-de-sometimiento-el-ministro-de-justicia-ivan-cancino-revela-en-exclusiva-los-detalles-para-la-entrega-de-los-criminales-se-someten-o-vamos-por-ellos/202644/</guid><dc:creator><![CDATA[Vicky  Dávila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 08:16:44 +0000</pubDate><content:encoded><![CDATA[<p><b>VICKY DÁVILA: Ministro, ¿está listo el proyecto de ley de sometimiento que el Gobierno de Abelardo De La Espriella va a presentar al Congreso?</b></p><p><b>IVÁN CANCINO: </b><a href="https://www.semana.com/politica/articulo/el-gobierno-presentara-al-congreso-la-ley-de-sometimiento-para-grupos-armados-no-habra-negociaciones-largas-ni-rebajas-desproporcionadas/202648/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/el-gobierno-presentara-al-congreso-la-ley-de-sometimiento-para-grupos-armados-no-habra-negociaciones-largas-ni-rebajas-desproporcionadas/202648/">Sí, va muy adelantado. Estamos en trámites de revisión por parte de la Presidencia.</a> Ha sido un trabajo arduo, de muchas personas, muchas horas; es una ley necesaria. La 418 está desde 1997 y cada gobierno la ha ido utilizando para medir su política pública frente a ciertos temas. Nosotros vamos a utilizar esa ley, pero mucho más fuerte, más consistente. Reflejará la política que expresó el hoy presidente Abelardo De La Espriella desde la campaña. </p><p><b>V.D.: El mandatario ha dicho que se buscará la paz “por la razón o por la fuerza”. ¿Se puede decir que la ley de sometimiento es la razón? </b></p><p><b>I.C.: </b>Sí, es la razón, es una ley de sometimiento a la Constitución. No hay la más mínima posibilidad de que este Gobierno abra espacios para mesas de diálogo, para negociaciones, para un estatus político, que era una de las grandes preocupaciones que uno escuchaba en la oposición. No hay zonas para concentraciones de largo tiempo sin compromiso frente a la ley. Y, sobre todo, jamás habrá apertura de canales para que los grupos ilegales o terroristas puedan opinar o debatir con el Gobierno acerca de este proyecto de ley. Los interlocutores serán el Congreso y, por supuesto, les daremos traslado a las autoridades que tengan relación, como la Corte Constitucional, la Corte Suprema de Justicia, la Fiscalía, la Procuraduría, la Contraloría y la Defensoría del Pueblo.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/cTxLwFbF364?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Habla el ministro IVÁN CANCINO: sometimiento y temas claves en la justicia"></iframe><p><b>V.D.: Dígame sí o no: ¿la ley de sometimiento significa la sepultura de la paz total?</b></p><p><b>I.C.: </b>Sí. Las resoluciones, las revocatorias y las derogatorias que firmó el presidente son un mensaje claro. Esta no es una ley para un gobierno; vamos a tratar que sea una política de Estado y que no esté identificada solamente a cuatro años, sino para periodos más largos. </p><p><b>V.D.: ¿En qué consiste el proyecto? Por ejemplo, ¿cuáles serían las rebajas de pena que se contemplan? </b></p><p><b>I.C.: </b>La rebaja no es una concesión que haga el Gobierno, existe ya, por ejemplo, en la ley ordinaria. Sabemos que es un compromiso llegar a la paz, pero le digo lo siguiente: si usted es líder o tiene carácter de mando en una organización (criminal), no va a tener una rebaja mayor al 30 por ciento. Si usted pertenece a cualquier otro rango en dicha organización ilegal o terrorista, podrá aspirar a que se le asegure el 50 por ciento (de rebaja). </p><iframe width="560" height="315" src="https://www.youtube.com/embed/2ewZzmMe_yI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Ley de sometimiento: la REBAJA DE PENAS explicada por el ministro Iván Cancino"></iframe><p><b>V.D.: En la justicia ordinaria, una persona puede aspirar hoy al 50 por ciento de rebaja de la pena si acepta cargos… </b></p><p><b>I.C.: </b>Sí, pero lo difícil es que le den ese 50 por ciento. Aquí todo va a estar supeditado a las víctimas. Por ejemplo, hoy, para obtener la libertad condicional, una persona debe cumplir con las tres quintas partes de su condena. En este proyecto de sometimiento se propone que sean las cuatro quintas. En materia de rebajas, está la regla general de tres días de trabajo o estudio por uno (de rebaja), y aquí van a ser más fuertes. Pero si la persona en el cumplimiento de su pena muestra un buen comportamiento, repara a las víctimas, cuenta la verdad, entrega dinero, libera a los secuestrados y revela la ruta de las desapariciones, por ejemplo, eso puede ir disminuyendo para que tenga un plus en comparación con la ley ordinaria.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/1k9bpR9m-jM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Ley de SOMETIMIENTO: ministro Iván Cancino se refiere al trato en las cárceles"></iframe><p><b>V.D.: ¿Y hasta dónde se puede llegar? </b></p><p><b>I.C.:</b> Puede llegar a la rebaja de las tres quintas, y a dos días de trabajo y estudio por un día (de rebaja). Para obtener la libertad condicional, aparte de todo lo que exige la ley ordinaria, lo que se incluye es que se necesita el concepto favorable de la víctima. Si no está de acuerdo, no se da la libertad condicional o la suspensión de la pena. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EQY634RLTJH7VOD4Y6D5ZM7VXM.jpg?auth=7c696e7190d52ffc4370db914c3f8137be9ee60119eca586d9ad636ccfd8d8fb&smart=true&width=8192&height=5464" alt="Iván Cancino, ministro de Justicia, en entrevista con Vicky Dávila." height="5464" width="8192"/><p><b>V.D.: ¿Los que se sometan irán a cárceles normales o habrá sitios especiales de reclusión? </b></p><p><b>I.C.: </b>No habrá sitios especiales de reclusión. El proyecto habla de cárceles normales. Puede haber compromisos en algún patio, pero sin ninguna extravagancia o beneficio en las cárceles que se van a construir. Se habla de cárceles productivas porque a esas personas hay que enseñarles a hacer cosas diferentes a estar en la delincuencia. El Estado tiene la obligación de enseñarles para que no reincidan. Este proyecto tiene un fin y es no encerrar a la gente por encerrarla. Hay que procurar que, al terminar ese periodo de privación de la libertad, exista una oportunidad para que esa persona pueda reincorporarse a la vida y no que vuelva a armar grupitos. Aquí tiene que haber una política de sometimiento, <a href="https://www.semana.com/semana-tv/semana-el-debate/articulo/le-dicen-a-abelardo-de-la-espriella-lo-que-podrian-hacer-las-disidencias-y-el-eln-tras-anuncio-de-ley-de-sometimiento-es-probable/202621/" target="_blank" rel="noreferrer" title="https://www.semana.com/semana-tv/semana-el-debate/articulo/le-dicen-a-abelardo-de-la-espriella-lo-que-podrian-hacer-las-disidencias-y-el-eln-tras-anuncio-de-ley-de-sometimiento-es-probable/202621/">pero que sirva para que esas personas no vuelvan a armarse en contra del Estado colombiano. </a></p><p><b>V.D.: O sea, ¿van a tener que trabajar?</b></p><p><b>I.C.: </b>Claro. </p><p><b>V.D.: Hay un tema que le importa mucho al país y es la verdad. ¿Cómo queda ese capítulo? </b></p><p><b>I.C.:</b> Es un compromiso absoluto. Sin verdad, no hay nada, pero no es solamente la verdad, Vicky, y quiero ser absolutamente claro: es verdad, entrega de rutas, armas, de todos los miembros de la organización, garantías de no repetición, reparación, y todo tiene que ser sumado. Le reitero: el papel de la víctima aquí, por primera vez, condiciona muchos de estos resultados. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/UOGULCLNZVFX5AJFFNRBVFQWAU.jpg?auth=dbbc15fa6f4d47c17759b8d0fcf857ac4dd2c97176d0624150ea8643a3d2c683&smart=true&width=8192&height=5464" alt="Iván Cancino, ministro de Justicia." height="5464" width="8192"/><p><b>V.D.: Si la víctima dice, por ejemplo, “no estoy de acuerdo con que este señor que mató a mi familiar esté en detención domiciliaria”, ¿no se le puede otorgar dicho beneficio? </b></p><p><b>I.C.: </b>No se puede, y obviamente debe estar motivado. No puede ser utilizado como capricho o como venganza. La víctima puede decir: “No estoy de acuerdo porque no ha dicho la verdad, no ha entregado los bienes”. Es decir, la víctima tiene voz para la toma de decisiones; es una voz muy importante para el Gobierno.</p><p><b>V.D.: En su momento, el Gobierno Petro intentó tramitar un proyecto de ley de sometimiento y se desató un escándalo por los beneficios y las rebajas de penas. ¿Cómo se manejará el tema de los bienes? </b></p><p><b>I.C.: </b>La mal llamada y falsa paz total fue muy generosa en el diálogo, pero no cerró absolutamente nada. El país no ve un resultado, ve una catástrofe. Somos muy pequeños en el campo que se va a abrir, pero vamos a hacer un cierre muy grande. Claro que tienen que entregar los bienes, las rutas de las economías ilícitas. Le voy a poner un ejemplo: este Gobierno ya tiene identificadas muchas de las economías ilícitas que se utilizan para generar droga o lavar dinero. </p><iframe width="560" height="315" src="https://www.youtube.com/embed/bFrYWlThEBk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Ley de sometimiento: ¿qué pasará con los bienes ilícitos de los criminales?"></iframe><p><b>V.D.: ¿O sea, se quedan sin nada?</b></p><p><b>I.C.:</b> Sin nada. Tienen que entregar todo porque eso fue adquirido de manera ilícita y lo que van a obtener a cambio es que el Estado les permita entrar en la ley de sometimiento y que con esos bienes se repare a las víctimas. No le queda bien al Gobierno decir que les va a devolver el 12 por ciento, cuando ese porcentaje puede ser necesario para la reparación. O que les va a dejar el 6 por ciento o el 3 por ciento. No. El proyecto es claro en que la entrega de bienes no implica la devolución de ningún porcentaje. Por el contrario, si la víctima o alguien encuentra que los victimarios escondieron bienes, serán expulsados inmediatamente de la ley y van a la ordinaria. </p><p><b>V.D.: ¿Habrá una justicia especial para esta ley de sometimiento?</b></p><p><b>I.C.: </b>No se propone la creación de ninguna jurisdicción especial. La ruta va a ser a través de los fiscales y jueces. Se le sugiere a la Fiscalía una unidad especial, pero ajustando cargas. La señora fiscal está también comprometida con la paz y la justicia, y cuando vea el texto, podemos entre todos hacer una reorganización para que haya una unidad especial sin que eso implique la creación de nuevos cargos.</p><p><b>V.D.: Si alias Mordisco o Calarcá se quieren entregar, ¿qué deben hacer? </b></p><p><b>I.C.: </b><a href="https://www.semana.com/semana-tv/semana-el-debate/articulo/alias-ivan-mordisco-y-calarca-se-rendiran-el-escenario-que-ven-alfonso-gomez-mendez-y-jaime-arrubla-con-la-ley-de-sometimiento/202637/" target="_blank" rel="noreferrer" title="https://www.semana.com/semana-tv/semana-el-debate/articulo/alias-ivan-mordisco-y-calarca-se-rendiran-el-escenario-que-ven-alfonso-gomez-mendez-y-jaime-arrubla-con-la-ley-de-sometimiento/202637/">Lo primero es nombrar a un interlocutor válido y ese es otro gran cambio.</a> Aquí no hay estatus ni habrá diálogo político. La iniciativa prevé que el interlocutor válido tiene que ser un abogado que no pertenezca a la organización. Con eso el mensaje es claro. Aquí no vamos a debatir nada político, aquí no habrá estatus. </p><iframe width="560" height="315" src="https://www.youtube.com/embed/tdvLkpX_XWE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="MENSAJE DIRECTO del ministro Iván Cancino a los criminales Mordisco y Calarcá"></iframe><p><b>V.D.: Ni se van a poner de acuerdo…</b></p><p><b>I.C.:</b> No, aquí la interlocución va a ser clara. Esa persona entra en contacto con el interlocutor válido que designa exclusivamente el presidente y que puede ser el ministro de Justicia u otra figura, puede ser incluso un particular. Eso queda en la ley para que el presidente tenga ese poder de decisión. </p><p>Una vez ocurra eso, la ley marca toda la ruta. Hay una fase preparatoria y una de judicialización. Puede haber personas que no tengan medida de aseguramiento y se les impondrá en lugares solo para los términos de judicialización. Y esto es muy importante que la gente lo entienda: la paz total tenía zonas donde las personas podían estar lo que quisieran, andar libremente, se suspendían las órdenes de captura y la extradición se condicionaba a su aporte a la paz. Aquí no hay condicionamiento. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/F444MSQBX5E6NAAXCMLKUEJHQQ.jpg?auth=64db83529fc1cfb28e4022e8043722dff620806b6dacd7a8a55da55e2ca18c8a&smart=true&width=8192&height=5464" alt="Iván Cancino, ministro de Justicia, en entrevista con Vicky Dávila." height="5464" width="8192"/><p><b>V.D.: ¿Qué ocurre entonces?</b></p><p><b>I.C.: </b>La orden de captura sigue vigente, no se suspende y tampoco la extradición. Si una persona tiene orden de captura con pedido de extradición, que se someta para que, cuando cumpla la extradición, pueda regresar y tener arreglada su situación en Colombia como beneficio. No se suspenderá ninguna extradición porque la persona esté en sometimiento. Y lo más importante, quien ya esté bajo el dominio del Estado, es decir, capturado, no entra en esta ley. El Estado no va a servir para limpiar o para desconocer el esfuerzo de la fuerza pública, los jueces y la Fiscalía. El que esté adentro no será beneficiario de esta ley de sometimiento.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/52WY00LLqfs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Así van las EXTRADICIONES de criminales en el Gobierno De La Espriella"></iframe><p><b>V.D.: A propósito del ejemplo de Mordisco o Calarcá, si ellos deciden entregarse, ¿cómo lo hacen? </b></p><p><b>I.C.: </b>Se activa la ruta con el interlocutor. Mientras la Fiscalía realiza el trámite, existe la posibilidad de una pequeña localización temporal por tres meses, no para negociar, sino mientras se define la situación jurídica por parte de un fiscal y un juez.</p><p><b>V.D.: Para que se puedan entregar…</b></p><p><b>I.C.:</b> Se entregan y van a ser custodiados por el Estado. Por eso, la ley prevé que habrá centros de detención en esas áreas o serán enviados a otros centros. No van a estar libres, no van a estar haciendo lo que quieran.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KKHV26KUHNECDOS6VBUKXH6SCA.jpg?auth=d8b1a458fde7ebf2f29ed9f7f3b9b5122c57a0563ea6c0e346de3a3eaefd8062&smart=true&width=8192&height=5464" alt="Iván Cancino, ministro de Justicia." height="5464" width="8192"/><p><b>V.D.: Se van a La Picota, a La Modelo o al buque cárcel…</b></p><p><b>I.C.: </b>Sí, Vicky; además pueden pasar dos cosas. Que la persona deba tener un tratamiento penitenciario, o a lo mejor no necesita eso, y es muy importante que la gente lo sepa. Una persona dice: “Mire, yo formé parte de una organización, pero lo mío fue el concierto para delinquir; no participé de economías ilícitas, no cometí homicidios, secuestros, desapariciones”. En últimas, esa persona se somete, pero a lo mejor no necesita tratamiento penitenciario. </p><p><b>V.D.: Y si Mordisco y Calarcá se entregan, y están pedidos en extradición, ¿qué pasa?</b></p><p><b>I.C.:</b> Se van.</p><p><b>V.D.: ¿Los trasladan a una cárcel o son extraditados?</b></p><p><b>I.C.: </b>Se van. El trámite de extradición sigue. La ley no suspende órdenes de captura, no condiciona la extradición a la terminación del proceso.</p><p><b>V.D.: Quiero hacerle un comentario: estoy de acuerdo con este proyecto de ley de sometimiento, muestra fuerza, autoridad, pero creo que nadie se va a someter así con esas condiciones…</b></p><p><b>I.C.: </b>Esa ya es una decisión que tienen ellos. La política del presidente De La Espriella fue muy clara. Creo que la decisión correcta e inteligente no es combatir (al Estado). </p><p>Algunos van a decir que el ministro de Justicia y el ministro del Interior nunca han estado en la guerra, que no sufren y que esto es con los hijos ajenos. Quiero recordarle una cosa: a Rodrigo Lara, precisamente, estas organizaciones le mataron a su padre. Y ahí es donde la historia nos une. Quien defendió a Rodrigo Lara Bonilla fue mi padre, Antonio José Cancino. Y a la gente se le olvida que en pocos días se cumple un aniversario del atentado contra mi papá, que nos desbarató la vida. Casi lo matan. Mi familia fue desplazada. Tengo un hermano que desde 1995 vive en España y pocas veces lo veo. Entonces, sabemos lo que es esto. Hemos sido víctimas. Y por eso también, como víctimas, tenemos que tener coherencia con lo que el Estado necesita hoy en día. Por eso, a alias Pinocho, a Calarcá, a todos, les estamos dando un instrumento que va a evitar que sufran o que sean abatidos en combate. </p><p><b>V.D.: ¿Está de acuerdo con esta frase: sometimiento o muerte?</b></p><p><b>I.C.: </b>Me parece muy dura. Sometimiento o someterse a la acción del Estado. </p><p><b>V.D.: Pero la acción del Estado puede implicar bombardeos... </b></p><p><b>I.C.:</b> La delincuencia se tiene que combatir con mano dura, como lo han hecho de manera extraordinaria el ministro de Defensa y la fuerza pública, pero también implica capturas y con las capturas no hay beneficios. Es decir, no quiero enviarle el mensaje a la ciudadanía de que la única función que tiene el ministro de Defensa es matar a la delincuencia. Puede ser una consecuencia, pero si usted está en la base, dígale a su líder que se quiere entregar. Si su líder no se quiere entregar, déjelo solo. Venga, que aquí lo recibimos. El sometimiento es individual o colectivo. </p><p><b>V.D.: ¿Se puede decir que este proyecto de ley de sometimiento es más duro que lo que había en los tiempos de Pablo Escobar?</b></p><p><b>I.C.:</b> Sí. Fíjese que uno tiene que aprender de la historia. En su momento, esa ley estuvo bien hecha. Mi papá participó de muchos de esos proyectos, de tal manera que desde muy pequeño lo había escuchado e interiorizado. El ministro Lara será el líder, por supuesto, del manejo de proyecto en el Congreso. Lo hemos debatido con los equipos jurídicos; esto no es fruto de una invención, es fruto de un trabajo largo y a conciencia, y el Congreso de la República también tendrá que dar su parte.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/5T2W4BOW3BDKTB2PKD4P7WZMIU.jpg?auth=1187eab483b29142df2e5aef3fe5a25eb513d50407968b203316bdda33ed44a5&smart=true&width=8016&height=5347" alt="Iván Cancino, ministro de Justicia." height="5347" width="8016"/><p><b>V.D.: ¿Cómo van a proteger al Congreso para que el narcotráfico no amenace o compre a los congresistas en el trámite de este proyecto de ley?</b></p><p><b>I.C.:</b> Obviamente, al Congreso se le tiene que garantizar su seguridad. Ya no soy un abogado litigante, no pienso de una manera individual para el beneficio de un cliente; soy el ministro de Justicia y del Derecho y tengo que pensar en el país, en el interés público. Pueden tener la absoluta tranquilidad de que este proyecto lo trabajamos con conciencia, conocimiento y responsabilidad. Asimismo, debo decir que no habrá suspensión de la actividad militar.</p><p><b>V.D.: No habrá cese al fuego…</b></p><p><b>I.C.:</b> No. El cese debe ser de ellos (de las <a href="https://www.semana.com/amp/nacion/articulo/gobierno-de-la-espriella-solicita-la-renuncia-a-todos-los-integrantes-de-la-comision-asesora-de-politica-criminal/202642/" target="_blank" rel="" title="https://www.semana.com/amp/nacion/articulo/gobierno-de-la-espriella-solicita-la-renuncia-a-todos-los-integrantes-de-la-comision-asesora-de-politica-criminal/202642/">organizaciones criminales</a>), es decir, unilateral. El Estado no va a arrodillarse ni va a ceder ante las presiones. Aquí no hay extorsiones, no hay chantajes. Si no se acogen, se someterán a que la justicia siga actuando y la fuerza pública también.</p><p><b>V.D.: Alias Pinocho, uno de los comandantes de las Autodefensas Conquistadoras de la Sierra Nevada, dijo que está listo para someterse a la justicia, pero aseguró que no está dispuesto a pagar más de cinco años de cárcel. ¿Qué le dice?</b></p><p><b>I.C.: </b>Que no venga. </p><p><b>V.D.: ¿Qué le dice a Calarcá? </b></p><p><b>I.C.: </b>Que reflexione, que venga. Y al que está dependiendo de Pinocho o de Calarcá, que entienda que esa no es la vía. La vía es venir para acá. Están las cárceles productivas; estamos viendo esas posibilidades de trabajo con los ministerios de Trabajo, Comercio, Agricultura, para ver cómo se soluciona rápidamente esa reincorporación y resocialización a la vida.</p><p><b>V.D.: El presidente Abelardo De La Espriella le advirtió a Mordisco que pronto le va a caer una bomba encima. ¿Mejor que se someta antes de que eso ocurra?</b></p><p><b>I.C.: </b>Pues si no quiere que eso le pase, que venga, por supuesto. </p><p><b>V.D.: ¿Qué piensa de unos pocos sectores que han intentado lamentar la muerte de alias Bendito Menor, que cayó en un reciente operativo de la fuerza pública?</b></p><p><b>I.C.: </b>Miro toda la política pública desde el eje de las víctimas. A las víctimas las tengo que proteger de la mejor manera, y esa es desarticular por vía judicial a estas personas. La política de persecución es válida y respetando el derecho internacional humanitario, que es lo que ha hecho el ministro Mora de manera brillante, siempre bajo la dirección del presidente de la república. <a href="https://www.semana.com/semana-tv/semana-el-debate/articulo/muerte-de-bendito-menor-l-pronostican-que-viene-ahora-tras-dar-de-baja-a-nain-andres-perez-es-lo-que-sigue/202652/" target="_blank" rel="noreferrer" title="https://www.semana.com/semana-tv/semana-el-debate/articulo/muerte-de-bendito-menor-l-pronostican-que-viene-ahora-tras-dar-de-baja-a-nain-andres-perez-es-lo-que-sigue/202652/">Creo que las organizaciones ilegales y los grupos terroristas han entendido que hay otro momento del Estado </a>y que el Estado no solo dice, sino que también hace. </p><p><b>V.D.: En ese sentido, ministro, ya van más de 85 extradiciones. Es decir, más extradiciones que días de gobierno... </b></p><p><b>I.C.: </b>Y seguimos. Es un tema inagotable. El presidente dice en sus transmisiones que ese es uno de los momentos que más les gusta a los colombianos. Queremos ampliar algunos tratados de extradición o fortalecerlos, por ejemplo, con Chile y Argentina, y otros países en Europa. Hemos suscrito memorandos de entendimiento con otros países. Antes, las extradiciones se daban mayoritariamente por narcotráfico. Hoy también se dan por economías ilegales, lavado de activos, contrabando, delitos relacionados con criptomonedas. Este Gobierno ha autorizado no solo la extradición de la persona que lleva la coca, sino también la de quien lava el producto de eso. Cuando cumplamos los 100 días de gobierno, duplicaremos las extradiciones. Eso no es perder la soberanía, es ejercer una colaboración armónica y eficaz para consolidar a Colombia en esas relaciones internacionales que no estaban del todo claras y amigables.</p><p><b>V.D.: ¿Estaban frenadas las extradiciones durante el Gobierno de Gustavo Petro?</b></p><p><b>I.C.: </b>El tiempo nos dará la evaluación. El expresidente Petro se ufanaba de firmar poco menos de mil. Yo creo que nosotros vamos a firmar esas en la mitad del tiempo, por ser generosos. Con eso le respondo todo. </p><p><b>V.D.: Hay una extradición pendiente muy importante y es la de alias Araña. ¿Cuándo será trasladado a Estados Unidos? </b></p><p><b>I.C.: </b>Ya está esperando a que lo suban al avión. Esa extradición y otras fueron capítulos bastante duros: la de H. H., el Mocho Olmedo… Todo lo que existió alrededor es bien preocupante y tiene que ser digno de investigación. La de alias Araña se destrabó, se certificó que no hizo absolutamente ningún aporte importante para la paz. La paz total se desmontó. De tal manera que él debe estar esperando en su celda que en cualquier minuto lo saquen y monten a un avión y lo lleven a cumplir una pena en Estados Unidos.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/vsIjCgBm2EQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Extradición de ALIAS ARAÑA: &quot;Ya está esperando que lo suban al avión&quot;"></iframe><p><b>V.D.: Araña sabe mucho, ¿no? </b></p><p><b>I.C.:</b> Eso dicen, Vicky. Aquí se ha tratado de respetar, obviamente, la independencia de poderes. Una de las instrucciones del presidente es no interactuar con enviados o grupos para abrir puertas. Han enviado muchas cartas, algunas se han contestado. Solo espero que sea posible que, donde haya investigaciones en las que Araña sea posible testigo; ojalá la justicia pueda enviar rápidamente a personas para que él sea escuchado. Y ojalá Araña no se vaya con tantos secretos. Bien sea que lo haga judicialmente o que, por lo menos, deje un testimonio, de la manera que él crea, como deber patriótico. Él debe entender que tiene una deuda histórica con el país de contar la verdad de lo que pasó y de lo que percibió en la delincuencia.</p><p><b>V.D.: Quiero entrevistar a Araña, ojalá lo logre… </b></p><p><b>I.C.: </b>Vicky, ahí está.</p><p><b>V.D.: Quiero preguntarle por alias Walter Mendoza, jefe de la Coordinadora Nacional Ejército Bolivariano, una de las disidencias de las Farc. Él les envió una carta y pide un espacio para conversar. ¿Qué le dice? </b></p><p><b>I.C.: </b>¿Qué aporte han hecho ellos al país? Ninguno. No tienen absolutamente ningún respaldo popular. La paz no es retórica, no son carticas, son hechos. Y los hechos que se pueden presentar, es decir: “Aquí estoy, pido perdón, entrego bienes, rutas, me desarmo, cumplo con las condiciones que el Gobierno me da y me reincorporo a la sociedad después de cumplir el proceso de sometimiento”. No puedo decirle nada más. No hay interlocución, no ponen condiciones. La única interlocución válida es que designe a un abogado y se acerque, bajo el marco legal que esperemos quede muy pronto aprobado por el Congreso, después de un debate democrático. </p><p><b>V.D.: El traslado de presos a diferentes cárceles del país está dando resultados en materia de seguridad…</b></p><p><b>I.C.: </b>Le pongo un ejemplo: Barranquilla, donde está la sede alterna del presidente de la república. Allí se instaló la subdirección de la Policía con el general Mujica. Ha habido interlocución con las autoridades locales. Después de que se hicieron los traslados, se cerró la comunicación de la delincuencia de la cárcel con sus fichas o alfiles en las calles, y la criminalidad bajó 63 por ciento en los primeros días…</p><p><b>V.D.: Eso debe esperar Buenaventura, por ejemplo.</b></p><p><b>I.C.: </b>Ya se están viendo las primeras disminuciones en los indicadores de delincuencia. La idea funciona si se hace de manera concreta, cerrándole la puerta a la corrupción. Colombia tiene la tecnología para los inhibidores de llamadas desde la cárcel. Lo que pasa es que entra un preso y los apaga. Tenemos imágenes en cárceles y estaciones de policía donde se ve a la persona privada de la libertad apagando el inhibidor.</p><p><b>V.D.: Entréguenos esas imágenes, ministro, para que el país las conozca… </b></p><p><b>I.C.:</b> Todavía no, porque están siendo objeto de investigación. Lo que le pido es un acto de fe; créame que las he visto.</p><p><b>V.D.: Estoy segura de que así es… </b></p><p><b>I.C.: </b>El señor presidente ordenó la instalación de un pabellón piloto de extremas medidas de seguridad en la cárcel de Girón. Próximamente se lo daremos a conocer al país. Habrá imágenes sobre eso. No es solamente trasladarlos, es incomunicarlos. Con el respeto de los derechos mínimos de una persona privada de la libertad, es romperle su línea de comunicación externa con el delito. Por eso nos hemos reunido con el sector de telecomunicaciones, el sector bancario, porque las extorsiones necesitan una plataforma o una cuenta o lo que sea. Hemos encontrado las puertas abiertas por parte de esas compañías y seguiremos trabajando no solo en reducir la extorsión, que es lo visible. Desde la cárcel llaman a amenazar, a matar a las personas, dan órdenes de homicidios, de secuestros. </p><p>No son solamente las cifras de extorsión, sino lo que pasa en una cárcel. Por eso, las hemos visitado personalmente para identificar que haya la menor cantidad posible de tomacorrientes para cargar celulares. Se ha mantenido una política para evitar que desde las cárceles se delinca, pero también usted me ha visto barrer y pintar calles con personas privadas de la libertad y ese mensaje no puedo no mandarlo. </p><p>Para el que quiera una segunda oportunidad, también tendremos una política para ellos, para las mujeres, ley de utilidad pública, cárceles productivas, cárceles de mínima y mediana seguridad. Es decir, mano dura para el que se enfrente con el Estado, pero también muchas posibilidades para el que se someta, se entregue o esté cumpliendo su pena privativa de la libertad. </p><p><b>V.D.: Ministro, y que no haya políticos alrededor de los criminales. No queremos más gestiones en el país como las que hizo la senadora Isabel Cristina Zuleta, por poner solo un nombre, porque hay muchos más… </b></p><p><b>I.C.: </b>Vicky, no quiero personalizar. El Congreso tiene una función y hay una comisión de paz. La ley es clara en que los interlocutores los decide el presidente. Que el interlocutor de los grupos ilegales o terroristas tiene que ser un abogado. De tal manera que yo a un congresista no le puedo decir qué hacer o no hacer, porque lo tiene claro y está reglado.</p><p><b>V.D.: Y si además no tiene permiso del Gobierno, no tiene autorización…</b></p><p><b>I.C.: </b>En este momento, las autorizaciones las da el presidente y, en lo que hemos dialogado, no existe la posibilidad de que un interlocutor sea un congresista de ningún partido, ni de oposición, ni de Gobierno, ni independiente. Vamos a estar muy atentos a que no se sobrepasen, a que no se presenten alianzas con los ilegales. Obviamente, si se llegan a pasar del marco legal y constitucional, también habrá consecuencias legales.</p><p><b>V.D.: ¿Cuándo van a estar listas las megacárceles? ¿De dónde saldrán los recursos para su construcción? </b></p><p><b>I.C.: </b>Ojalá sean diez; muchas van a ser bajo la figura de las alianzas público-privadas. Esperamos tener las primeras lo más rápido posible. Hay que buscar ubicaciones que no afecten a la ciudadanía; la idea es <a href="https://www.semana.com/tecnologia/articulo/desde-prision-no-se-puede-seguir-ordenando-el-delito-gobierno-busca-acabar-la-extorsion-y-el-robo-desde-las-carceles-de-colombia/202655/" target="_blank" rel="" title="https://www.semana.com/tecnologia/articulo/desde-prision-no-se-puede-seguir-ordenando-el-delito-gobierno-busca-acabar-la-extorsion-y-el-robo-desde-las-carceles-de-colombia/202655/">generar cárceles productivas.</a> Usted no se imagina la cantidad de bienes improductivos que tiene el Estado. Ya el presidente le dio la instrucción a la persona que va a llegar a la Agencia Nacional Inmobiliaria Virgilio Barco Vargas para que haga una lista. La SAE también está haciendo un listado actualizado de bienes para venderlos, o los que sean del Estado. Es decirle a un constructor que tenga experiencia en cárceles: le doy este lote, construya una cárcel. Eso es lo que se está desarrollando. También hay que hacer construcciones funcionales, es decir, que se puedan ir entregando, por ejemplo, por módulos. Otra cuestión que hay que tener muy en cuenta es la ubicación. Nosotros no podemos mantener cárceles en centros urbanos por muchas cosas. Hay que buscar ubicaciones que no afecten a la ciudadanía, que no vayan a afectar la economía.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/dQXdL5gQU_A?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Las MEGACÁRCELES, otro de los proyectos del Gobierno de Abelardo De La Espriella"></iframe><p><b>V.D.: ¿Se van a acabar el Inpec, la Uspec? </b></p><p><b>I.C.: </b>El problema nunca ha sido de las instituciones, ha sido de las personas. Pero sí hay que dar un debate muy fuerte, y es que no se le olvide que el Inpec es una fuerza armada y las fuerzas armadas deben estar bajo el mando del Ministerio de Defensa. </p><p><b>V.D.: Es decir, ¿el Inpec quedará adscrito al Ministerio de Defensa? </b></p><p><b>I.C.:</b> No estoy diciendo eso, eso está en estudio. Nosotros no tenemos una estigmatización frente a los funcionarios del Inpec; es más, los protegemos. Los han amenazado, los han matado y han tenido y contarán con todo mi respaldo. En el Inpec hay gente muy buena, muy profesional, que también podrá ser considerada para todo lo que el Gobierno pueda estar planteando. Sí está siendo objeto de estudio cómo se hace todo con una entidad como el Inpec y cómo va a ser en el futuro la protección y la guarda de esas cárceles. También se está estudiando la posibilidad de que puedan hacerlo entidades privadas. </p><p><b>V.D.: ¿Qué noticias hay del buque cárcel?</b></p><p><b>I.C.:</b> Se está estudiando el tema, se está buscando la zona adecuada. Eso va, Vicky. </p><p><b>V.D.: ¿Y quiénes van a ir al buque cárcel? </b></p><p><b>I.C.: </b>Obviamente, delincuentes que necesiten un aislamiento.</p><p><b>V.D.: ¿O sea los peores?</b></p><p><b>I.C.:</b> Por supuesto, los peores y los que delinquen. Una persona que siga delinquiendo, que siga generando zozobra, ordenando homicidios. Yo sí les pido a los señores jueces que tengan en cuenta si es mejor proteger a toda la sociedad o permitirle al señor que los familiares lo visiten cada ocho o cada 15 días. Va a ser excepcional, va a ser para un grupo de personas que sigan generando delincuencia.</p><p><b>V.D.: Que no tienen control…</b></p><p><b>I.C.: </b>Y no tienen pudor ni límite, ni han generado ningún arrepentimiento o manifestado su intención de no delinquir; por el contrario, la han potencializado. </p><p><b>V.D.: ¿Timochenko tiene algún riesgo jurídico tras el acuerdo de paz de La Habana? </b></p><p><b>I.C.:</b> Los compromisos que el Estado colombiano tenga obligatorios con la JEP se cumplirán. No esperen nada diferente a que se cumpla la Constitución y la ley de lo que sea absolutamente obligatorio. </p><iframe width="560" height="315" src="https://www.youtube.com/embed/VyZjxbbrXeU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="El ministro Iván Cancino ANALIZA la situación de Timochenko y el papel de la JEP"></iframe><p><b>V.D.: Es decir, mientras Timochenko cumpla sus compromisos y no vuelva a delinquir, ustedes van a cumplir como Estado… </b></p><p><b>I.C.: </b>Por supuesto, las obligaciones legales y constitucionales que no puedan ser variadas no se van a cambiar.</p><p><b>V.D.: ¿Algún día lo podrían extraditar? </b></p><p><b>I.C.:</b> Si comete alguna violación, si sale de la JEP, por supuesto que puede ser judicializado rápidamente. </p><p><b>V.D.: Pero mientras tanto, ¿no? </b></p><p><b>I.C.: </b>A él lo han autorizado a salir del país, y los compromisos de la JEP no están en otros países. De tal manera que, si hubo una víctima extranjera y él va a un lugar donde está dicha víctima, me imagino que el Estado analizará el caso en su autonomía…</p><p><b>V.D.: ¿Y lo puede capturar?</b></p><p><b>I.C.: </b>No me quiero meter a decir qué puede o no puede hacer (un país). Pero, en principio, él tiene una protección que le dio un mal acuerdo de paz en Colombia. Eso es todo lo que le puedo decir.</p><p><b>V.D.: ¿Y los exjefes paramilitares que estaban como gestores de paz? ¿Qué pasó con ellos? </b></p><p><b>I.C.: </b>No, aquí no va a haber gestores de paz de ninguna naturaleza. Ellos tienen los mecanismos que se les están dando, los que habían adquirido, por ejemplo, con Justicia y Paz. Obviamente, si volvieron a delinquir y están dentro de algún grupo al margen de la ley, también podrá ser examinada su vinculación a esta ley de sometimiento. </p><p><b>V.D.: ¿Está de acuerdo con recortarle el presupuesto a la JEP en 100.000 millones de pesos para invertir dichos recursos en la justicia ordinaria?</b></p><p><b>I.C.: </b>Me he reunido con el presidente de la república, con el equipo de la honorable Corte Suprema de Justicia, la Corte Constitucional, el Consejo de Estado, la Fiscalía, la Defensoría del Pueblo, y hemos escuchado sus necesidades económicas. Lo ideal es que el Estado pueda cumplirlas cuando se corrija el desbalance financiero que se dejó en el Gobierno anterior. Yo con la JEP no manejo presupuesto. Formo parte de un Gobierno, de tal manera que si la decisión la toma el presidente de la república con el ministro de Hacienda, la apoyaré.</p><p><b>V.D.: ¿Le dio duro dejar su oficina de abogados? </b></p><p><b>I.C.: </b>Sí. La oficina cerró. En eso quiero ser absolutamente claro. Imagínese usted el problema de haberle dejado el nombre Iván Cancino Abogados. Se cambió el nombre, vendí absolutamente todo y lo cedí. No tengo ninguna participación. No me reúno, no escucho a ningún cliente desde que me posesioné como ministro de Justicia. No interferiré. No favoreceré. No habrá absolutamente ninguna manifestación pública o privada del ministro de Justicia por quienes fueran sus clientes. Hoy tengo la camiseta de servidor público. Pienso en la víctima, en el interés general del país y, mientras sea ministro de Justicia, en eso me concentraré, sin pensar jamás en mis intereses particulares, pasados o futuros.</p><p><b>V.D.: ¿Le hace falta litigar? </b></p><p><b>I.C.:</b> Digamos que no me hace falta porque he entrado en el ritmo de lo que es el servicio público y me apasiona. Me he enamorado de esto. Me he enamorado de la posibilidad de aportarle cosas a mi país. Aquí no estoy haciendo ningún sacrificio. Estoy haciendo algo para lo cual me comprometí y lo tengo que hacer. Los servidores públicos no estamos para hacer sacrificios. Estamos para brindar todo nuestro conocimiento y experiencia y cumplir y dejar hechos que le puedan servir al sector justicia. Y no como una realización de Iván Cancino, sino como la política de un Gobierno que vino a servir, a dejar huella y a hacer de Colombia un país mejor a la mayor brevedad posible, pero con presencia y permanencia hacia el futuro. </p><p><b>V.D.: El ministro de Defensa, el comandante de las Fuerzas Militares y el director de la Policía contaron que el presidente Abelardo De La Espriella los llama a veces de madrugada y está muy pendiente de todo, haciendo microgerencia. ¿A usted también lo llama de madrugada?</b></p><p><b>I.C.: </b>Un día de esta semana, a las 11:15 de la noche, le dije a mi esposa, Sandra, que iba a ser el primer día que el presidente no me iba a llamar sobre esa hora desde que anunció que iba a ser ministro. Y, justo, me llamó... Hablamos mucho. En una reunión, el presidente dijo que hay ministros con los que habla más que con su señora esposa y ahí estoy yo. Hay una comunicación permanente que me da tranquilidad. Yo me le debo al país y al presidente Abelardo. No tengo jefe político, no tengo quien me mande, no tengo quien me exija, mi jefe es el presidente de la república.</p><p><b>V.D.: El presidente De La Espriella ha demostrado una capacidad de trabajo que tiene descrestado a todo el mundo...</b></p><p><b>I.C.: </b>Claro, y que motiva, es un verdadero líder.</p><p><b>V.D.: Es como omnipresente. En la mañana está en la Corte, luego viaja a Chocó, después está en un consejo de seguridad en Valledupar; es impresionante…</b></p><p><b>I.C.: </b>Pues así estamos nosotros, Vicky, eso es lo que hay que hacer. El Estado tiene que tener presencia en el territorio. Hay personas que han dicho: “Por aquí jamás había venido el sector Justicia”. Cuando uno tiene un líder así, uno se motiva a seguir el ejemplo y creo que lo hemos hecho todos los miembros del Gobierno; uno también se motiva y se ve reflejado, y entonces ya el Estado empieza a funcionar de una manera más fluida.</p><p><b>V.D.: ¿Considera que hay una guerra jurídica para que el Gobierno no avance en la lucha contra el narcotráfico? </b></p><p><b>I.C.:</b> El discurso del presidente ha sido muy claro: respeto por los jueces. Aquí hemos recuperado esa autonomía de los poderes, el respeto y la dignidad por la justicia, por las cortes. Lo que ha hecho el presidente es acatar, pero también debatir jurídicamente por medio de los recursos. Yo no lo llamaría guerra jurídica. Por ejemplo, un cultivo ilícito genera economías ilegales, desplazamiento, sometimiento de la voluntad popular a la delincuencia, no presencia del Estado y muerte. ¿Eso es más importante que el medioambiente? No. Lo que el país tiene que tener claro es que este Gobierno respeta el derecho internacional humanitario, el principio de precaución, pero la aspersión va.</p><p><b>V.D.: ¿Van a fumigar? </b></p><p><b>I.C.: </b>Vamos a fumigar, sin desconocer las decisiones. Cada vez que se nos pide que ajustemos algo, lo acataremos. Y si hay que plantear alguna modificación a la ley, se planteará y se modificará. Pero Colombia es un país que necesita la fumigación terrestre, vía manual, la de drones o la aérea, con todo el respeto a la protección del medioambiente, a la población civil y brindando alternativas en la sustitución de cultivos.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/AH2mmF1RaPI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Fumigación y bombardeos: el ANÁLISIS del ministro de Justicia, Iván Cancino"></iframe><p><b>V.D.: Ministro, ¿qué esperan de esta nueva política para enfrentar la criminalidad que se aprovecha de las universidades? </b></p><p><b>I.C.:</b> La autonomía universitaria está clara, regulada por la ley; obviamente, por los temas internos, hay decisiones de la Corte Constitucional, pero hay que tener muy claro que esa autonomía no significa repúblicas independientes. Las universidades pueden esperar respeto por la protesta pacífica, pero la ley habilita al Estado colombiano a ingresar de manera excepcional a las universidades en ciertas condiciones. Una de ellas es cuando se esté poniendo en peligro la vida o el bien público de alguna persona. </p><p>De tal manera que, si se están realizando incendios, se está agrediendo a la gente, se están lanzando las llamadas papas bomba, la política del Gobierno será entrar, pero a controlar, no a agredir. No son repúblicas independientes; ahí también manda el Estado. Pero le reitero: se respetarán todas las normas que ya están y se están haciendo protocolos para que esté muy claro qué se debe hacer o no, y esa es una iniciativa que está liderando también el ministro Rodrigo Lara.</p><p><b>V.D.: ¿Cómo le ha ido con la fiscal general, Luz Adriana Camargo? </b></p><p><b>I.C.:</b> Bien. </p><p><b>V.D.: Se han reunido varias veces...</b></p><p><b>I.C.: </b>Sí. De eso se trata, con el procurador también, con la defensora del pueblo. Se trata de una construcción armónica y me he reunido con ella y su equipo de trabajo. Hemos escuchado sus necesidades, hemos tenido una interlocución respetuosa, armónica, donde nos hemos escuchado. </p><p><b>V.D.: ¿Cómo encontró la contratación en el Ministerio?</b></p><p><b>I.C.: </b>Lo primero que encontré fue un hackeo a un sistema. Hay gente pequeña que duda; eso ya está judicializado. Una intervención del sistema que incluso me paralizó algunos temas, ya está restablecido, ya se tomaron todas las medidas para evitar que eso pase. En el Ministerio hemos encontrado, como regla general, una contratación muy grande. Se está reestructurando para reducirla, hemos depurado sin afectar la misionalidad del ministerio, hemos encontrado temas difíciles en las entidades adscritas, en el Inpec, en la Uspec, en la Superintendencia (de Notariado y Registro), en la Agencia de Defensa Jurídica del Estado. </p><p>Aquí no se llegó a judicializar a nadie porque sí, no se llegó a perseguir a nadie, pero obviamente lo que se va encontrando, no puedo taparme los ojos y sencillamente dejarlo. Yo no vine a administrar el desorden, vine a corregir y a organizar en la cartera lo que me corresponde. </p><p><b>V.D.: ¿Se restableció la cooperación en materia de justicia con Estados Unidos?</b></p><p><b>I.C.: </b>Por supuesto. Ahí he sido un gran interlocutor, hemos tenido muchas reuniones, son respetuosos de la autonomía, entienden que somos un estado autónomo. Hemos trabajado temas de capacitación, de apoyo económico que estaban paralizados. En otras dependencias que no son mías, pero que interrelaciono, va a haber noticias pronto. Solamente le doy un nombre para que lo tenga presente: Grupo Egmont (una red que reúne a un centenar de países para cruzar información financiera).</p><iframe width="560" height="315" src="https://www.youtube.com/embed/OJxHhoX-8AA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="&quot;Tratar CON PINZAS&quot;: Cancino ante colaboración de EE. UU. en materia de justicia"></iframe><p><b>V.D.: Eso es muy importante porque Colombia fue suspendida en 2024, durante el Gobierno Petro, porque el entonces presidente reveló información reservada. </b></p><p><b>I.C.: </b>Correcto. </p><p><b>V.D.: ¿Vamos a conocer quién es el llamado Colombian Official 3 en el escándalo de Odebrecht?</b></p><p><b>I.C.:</b> Eso está en el mapa, Vicky.</p><p><b>V.D.: ¿Estuvo de acuerdo con que le dieran permiso al expresidente Petro para salir del país, cuando quiera, durante el próximo año?</b></p><p><b>I.C.: </b>Es un tema que está reglado. No debemos personalizarlo; va a haber muchos que van a utilizar la misma figura.</p><p><b>V.D.: ¿Habrá una reforma a la justicia?</b></p><p><b>I.C.: </b>También va. Lo he hablado con las cortes, con la Fiscalía, con la Defensoría; no soy amigo de grandes reformas, las grandes reformas llevan a grandes fracasos.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/dq-Eci0SREc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="¿CÓMO SERÁ la reforma a la justicia del Gobierno de Abelardo De La Espriella?"></iframe><p><b>V.D.: La gente siempre está pensando en más cárcel, cadena perpetua…</b></p><p><b>I.C.: </b>Mire, vamos a hablar de esos temas, pero con reformas muy puntuales. Por ejemplo, la reforma al tema de la imputación; vamos a debatir las audiencias preparatorias, investigación y juzgamiento en las investigaciones disciplinarias de abogados; ese será otro tema muy preciso. Si hacemos una gran mezcla y una gran reforma, eso, por regla general, no termina en nada. Vamos a reactivar el tema de la carrera notarial; creo que lo más lógico es empezar de cero.</p><p>Lo que pueden esperar de nosotros es que hagamos políticas criminales que sean efectivas. Colombia está llena de normas que no se aplican; el país no necesita más normas, necesita que las apliquemos, de tal manera que hay que hacer reformas que sean efectivas y las reformas que sean efectivas implican también dar un buen debate sobre la justicia negociada.</p><p><b>V.D.: ¿Qué cree que le estaría diciendo hoy su papá, el doctor Antonio José Cancino, al verlo en estos momentos como ministro de Justicia?</b></p><p><b>I.C.: </b>Estaría muy orgulloso, claro (se le quiebra la voz). Eso me conmueve mucho. Estoy seguro de que estaría muy orgulloso de mí; me criticaría, lo haría en privado, me daría sus propuestas, pero me respaldaría siempre. A las personas que tratan de opinar de lo que haría mi papá, antes de morir me dijo que mi hermano y yo éramos sus abogados preferidos. Con eso me quedo.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/QHSxPbYi_Y0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Iván Cancino, ministro de Justicia: “MI PAPÁ estaría orgulloso”"></iframe><p><b>V.D.: Me imagino que se encomienda a él todos los días…</b></p><p><b>I.C.:</b> Todos los días.</p><p><b>V.D.: Si lo está oyendo en el cielo, dígale algo...</b></p><p><b>I.C.: </b>Él sabe que lo amo y que todos los días cualquier acto que hago es para hacerlo sentir orgulloso. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EXTR3NA4PFFMJGDYBTHIRPNAEY.jpg?auth=4015688913797c247122e12e617a17f974f2fba60d6004c17208c66b56c5da37&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[El ministro de Justicia, Iván Cancino, habló en SEMANA sobre las medidas del gobierno De La Espriella contra los grupos criminales.]]></media:description></media:content></item><item><title><![CDATA[Explosivos chats entre Eva Ferrer y Gustavo Petro salpican a Agmeth Escaf y Mario Fernández Alcocer por presunta corrupción y revelan secretos de Verónica Alcocer]]></title><link>https://www.semana.com/nacion/articulo/explosivos-chats-entre-eva-ferrer-y-gustavo-petro-salpican-a-agmeth-escaf-y-mario-fernandez-alcocer-por-presunta-corrupcion-y-revelan-secretos-de-veronica-alcocer/202651/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/explosivos-chats-entre-eva-ferrer-y-gustavo-petro-salpican-a-agmeth-escaf-y-mario-fernandez-alcocer-por-presunta-corrupcion-y-revelan-secretos-de-veronica-alcocer/202651/</guid><dc:creator><![CDATA[Natalia Cortés]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 08:05:32 +0000</pubDate><content:encoded><![CDATA[<p>SEMANA conoció una copia de un informe pericial de informática forense que contiene el histórico de las conversaciones que sostuvieron durante casi cuatro años el expresidenteLa dura carta de Eva Ferrer a <a href="https://www.semana.com/politica/articulo/la-dura-carta-de-eva-ferrer-a-gustavo-petro-en-la-que-habla-de-supuestas-amenazas-del-catalan-manel-grau-vino-a-casa-a-pedir-que-renunciara/202624/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/la-dura-carta-de-eva-ferrer-a-gustavo-petro-en-la-que-habla-de-supuestas-amenazas-del-catalan-manel-grau-vino-a-casa-a-pedir-que-renunciara/202624/">Gustavo Petro en la que habla de supuestas amenazas del catalán Manel Grau: “Vino a casa a pedir que renunciara</a>”</p><p>Los mensajes entre Ferrer y Petro, intercambiados por la aplicación LINE entre octubre de 2022 y agosto de 2026, dejan en evidencia las tensiones que sacudieron al círculo más cercano de la entonces pareja presidencial. La catalana le expuso al expresidente serias advertencias sobre una presunta red de corrupción alrededor de reuniones y contratos, en la que estarían involucrados Mario Fernández Alcocer, primo de Verónica Alcocer, y Agmeth Escaf, senador del Pacto Histórico.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SD22XFVKFRFEHMCWWRWVN2USHE.jpg?auth=02bb4a31e03e78b40d6521e123dfc0459a53608b3731e2bc6a94a7c14026f7b6&smart=true&width=1280&height=720" alt="En los chats, la ex consejera presidencial Eva Ferrer acusa al diputado sucreño Mario Fernández Alcocer y al senador Agmeth Escaf de presunta corrupción a nombre de la ex primera dama." height="720" width="1280"/><p>Las conversaciones también reconstruyen, desde adentro, el deterioro de la relación entre Ferrer y Alcocer. Ante las duras quejas de la catalana sobre el comportamiento de quien había sido su amiga íntima, Petro atribuyó el cambio al poder que alcanzó en la Presidencia.</p><p><b>Ferrer alertó por primera vez a Petro sobre Fernández,</b> diputado de Sucre, y Escaf, entonces representante a la Cámara, el 31 de mayo de 2023, ante una posible publicación en medios sobre presuntos hechos de corrupción que los involucraban.</p><p>“Gustavo, ¿cómo estás? Siento comentarte esto en este momento, pero me dicen de muy buena fuente que medios están armando periodísticamente toda una trama de corrupción y de puesta de cargos por parte de los primos de Verónica y Agmeth”, dijo Ferrer en el chat, mencionando dos medios que estarían con esa investigación.</p><p>En el mismo mensaje, dijo que intentó comunicarse con “Lau”, haciendo posible referencia a Laura Sarabia, entonces jefe de despacho del expresidente, pero no le contestó.<b> Además, ofreció su ayuda para pasar “este tsunami”</b>, con referencia a las posibles noticias contra los primos de Alcocer y el congresista.</p><p>Luego, el 14 de junio de 2023, la colomboespañola le pidió a Petro hablar sobre su “situación” con Carlos Ramón González, entonces director del Departamento Administrativo de la Presidencia de la República. “¿Qué es lo que está pasando?”, le pregunta el exmandatario por chat.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DCVQK2QQHBCPVBILZ5RX45QL2U.jpg?auth=e7534519d1d8bc2ba3a7514a5edf926226de52ce50e80a7dd9596b2a5df8aec2&smart=true&width=1280&height=585" alt="FOTO: suministradas a semana - api" height="585" width="1280"/><p>“Es largo. En resumidas cuentas, es que con Vero no hay comunicación fluida desde hace meses”, escribió Ferrer, quien aún era consejera presidencial en ese momento. Y menciona directamente al diputado de Sucre: “Mario está ahí jodiendo y yo intentando protegernos”. Igualmente, dice que la ex primera dama “no entiende la institucionalidad y se cree que yo no hago lo que quiere cuando quiere”.</p><p>También aseguró que le estaban haciendo acoso laboral, con el fin de sacarla del círculo cercano de Alcocer.</p><p>“Mucho chisme, pero imposible hablar a solas desde noviembre. Yo desde noviembre siento que me están haciendo un mobbing por parte de Mario para sacarme de su entorno porque yo no apruebo”, agregó.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AIUMYQ3ZDNAP3EUBC6TXSS3GOM.jpg?auth=b3b3120731042d73570d131625473960c04ef8059ee15806736b4d84a17dc02b&smart=true&width=1280&height=502" alt="Eva Ferrer expuso ante Gustavo Petro sus diferencias con Verónica Alcocer y las dificultades que, según ella, enfrentó dentro del entorno presidencial." height="502" width="1280"/><p>Aseguró que, antes de viajar a España, quiso reunirse con la ex primera dama: “Le dije que era importante que supiera lo que estaba haciendo”.<b> Sin embargo, quedaron para almorzar y, según cuenta Ferrer, Alcocer la agendó para el siguiente día, pero ese encuentro nunca ocurrió: “Me dijo que al día siguiente y nunca más”.</b></p><p>Y lanza una fuerte acusación contra la exesposa de Gustavo Petro, atribuyendo su distancia a que la catalana no habría dejado actuar a Fernández Alcocer y a Escaf.</p><p>“Muy ofensivo desde hace rato. Os he ido pidiendo ayuda, pero nadie ha calibrado. Ella está cabreada porque no doy juego a Agmeth y Mario. <b>Intento cumplir, me ponen trampas, dicen mentiras… y la que firma en la Consejería soy yo y eso Vero no lo entiende”.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/E6DRIX5ECRDTJMIPQUJ33UZVAA.jpg?auth=af7ec93602a2a6fbbc37375feeb4e79d1b7881f4bcca867bf54f6007bed668f9&smart=true&width=1280&height=605" alt="Los mensajes entre Petro y Ferrer registran las tensiones que se presentaron entre la exconsejera y personas cercanas a la entonces primera dama." height="605" width="1280"/><p>El presidente responde, dándole razón a los señalamientos de Ferrer: “Con cuidado. Creo que es gente corrupta”. A lo que la catalana contesta: “Yo sé que es corrupta”.</p><p>“Por eso he estado con tanto cuidado. Mario me quería meter en reuniones, contratos, etc. Por ejemplo, la compañía de gas de Barranquilla”, informó Ferrer al entonces presidente por el chat.</p><p>En medio de las acusaciones, Ferrer pidió a Petro un “despacho digno”, pues dijo estar “castigada” en un espacio cerrado del Dapre<b>. También se definió como “profesional, progresista y honesta”, y aseguró que no quería “líos”.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/NIP6KU57RVDWHAA6FJUQOGOA2A.jpg?auth=a371e05ecfc24940f6250dbe8333778203f6ffb6c08fe7d1cddbe4368373cb0f&smart=true&width=1280&height=1133" alt="En las conversaciones, Ferrer planteó a Petro señalamientos sobre presuntas irregularidades relacionadas con reuniones y contratos." height="1133" width="1280"/><h2>“El poder envenena”</h2><p><b>“¡Esos dos son corruptos por todos lados! Y se están aprovechando de ella”, </b>agregó Ferrer, que en el mensaje siguiente dijo que aún sentía cariño por Alcocer, pero calificó su actitud como la de una “tirana”.</p><p>“Yo a Vero la quiero, pero ya no me gusta. Se ha vuelto una tirana; nadie puede hablar con ella, solo grita y nadie la contradice. La he estado protegiendo todo lo que he podido, a ella y a mí, y al Gobierno. Pero esta vez se ha pasado mucho”, expresó la entonces consejera en su chat.</p><p>Petro, por su parte, resumió el cambio que veía en su entonces esposa con una frase: “Ajá. El poder envenena”. Ferrer coincidió y añadió: <a href="https://www.semana.com/politica/articulo/la-dura-carta-de-eva-ferrer-a-gustavo-petro-en-la-que-habla-de-supuestas-amenazas-del-catalan-manel-grau-vino-a-casa-a-pedir-que-renunciara/202624/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/la-dura-carta-de-eva-ferrer-a-gustavo-petro-en-la-que-habla-de-supuestas-amenazas-del-catalan-manel-grau-vino-a-casa-a-pedir-que-renunciara/202624/">“Mi definición de buena o mala persona está en gestionar bien o mal el poder que uno tiene”.</a> También aseguró que Alcocer ordenó apartarla de parte de su círculo más cercano.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/OAKPW2LMSFG75ARUSNBOM7U3FM.jpg?auth=d701b49d282d19551ccbcc163b796e98c7ef6cf95e0d4a0f78a6ff8e04eafc18&smart=true&width=1280&height=285" alt="FOTO: suministradas a semana - api" height="285" width="1280"/><p>“Imagínate que Vero le ha dicho a Mauricio que se aleje de mí. Que ella o yo. Es el mejor amigo que tengo, compañero y apoyo, y le pone en esa tesitura. Dejándome aislada. Eso es coacción, que al final somos trabajadores”, escribió. </p><p>Luego, al día siguiente, Ferrer le dijo a Petro que dimitió ante la ex primera dama de su cargo como consejera. Posteriormente, pidió varias veces una cita con el expresidente Petro que nunca se dio.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HSODH2QCN5HHHJ3CMUEWOW5OE4.jpg?auth=44386892108fc33357dfa4c8bcecfd9bd82e97919cfab5dda3a8856c4e5921df&smart=true&width=1280&height=720" alt="Gustavo Petro y Eva Ferrer mantuvieron conversaciones sobre la situación de la Consejería para la Reconciliación durante el Gobierno del expresidente." height="720" width="1280"/><p><b>Después se dio la salida efectiva de Ferrer de la Consejería y, en un escrito al presidente, aseguró que Manel Grau, </b>con intimidaciones y amenazas de irse en contra de su reputación, fue quien le pidió finalmente su cargo. Petro prometió darle una nueva posición en el Gobierno nacional, pero no se concretó.</p><p>La conversación transcurre entre saludos breves y respuestas escuetas de Petro. Ferrer volvió a mencionar a Escaf y a Fernández Alcocer el 28 de mayo de 2024, cuando sintió que la responsabilizaron por una entrada de Euclides Torres, polémico empresario barranquillero y financiador del petrismo, a la Casa de Nariño.</p><p>“Yo no he merecido el trato recibido desde el día dos: <b>se me dejó de hablar, se me gritaba; ningún interés por los temas de la Consejería. </b>Tener al primo y a Agmeth molestando, implicándome en la filtración del video, remató el maltrato”, manifestó Ferrer en el chat con Petro.</p><p>Y aseguró que parte de ese hostigamiento se evidenció en el no pago de los honorarios que le deben desde la campaña y por su trabajo en la posesión.</p><p><b>“No me voy a dejar inculpar por terceros que sí tuvieron intereses personales. </b>Sigo leal a ti y a tu proyecto, pero no paran de molestar”, concluyó la catalana ese día.</p><p><a href="https://www.semana.com/politica/articulo/agmeth-escaf-mario-fernandez-y-manel-grau-los-tres-tenores-que-estarian-detras-de-las-actuaciones-de-veronica-alcocer-segun-eva-ferrer/202622/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/agmeth-escaf-mario-fernandez-y-manel-grau-los-tres-tenores-que-estarian-detras-de-las-actuaciones-de-veronica-alcocer-segun-eva-ferrer/202622/">Ferrer pidió ayuda al presidente para impulsar proyectos personales como el libro Colombia,</a> más allá de la memoria, que reunía imágenes capturadas por el fotógrafo Mauricio Vélez, cercano a la ex primera dama y quien en varias ocasiones hizo parte de la comitiva en viajes al exterior.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7INYYKMEEBGRJASJV4DN4MW26Q.jpg?auth=8949d21d3b96bcc9ffd0a55a981b4a502e273aafade6d9520a5c09995468442f&smart=true&width=1280&height=658" alt="Ferrer aseguró que Verónica Alcocer había dejado de comunicarse con ella y atribuyó el distanciamiento a sus diferencias sobre personas de su entorno." height="658" width="1280"/><p>En febrero de ese año, Ferrer le contó al presidente que, pese a gestiones ante entidades nacionales e internacionales, no consiguió recursos para imprimirlo.</p><p>“Si cae este proyecto, mi gestión en este gobierno será de cero por ciento de ejecución. Creo que ni humanamente, ni profesionalmente, merezco esto”, escribió en el chat. En ese mensaje, afirmó que el entonces mandatario promovió que su libro fuera patrocinado por entidades como Ecopetrol y el Banco Agrario. También sugirió que ambas podrían haber estado bajo la influencia de la ex primera dama y que, por esa razón, rechazaron el proyecto.</p><p><b>“Y pensaría: ‘Qué casualidad que las dos empresas que me dijiste que fuera a ver fueran Banco Agrario y Ecopetrol’</b>, y después de marearme, las dos hayan puesto cero. Llámame mal pensada, me suena a Mario Fernández y familia Alcocer”, dijo Ferrer.</p><h2>Las cuentas y el quiebre</h2><p>Ferrer también buscó la intervención de Petro para cobrar cerca de 640 millones de pesos que, según ella, le quedaron debiendo Verónica Alcocer y el empresario catalán Manel Grau desde la campaña de 2022. El reclamo incluye cuatro meses de honorarios y recursos aportados para gastos de la posesión presidencial.</p><p>“Me deben cuatro mensualidades de mi trabajo de campaña: junio, julio, agosto y septiembre de 2022, y otros dineros”, le recordó en octubre de 2025. Según Ferrer, Alcocer dijo que después arreglarían cuentas, mientras Grau le exigió demostrar la deuda.</p><p>La exconsejera acudió a una conciliación y aseguró que desde “la casa” hablaban de hacer caer su proyecto.<a href="https://www.semana.com/politica/articulo/xavier-vendrell-aseguro-que-gustavo-petro-ha-estado-muy-solo-cree-que-en-un-futuro-el-presidente-le-apostara-a-roy-barreras/202634/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/xavier-vendrell-aseguro-que-gustavo-petro-ha-estado-muy-solo-cree-que-en-un-futuro-el-presidente-le-apostara-a-roy-barreras/202634/"> Xavier Vendrell, exdirigente político catalán cercano al petrismo</a>, apareció como mediador de Grau. Sin embargo, Ferrer aseguró posteriormente:<b> “XV no ha aparecido, pero más allá de eso prefiero no seguir dependiendo de intermediarios ni de terceros”.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7INYYKMEEBGRJASJV4DN4MW26Q.jpg?auth=8949d21d3b96bcc9ffd0a55a981b4a502e273aafade6d9520a5c09995468442f&smart=true&width=1280&height=658" alt="Ferrer aseguró que Verónica Alcocer había dejado de comunicarse con ella y atribuyó el distanciamiento a sus diferencias sobre personas de su entorno." height="658" width="1280"/><p>En abril de 2026 también le pidió ayuda a Petro para designar a una persona de su confianza en la Notaría 38 de Bogotá.<b> Luego afirmó que “el primo de VA” le había ofrecido una notaría a una conocida “si le daba algo para joderme”.</b></p><p>La pelea con Alcocer se profundizó. El 18 de junio, Ferrer le compartió a Petro una publicación sobre la ex primera dama, diciendo: “Ella hace lo que le da la gana, luego te cuenta lo que le da la gana y a los demás nos toca recoger los platos rotos”.</p><p>Aseguró que varias personas guardaron silencio por consideración a Petro: “Aguantamos y callamos por ti, por el proyecto que representas. Y en mi caso, por las niñas”. Y agregó: “Hay mucho damnificado del hacer de ella, sobre todo mujeres”.</p><p>La relación entre Ferrer y Petro terminó de romperse el 1.° de agosto de 2026, tras los audios publicados por<i> SEMANA.</i> “Decidiste ver cómo golpeabas a la mamá de mis hijos”, le escribió el expresidente. Un minuto después agregó:<b> “Nunca he podido entender por qué una persona puede odiar y destruir”.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LHJUO5DJVZAVPLMDY65K7CKX4A.jpg?auth=70ed39a8a7b64d86c62c8c393d75cf238e340e5b2666e2b417470dff43ea16d9&smart=true&width=1280&height=720" alt="Eva Ferrer acudió a Gustavo Petro para plantearle reclamos relacionados con honorarios y gastos pendientes desde la campaña presidencial de 2022." height="720" width="1280"/><p>Ferrer negó haber filtrado información y devolvió la acusación: <b>“La mamá de tus hijos lleva cuatro años golpeándome a mí. Pregúntaselo a ella. Así vive”.</b></p><p>Las actuaciones de<a href="https://www.semana.com/politica/articulo/agmeth-escaf-mario-fernandez-y-manel-grau-los-tres-tenores-que-estarian-detras-de-las-actuaciones-de-veronica-alcocer-segun-eva-ferrer/202622/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/agmeth-escaf-mario-fernandez-y-manel-grau-los-tres-tenores-que-estarian-detras-de-las-actuaciones-de-veronica-alcocer-segun-eva-ferrer/202622/"> Agmeth Escaf y</a> Mario Fernández Alcocer deberán ser investigadas por las autoridades. También se aleja un acuerdo entre Ferrer, Verónica Alcocer y Manel Grau: la conciliación del 14 de septiembre en la Cámara de Comercio de Bogotá terminó sin acuerdo y sin la presencia de Alcocer ni Grau. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WAUWH7746NCFHJBXXKE3OJCZXA.jpg?auth=b7bbeb2caf8b308bc1d0789169ac1905684365eb050001f9cd31c655353abac3&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Gustavo Petro y Eva Ferrer intercambiaron mensajes durante casi cuatro años, según un informe pericial de informática forense conocido por SEMANA.]]></media:description></media:content></item><item><title><![CDATA[Los 100 males de TransMilenio que podrían migrar al metro ]]></title><link>https://www.semana.com/nacion/articulo/los-100-males-de-transmilenio-que-podrian-migrar-al-metro/202604/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/los-100-males-de-transmilenio-que-podrian-migrar-al-metro/202604/</guid><dc:creator><![CDATA[Johnathan Alexander Toro Romero]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:59:04 +0000</pubDate><content:encoded><![CDATA[<p>La investigación, adelantada por el Observatorio en Movilidad y Logística y el Semillero de Investigación en Movilidad y Logística de la Universidad Nacional, encontró que los encuestados manifestaron haber presenciado, <a href="https://www.semana.com/vehiculos/articulo/concejal-pide-que-blinden-a-transmilenio-y-sitp-como-servicios-esenciales-frente-a-bloqueos-y-manifestaciones/202621/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/concejal-pide-que-blinden-a-transmilenio-y-sitp-como-servicios-esenciales-frente-a-bloqueos-y-manifestaciones/202621/">en promedio, 7,4 comportamientos inadecuados durante su último viaje en el transporte público</a>.</p><p>La evasión del pago, los empujones, el uso indebido de sillas prioritarias, las ventas ambulantes, el bloqueo de puertas y las agresiones forman parte del inventario. <a href="https://www.semana.com/politica/articulo/mas-de-la-mitad-de-las-mujeres-en-bogota-ha-sufrido-acoso-sexual-callejero-73-no-sabe-como-denunciarlo/202656/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/mas-de-la-mitad-de-las-mujeres-en-bogota-ha-sufrido-acoso-sexual-callejero-73-no-sabe-como-denunciarlo/202656/">También aparecen situaciones de mayor gravedad, como el acoso sexual y otras violencias basadas en género.</a></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XH5OIOBMZJDMZC76M65W4A5WGE.jpg?auth=747cc2baa23720b195a5bd25096619550c775dcaac8865f8d0ef0cc2ef2f3d63&smart=true&width=1280&height=720" alt="La percepción de seguridad en las estaciones obtuvo un promedio de apenas 3,4 sobre 10, según la investigación adelantada por la Universidad Nacional." height="720" width="1280"/><p>Los investigadores clasificaron las conductas en cuatro grupos: evasión y fraude, vandalismo y seguridad, convivencia y cultura ciudadana, y uso de la infraestructura. Para construir el inventario,<b> revisaron experiencias de sistemas como los de París y Japón, además de referentes colombianos como TransMilenio y el metro de Medellín.</b></p><p>Otro dato que llama la atención es la percepción de seguridad: el promedio obtenido en las estaciones fue de apenas 3,4 sobre 10. Además, las preocupaciones varían entre hombres y mujeres<b>. Mientras que ellos asociaron la inseguridad principalmente con hurtos y riñas, ellas señalaron factores como el acoso sexual, los empujones y los roces.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ICBXWLCOHVDE5FPMDETC3XXJEE.jpg?auth=c95a16fadb0e7ab4d3e68bd4578289414fee49da4b1617144bf833fbb0d2f07d&smart=true&width=1280&height=720" alt="El acoso sexual, los empujones y los hurtos hacen parte de las situaciones que afectan la percepción de seguridad de los usuarios del transporte público en la capital." height="720" width="1280"/><p>La Nacional plantea que el objetivo no es trasladar automáticamente las estrategias de otros sistemas, sino identificar las particularidades de Bogotá y actuar antes de que el metro entre en operación. </p><h2><b>Convivencia</b></h2><ul><li>Agresiones</li><li>Ruido</li><li>Consumo de tabaco</li><li>Ventas ambulantes</li><li>Acoso sexual y violencias basadas en género</li></ul><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/C3BBGDISSNFOJPGW4FC6DEYVUE.jpg?auth=20564ee87f21f78b7837c79f37962e16b9c3bce58d692f196bbef9b8c7b6b9f7&smart=true&width=1280&height=720" alt="Fotos: Guillermo Torres" height="720" width="1280"/><h2><b>Vandalismo y seguridad</b></h2><ul><li>Grafitis</li><li>Daños a buses y estaciones</li><li>Bloqueo de puertas</li><li>Uso indebido de salidas de emergencia</li><li>Prácticas de alto riesgo</li></ul><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/VG2MFZPBWBDYTISJ742POOHAYI.jpg?auth=d0dc8a771b4707aaf6f7db3206e5a0136693cf3ddfe26208f621e56b27079455&smart=true&width=1280&height=720" alt="FOTO: COLPRENSA" height="720" width="1280"/><h2><b>Evasión y fraude </b></h2><ul><li>Colarse</li><li>Venta o compra de pasajes en sitios no autorizados</li><li>Uso indebido de tarjetas preferenciales</li></ul><h2><b>Uso de la infraestructura </b></h2><p>• Uso indebido de sillas prioritarias</p><p>• Obsta</p><p>c0ulización de puertas</p><p>• Animales sin las condiciones requeridas</p><p>• Comportamientos que afectan</p><p> el flujo de pasajeros</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KK4IWZSXW5CHBITXT2JZB6BLM4.jpg?auth=65c5048e495f1451b44be0d9ecf638095e5b8845b66609f70e9d351d08775752&smart=true&width=1280&height=720" alt="GUILLERMO TORRES REINA" height="720" width="1280"/><h2><b>Diferente percepción de riesgo </b></h2><p><b>Seguridad y convivencia: </b>el estudio también incorpora la percepción de los usuarios frente a diferentes situaciones que afectan su experiencia en el transporte.</p><h2><b>Hombres</b></h2><p>Relacionaron la inseguridad principalmente con:</p><p>• Hurtos</p><p>• Riñas</p><p>• Peleas</p><p>• Conflictos</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AIWRMA6G6ZA5HLKXK5GWT3ZVCQ.jpg?auth=44f1888bc2165ab864df1382a737b991f3f46ecc7574ad9911917ceeda222442&smart=true&width=1280&height=720" alt="Guillermo Torres /Semana" height="720" width="1280"/><h2><b>Mujeres</b></h2><p><a href="https://www.semana.com/nacion/bogota/articulo/transmilenio-instala-nuevos-botones-de-alerta-en-tres-estaciones-de-bogota/202627/" target="_blank" rel="" title="https://www.semana.com/nacion/bogota/articulo/transmilenio-instala-nuevos-botones-de-alerta-en-tres-estaciones-de-bogota/202627/">Señalaron especialmente situaciones como:</a></p><p><a href="" target="_blank" rel="" title="">• Acoso sexual</a></p><p>• Empujones</p><p>• Roces</p><p>• Violencias basadas en género</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Z2SX37RWMJCD7LWLP5RB5JWDRE.jpg?auth=763f839ec740a384803deda84c78521fe93f553105271df2490685be794b623f&smart=true&width=1280&height=720" alt="GUILLERMO TORRES REINA" height="720" width="1280"/>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6KZWBJSCCJFL3JEJU6SMZQB2AU.jpg?auth=2ae2b529b8221f0878805a29cb39a4bd930a1df20736e75cee3e43bdd7c2684a&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[La investigación de la Universidad Nacional identificó un promedio de 7,4 comportamientos inadecuados durante el último viaje de los usuarios en el transporte público de Bogotá.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Exclusivo: identifican células de guerrillas en diez universidades y alertan de un plan para desestabilizar al país]]></title><link>https://www.semana.com/nacion/articulo/exclusivo-identifican-celulas-de-guerrillas-en-diez-universidades-y-alertan-de-un-plan-para-desestabilizar-al-pais/202604/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/exclusivo-identifican-celulas-de-guerrillas-en-diez-universidades-y-alertan-de-un-plan-para-desestabilizar-al-pais/202604/</guid><dc:creator><![CDATA[Juan Diego Mercado Hidalgo]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:49:04 +0000</pubDate><content:encoded><![CDATA[<p>Las autoridades identificaron la presencia de<a href="https://www.semana.com/semana-tv/articulo/entrada-de-la-fuerza-publica-a-universidades-enciende-discusion-en-colombia/202611/" target="_blank" rel="" title="https://www.semana.com/semana-tv/articulo/entrada-de-la-fuerza-publica-a-universidades-enciende-discusion-en-colombia/202611/"> células clandestinas de tres grupos armados ilegales en diez universidades públicas de Colombia</a>. <i>SEMANA</i> revela el contenido de un informe de inteligencia que alerta sobre los movimientos de los criminales en las aulas de clase y los planes que tendrían para desestabilizar algunas ciudades a través de las protestas sociales.</p><p><b>Se trata del Ejército de Liberación Nacional (ELN) y de las disidencias de las Farc comandadas por alias Iván Mordisco y Calarcá</b>. Las tres organizaciones lograron infiltrarse en las instituciones de educación superior a través de colectivos estudiantiles con afinidad ideológica a las guerrillas para promover sus objetivos terroristas, de acuerdo con el documento confidencial.</p><p>Los movimientos se han detectado en Bogotá (universidades Nacional, Distrital y Pedagógica), Medellín (Universidad de Antioquia, Universidad Nacional, Politécnico Colombiano Jaime Isaza Cadavid), Bucaramanga (Universidad Industrial de Santander), Cali (Universidad del Valle), Popayán (Universidad de Popayán) y Neiva (Universidad Surcolombiana).</p><p>No solo eso. En medio de la investigación, las autoridades descubrieron que los grupos delincuenciales han valorado el interés de aterrizar en centros académicos ubicados en las <b>ciudades de Tunja, Armenia, Manizales, Ibagué, Fusagasugá y Villavicencio</b>, buscando consolidar plataformas en entornos vulnerables y así sembrar terror en las calles. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/OYAIMGW77VAW3L2DWZU66RNA64.jpg?auth=de3173385c10f2c5bf48e1b3e8e1f233f20974c0b66f509eb8bd31f0b5d257e3&smart=true&width=1280&height=720" alt="La Policía Nacional y la infraestructura estatal serían los blancos de los grupos clandestinos de las universidades." height="720" width="1280"/><p>Según el informe de inteligencia, son múltiples los caminos que han usado los <a href="https://www.semana.com/politica/articulo/en-pleno-discurso-abelardo-de-la-espriella-pidio-abrir-una-investigacion-al-rector-de-la-universidad-de-la-guajira-nadie-tiene-corona/202659/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/en-pleno-discurso-abelardo-de-la-espriella-pidio-abrir-una-investigacion-al-rector-de-la-universidad-de-la-guajira-nadie-tiene-corona/202659/">ilegales para penetrar las universidades</a>. El más común es el contacto con grupos estudiantiles cercanos a sus líneas ideológicas y usarlos, aparentemente, como instrumentos de radicalización para lograr hechos de terrorismo. </p><p>“<b>Una de las estrategias que han desplegado los grupos armados ilegales se ha concentrado en instrumentalizar a jóvenes con pensamientos revolucionarios</b>. También buscan conexiones con grupos dinamizadores de eventos violentos, con quienes establecen canales de coordinación, financiamiento e instrucción en tácticas para afectar a la Policía”, se describió en el archivo.</p><p>De igual manera, los grupos armados ilegales canalizan a sus militantes en organizaciones sociales que gozan de prestigio en los centros universitarios y acuden a estrategias mediáticas, principalmente en las redes sociales, orientadas a capitalizar manifestaciones juveniles para luego sumarlos al desarrollo de eventos con carácter ideológico.</p><p><b>Uno de los uniformados que participó en la investigación describió a </b><i><b>SEMANA</b></i><b> que el ELN y las disidencias de las Farc</b>, tanto de Mordisco como de Calarcá, ya contemplan oficialmente en sus estructuras internas diversos esquemas de presencia en las universidades, identificándolas como “colectivos clandestinos e ideológicos, redes de apoyo y simpatizantes”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3SMOV64DXJE27KTSZLM6V56J2A.jpg?auth=01716c84c9ec0296eab115ed790d4e7ff8fba3fdeb3fd6c85f875a94cfa429aa&smart=true&width=1280&height=720" alt="Las autoridades han identificado presencia de bases clandestinas del ELN y de las disidencias de las Farc en diez universidades del país." height="720" width="1280"/><h2>La financiación</h2><p>En el informe de inteligencia se reveló que los grupos clandestinos que operan en las instituciones de educación superior públicas, ligados a los grupos armados ilegales, tienen tres fuentes de financiación: el flujo directo de las organizaciones terroristas, el autosostenimiento y las actividades comunitarias.</p><p>En el primer caso, <b>se identificó que los bloques del ELN y de las disidencias de las Farc </b>envían dinero en efectivo para patrocinar en las universidades la fabricación de artefactos explosivos improvisados, la compra de elementos simbólicos y las operaciones logísticas. </p><p>En el segundo, algunos estudiantes acuden a la venta de estupefacientes, al hurto y a la extorsión dentro de las instituciones como método de financiación. Este es el más común en todos los grupos extremistas. </p><p><b>No solo se trataría de la comercialización de drogas ilícitas, también de un control del mercado:</b> “En algunos casos, se ha identificado que los grupos que generan hechos de violencia al interior de las universidades vendrían implementando modelos de autosostenimiento como el control del microtráfico”, se reseñó.</p><p>Y el último, que sigue siendo materia de investigación, consiste en el probable uso de recursos públicos, a través de actividades comunitarias, para patrocinar a este tipo de organizaciones; en el documento se relató, por ejemplo, el caso de las huertas locales que, en algunas ciudades, son apalancadas por las alcaldías.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6WYA4EQ5BBDB7O32VN4JFRDTEY.jpg?auth=948864d478546376510c08a3054c428910235f6d9a746f67065b53bcbe5e427d&smart=true&width=1280&height=720" alt="Las autoridades están en máxima alerta." height="720" width="1280"/><h2>Las amenazas</h2><p>La preocupación de las autoridades por la presencia de las células urbanas de las guerrillas en las universidades de Colombia no es menor. El hallazgo es alarmante: “La principal amenaza se concentra en los intereses de los grupos armados ilegales de generar procesos de clandestinización que les permitan dinamizar acciones vandálicas y escenarios de desestabilización urbana”. </p><p>Precisamente, uno de los riesgos identificados en las últimas semanas ha sido la capacidad que tienen estos grupos para preparar, adquirir y adecuar artefactos explosivos “para utilizarlos en eventos de vandalismo y terrorismo en contra de uniformados de la Policía Nacional y la infraestructura estratégica” del Estado.</p><p><b>Para lograr eso, los grupos terroristas invierten en la formación de los jóvenes, y muchos terminan reclutados en la selva.</b> Así se describió en el documento confidencial al que tuvo acceso SEMANA: “Los movilizan hacia áreas campamentarias para que reciban formación en el uso de armas de fuego, preparación, adecuación de artefactos explosivos y conocimiento de la ideología de cada uno de los grupos armados ilegales. Algunos de estos adolescentes se quedan en las filas de las estructuras armadas que se encuentran en áreas rurales y otros retornan a los centros urbanos a ‘replicar lo aprendido’”.</p><p>En el escenario actual de Colombia, <b>la inquietud de las autoridades es la posible incitación a protestas sociales –que generen un efecto como el ocurrido con el estallido de 2021– desde las universidades</b>: “Sospechamos que puede ser el mismo esquema que se usó ese año, de usar el inconformismo de la gente para justificar el terrorismo. Ellos podrían echar mano de la campaña mundial antiimperialista, del rechazo a la intervención de Estados Unidos en diferentes países o, incluso, la supuesta violación de la autonomía universitaria. Son detonantes que generarían graves protestas”, detalló uno de los uniformados que puso la lupa sobre la injerencia de ilegales en las instituciones.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EMUAS3X6VZHP5NUVRBOJMWKFLE.jpg?auth=641ee01550a3be2601a3374a40c415e1882ac2123d6cf07c77b1c121f0862494&smart=true&width=1280&height=720" alt="El frente de guerra urbano del ELN estaría financiando grupos clandestinos en diferentes universidades de Bogotá y Medellín." height="720" width="1280"/><h2>El ADN de los grupos</h2><p><b>Las autoridades han tenido inconvenientes para adelantar las investigaciones sobre la presencia de los grupos armados ilegales</b> en las universidades por los obstáculos que la autonomía de las instituciones ha fijado en el camino, según autoridades consultadas por SEMANA. Además de eso, este tipo de organizaciones han sabido camuflarse para evitar la persecución de la justicia.</p><p>Lo que se ha establecido es que sus integrantes, por lo general, se caracterizan por ser afines a las líneas ideológicas de los grupos terroristas, sean nacionales o internacionales, o de extintos cabecillas que estuvieron vinculados a escenarios “revolucionarios”.</p><p><b>Uno de los puntos más llamativos del informe de inteligencia es el perfil de buena parte de los militantes de estos grupos en las universidades:</b> “En algunos casos, se identifica que algunos estudiantes dilatarían su tiempo de estudios o permanecen matriculados entre ocho y quince años en la institución. Cancelan materias sistemáticamente, reprueban o se trasladan de un programa a otro para evitar perder la condición de estudiantes”. </p><p><b>Sus líderes, por lo general, gozan de reconocimiento en grupos estudiantiles y pueden influir en las decisiones de la comunidad universitaria: </b>“Actúan como reclutadores encargados de identificar y atraer a los estudiantes más jóvenes y receptivos a sus intereses. Mantienen un perfil inofensivo ante el cuerpo docente y administrativo mientras ejecutan actividades clandestinas fuera de las aulas”.</p><p>El protagonismo también lo tendrían algunos profesores de las universidades, con base en los hallazgos de los cuerpos de inteligencia de Colombia: “Se ha conocido que estos mismos grupos terroristas, como el ELN y las disidencias de las Farc, han intentado ‘manipular docentes’ para que desplieguen los planes criminales que tienen en los centros urbanos”.</p><p><b>Al parecer, estos grupos aumentaron su incidencia durante la implementación de la política de la paz total del Gobierno Petro.</b> Diferentes investigadores confirmaron a SEMANA que los espacios de conversaciones públicas que tuvieron las guerrillas habrían sido utilizados en las ciudades capitales para multiplicar la ideología y su lucha armada: “Esa exposición pública de los grupos armados ilegales, como reuniones, convocatorias públicas y trabajo de masas, sirvió para promocionarse. El incremento que se tiene hoy de la presencia en universidades es producto de la paz total”, describió uno de los oficiales.</p><h2>El plan del presidente </h2><p>El presidente <a href="https://www.semana.com/politica/articulo/en-pleno-discurso-abelardo-de-la-espriella-pidio-abrir-una-investigacion-al-rector-de-la-universidad-de-la-guajira-nadie-tiene-corona/202659/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/en-pleno-discurso-abelardo-de-la-espriella-pidio-abrir-una-investigacion-al-rector-de-la-universidad-de-la-guajira-nadie-tiene-corona/202659/">Abelardo De La Espriella</a> está dispuesto a enfrentar el terrorismo que se esconde en las aulas de clases de algunas universidades de Colombia: “La autonomía universitaria está por encima del orden público. Lo que está ocurriendo en algunas universidades del país es inaceptable”.</p><p><b>Advirtiendo el mismo escenario que revela en detalle </b><i><b>SEMANA,</b></i><b> el jefe de Estado aseguró que la protesta pacífica será respetada por su Gobierno</b>, pero agregó que el terrorismo urbano, el vandalismo, la destrucción de la infraestructura y los ataques contra la fuerza pública no serán tolerados. “Son conductas que el Estado tiene el deber de enfrentar de manera decidida”, dijo.</p><p>En ese orden de ideas, De La Espriella dio instrucciones para establecer un protocolo nacional de actuación, “que permita distinguir cuándo estamos frente al ejercicio legítimo de la protesta y cuándo existen hechos de violencia, flagrancia, peligro o alteraciones extraordinarias del orden público que exigen, sin lugar a dudas, la intervención de las autoridades”.</p><p><b>Su objetivo es que la Policía Nacional se encargue de actuar, incluso cuando los hechos ocurren desde las instituciones de educación superior:</b> “No voy a permitir que las universidades públicas sigan siendo santuarios de la violencia bajo ninguna circunstancia”. También les envió un mensaje a los promotores de estas acciones: “La autonomía universitaria no es una patente de impunidad, y voy a ir por ustedes, incluso entrando a las universidades para sacarlos y hacerlos pagar”.</p><h2>Respaldo del Congreso </h2><p>La iniciativa de Abelardo De La Espriella fue respaldada por diferentes colectividades en el Congreso de la República, y se sumará a varias propuestas legislativas que buscan ponerle límites a la protesta social en Colombia y darle herramientas a la fuerza pública para enfrentar a los ciudadanos que cometan actos irregulares en el marco de esos escenarios.</p><p><b>Simón Molina, representante a la Cámara del movimiento Creemos, radicó un proyecto de ley que establece un concepto que le daría vía libre a la intervención de las autoridades en esos centros académicos: </b>“El orden público se constituye como límite al principio de autonomía de las universidades y demás instituciones de educación superior, garantía bajo la cual no se incluyen actos de violencia que, derivados de una reunión o manifestación, ocupen la infraestructura de las instituciones de educación superior, afectando los derechos de las personas pertenecientes a la entidad”.</p><p><b>A su vez, sugiere que el ingreso de los uniformados debe ser autorizado por los mandatarios locales:</b> “Tras la verificación de hechos graves de violencia al interior de las instituciones de educación superior que deriven en orden de evacuación por parte de la misma, será potestad de los respectivos alcaldes municipales o distritales, donde se encuentren las instituciones, en ejercicio del deber constitucional de mantenimiento del orden público, autorizar el ingreso de los elementos de Policía para la dispersión y cesación de los actos de violencia identificados, sin perjuicio de las demás acciones que puedan ser adelantadas en caso de identificarse la comisión de delitos o actos sancionados por el Código Nacional de Seguridad y Convivencia Ciudadana”.</p><p><b>El camino para que esta ley prospere no está fácil</b>. El Pacto Histórico, la fuerza política más fuerte del Congreso, ya anticipó que se opondrá a cualquier iniciativa que busque modificar la autonomía de las universidades. De igual manera, algunos rectores sentaron su posición e indicaron que se requiere diseñar un protocolo específico para evitar la violación de los derechos humanos en medio de la eventual intervención de la fuerza pública en las instituciones.</p><p><b>Las alertas están encendidas en todo el país y el fantasma de un nuevo estallido social a través de grupos extremistas en las universidades</b>, varios de ellos apalancados y financiados por los grupos armados ilegales, genera preocupación. El presidente Abelardo De La Espriella le pidió a la Policía Nacional alistarse ante cualquier hecho que afecte la tranquilidad del Estado; esa posición fue celebrada también por los alcaldes que padecen constantemente los efectos de las movilizaciones y alteraciones en las universidades.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/RA76SCWS4FE6XG3NJCSHCHH44M.jpg?auth=d5d298391ec40868a36fc6457835b35c4056f201c77c658c688f612a4f6e5020&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Abelardo De La Espriella anunció una persecución para las personas que se refugian en las universidades para delinquir.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Epa Colombia y Wadith Manzur: SEMANA revela los secretos de una fuerte controversia entre la influenciadora y el congresista del Partido Conservador; hay videos y nuevas pruebas]]></title><link>https://www.semana.com/politica/articulo/epa-colombia-y-wadith-manzur-semana-revela-los-secretos-de-una-fuerte-controversia-entre-la-influenciadora-y-el-congresista-del-partido-conservador-hay-videos-y-nuevas-pruebas/202629/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/epa-colombia-y-wadith-manzur-semana-revela-los-secretos-de-una-fuerte-controversia-entre-la-influenciadora-y-el-congresista-del-partido-conservador-hay-videos-y-nuevas-pruebas/202629/</guid><dc:creator><![CDATA[ Francisco  Argüello, Diego Bonilla]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:46:29 +0000</pubDate><content:encoded><![CDATA[<p>El 7 de agosto, horas antes de la posesión presidencial de Abelardo De La Espriella, la Escuela de Carabineros, ubicada sobre la Avenida Circunvalar, en Bogotá, fue epicentro de dos polémicos hechos que involucraron al congresista electo por el Partido Conservador, <a href="https://www.semana.com/gente/articulo/yina-calderon-revelo-video-de-epa-colombia-lo-que-usted-me-esta-haciendo-es-persecucion-y-tortura/202640/" target="_blank" rel="noreferrer" title="https://www.semana.com/gente/articulo/yina-calderon-revelo-video-de-epa-colombia-lo-que-usted-me-esta-haciendo-es-persecucion-y-tortura/202640/">Wadith Manzur, y a la influenciadora Daneidy Barrera, conocida como Epa Colombia. </a></p><p><b>Ambos terminaron enfrentados y retratados en un video que grabó con su teléfono celular la joven</b> y polémica empresaria y que rodó en las redes sociales. </p><p>Barrera aparece en su habitación junto a Karol Samantha, su pareja sentimental, quien llegó ese día festivo, a las 9:30 a. m., en una jornada general de visitas. </p><p>Aunque no era el día para una visita conyugal, porque estas se realizan el último domingo de cada mes, Epa –quien se caracteriza por ser irreverente, llevar la contraria y querer poner sus propias condiciones–, permanecía con su pareja encerrada, en una cama, detrás de una cortina que impedía la visibilidad desde afuera. En otras palabras, <b>incumplían la norma que tiene la Policía de mantener puertas y cortinas abiertas para tener el control de los internos.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/L2634FIMWBBFHCJ7TIOEESDMNU.jpg?auth=894a552068532c154d34ccf54658fc53cf9dc852ce92a70bc4f4c4f98f1bbbbb&smart=true&width=1280&height=720" alt="Wadith Manzur durante su discusión con Epa Colombia." height="720" width="1280"/><p>Los demás internos de Carabineros, al ver la desproporción de Epa, manifestaron su descontento. </p><p><a href="https://www.semana.com/nacion/articulo/revelan-la-primera-foto-de-wadith-manzur-en-la-picota-tras-ser-trasladado-por-orden-del-presidente/202635/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/revelan-la-primera-foto-de-wadith-manzur-en-la-picota-tras-ser-trasladado-por-orden-del-presidente/202635/">Wadith Manzur</a> reclamó a uno de los custodios de la Policía. No entendía por qué él atendía a su esposa y a su visita en la sala de la casa donde también purgaban sus penas otros internos, entre ellos los exgobernadores del Huila, Cielo González Villa, y el del Vichada, Hecson Alexys Benito Castro. Ese día había niños entre las visitas.</p><p><b>“¿Qué está diciendo Manzur?”, </b>preguntó insistentemente Epa a su pareja, desde el interior de su cuarto, según un video que conoció <i>SEMANA</i>. “¿Qué está diciendo, amor?”, repitió. </p><p>Al fondo se observa al político conservador, molesto, hablando sobre la cortina de Daneidy Barrera. <b>“No, marica, es que (ella) tiene que asumir las consecuencias de sus actos.</b> La ley es para los demás y no para ella”, dijo él, visiblemente incómodo.</p><p>Epa escuchó la protesta de Manzur, con quien ya tenían diferencias internas, en medio de la convivencia, y salió al pasillo para reclamarle fuertemente, sin importar la presencia de los visitantes: “Sígalo diciendo más duro. Sígalo diciendo más duro, Manzur”, gritó la influenciadora desafiando al joven conservador, a lo que él respondió: “¿Me estás filmando?”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HJYHAFENE5HYPPSJQU3OSJ7NTI.jpg?auth=3f06f594d07e4b56b9752297802cd6318f82ac9440a77383749c95e24d838de8&smart=true&width=1280&height=720" alt="Epa Colombia y Wadith Manzur se enfrentaron fuertemente el 7 de agosto de 2026, en medio de una visita. La influenciadora quiso burlar una vez más las órdenes de la Escuela de Carabineros en Bogotá, donde estuvo recluida. Fue trasladada a Ibagué." height="720" width="1280"/><p>El momento fue tenso. <b>La influenciadora tomó su teléfono celular que portaba de forma ilegal </b>–en la Estación de Carabineros está prohibido que los internos tengan comunicación con el exterior– y siguió grabando al joven monteriano. No le importaron las consecuencias. </p><p>En otro video –que terminó publicado en redes sociales– Epa Colombia aparece desde el interior de su cuatro increpando al congresista electo, quien le habla desde la puerta principal.</p><p><b>“¿Dónde corro más la cortina, Manzur? ¿Dónde? Lo que usted me está haciendo es persecución y tortura, no señor”, </b>gritó ella. Un uniformado de la Policía se acercó a Daneidy Barrera y le pidió su teléfono celular, pero no quiso entregarlo. </p><p>A renglón seguido apareció en el cuarto la jefe de Carabineros, la mayor Luz Amparo Pinto Rivera, quien saludó y le pidió el favor de abrir la cortina de su dormitorio.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/F7IAJ5ALX5F7XL3RKVCKTHZFOA.jpg?auth=60ae7c9cceeca882040850fef0544cc871fe60f8bac6837f1c297906635303c3&smart=true&width=1280&height=720" alt="Wadith Manzur en la Escuela de Carabineros." height="720" width="1280"/><p>En ese momento, Manzur gritó desde la sala:<b> “Epa me filmó con un teléfono, me grabó”. “¿Y dónde está el teléfono?”,</b> trató de desmentir Epa. </p><p>“Tardaste cinco minutos filmándome con un teléfono”, le siguió reclamando Wadith a Daneidy, mientras la mayor le pidió a la interna, nuevamente, abrir las cortinas del cuarto porque la visita no era conyugal y los demás internos recibían a sus familias en la sala. </p><p>“Yo tengo derecho a mi privacidad, a la intimidad, me están haciendo persecución y tortura psicológica”, gritó Epa. </p><p>La mayor le recordó que ninguna habitación tiene cortina y la de ella era la única que la poseía y debía, ese día, estar abierta porque los uniformados buscaban un mayor control de los internos.<b> “Ella es muy descarada porque se atrevió a sacar su teléfono acá”,</b> gritó Manzur desde la sala. </p><p>Epa subió la voz y la oficial le pidió respeto y bajar el tono para seguir conversando. “Baje la voz, por favor, respéteme”, pidió la uniformada a Epa, quien no paraba de lanzar señalamientos contra Wadith y la oficial.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TJV3UNWUMFB3PBGLEY5OJREEIQ.jpg?auth=7f462a36eceb541882d19e90c16872ac3a880a99a33d8cac97a25f823e33f27f&smart=true&width=1280&height=720" alt="Epa Colombia en la Escuela de Carabineros." height="720" width="1280"/><p>“Respéteme, mayor. Tengo un teléfono y, ¿qué? Usted me lo quiere quitar”, reconoció Epa Colombia. “¡Ah! Entonces, tiene teléfono”, dijo la policía. La influenciadora terminó confesando su pecado. </p><p>Una de las personas que estaba de visita ese día en el penitenciario contó a <i>SEMANA </i>que Daneidy Barrera reconoció públicamente, en medio de la discusión, que se había practicado procedimientos estéticos en la Escuela Carabineros, a escondidas de las autoridades, cuando no está permitido. </p><p>“Usted sabe que todos se lo han hecho:<b> Benito Castro (exgobernador de Vichada), se lo ha hecho; Sandra (Ortiz), se lo hizo”, denunció Epa.</b></p><p>La pareja de la influenciadora le pedía que se calmara. “¡Todas las puertas me las mantienen abiertas y es una orden!”, solicitó, visiblemente molesta la oficial de la Policía, quien buscó hacer cumplir las leyes en el lugar, y quien le recordó a Epa que las visitas “íntimas” son los últimos domingos de cada mes. La influenciadora, al contrario, la trató de “estúpida de mierda”. Este fue un nuevo episodio de agresión verbal de la joven contra la oficial.</p><p>La influenciadora no ocultó su disgusto porque la uniformada aprovechó su presencia en el cuarto para revisar qué tenía la joven entre sus pertenencias. <b>“¿Qué quiere ver? ¿Qué quiere coger ahora? Grábeme a mí. Qué quiere mostrar”</b>, le gritó subida de tono a la oficial la pareja de Epa Colombia. </p><p>Los señalamientos de Epa sobre una supuesta tortura psicológica en Carabineros motivaron a la Procuraduría y la Defensoría del Pueblo a realizar una intervención en ese centro de reclusión, pero el tema quedó totalmente desvirtuado. </p><p>Mientras los patrulleros salían el 7 de agosto de los cuartos de los internos, camionetas del Instituto Penitenciario y Carcelario (Inpec) llegaron, de sorpresa, a las 11:30 de la mañana a la Escuela de Carabineros en Bogotá. </p><p>Uno de los uniformados mostró una resolución del Inpec, donde ordenaba el traslado de Daneidy Barrera <a href="https://www.semana.com/gente/articulo/esposada-y-encadenada-asi-fue-trasladada-epa-colombia-a-sus-audiencias-en-ibague-video-dejo-en-evidencia-el-momento/202648/" target="_blank" rel="noreferrer" title="https://www.semana.com/gente/articulo/esposada-y-encadenada-asi-fue-trasladada-epa-colombia-a-sus-audiencias-en-ibague-video-dejo-en-evidencia-el-momento/202648/">a la Cárcel de Picaleña, en Ibagué, y en cuestión de minutos se inició su traslado.</a> El mandato de Gustavo Petro, su protector, terminó y ese 7 de agosto, a juicio de la administración de Abelardo De La Espriella, ella debía pagar en un centro penitenciario tradicional. </p><p><b>Contra Daneidy Barrera existía un rosario de quejas por parte de sus compañeros y de los uniformados de la Policía que la cuidaban. </b><i>SEMANA </i>reveló en exclusiva los excesos de la mujer que terminaron en el despacho de la dirección del Inpec. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/B4OCUWWUSRGMDGYGJQNO45ELSQ.jpg?auth=d76f50d4382ec652d4f43cc18d5ce4a4a30e38bfd3cb88551db6c7f085703f42&smart=true&width=1920&height=1080" alt="En el video, Epa Colombia manifiesta su molestia por una situación relacionada con Wadith Manzur, presuntamente." height="1080" width="1920"/><p>A la Cárcel del Buen Pastor fue trasladada la compañera de cuarto de Epa, Margareth Chacón Zúñiga, condenada a 35 años de cárcel por participar en el asesinato del fiscal paraguayo Marcelo Pecci en Barú, en mayo de 2022. Tanto Epa como Chacón<a href="https://www.semana.com/politica/articulo/epa-colombia-fue-trasladada-de-la-estacion-de-carabineros-en-bogota-a-la-carcel-de-ibague-tras-multiples-escandalos/202602/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/epa-colombia-fue-trasladada-de-la-estacion-de-carabineros-en-bogota-a-la-carcel-de-ibague-tras-multiples-escandalos/202602/"> se beneficiaron de pagar parte de su pena en la Escuela de Carabineros, </a>concebida inicialmente como lugar para proteger a funcionarios públicos.</p><p>Este miércoles, 16 de septiembre, <b>el traslado a La Picota fue para el congresista electo Wadith Manzur, </b>el exgobernador de Vichada Hecson Alexys Benito Castro y el empresario Sergio Enrique Arias, condenado a 30 meses de prisión por el delito de omisión de agente retenedor. La resolución de traslado llegó sobre las primeras horas de la mañana, lo adelantó el Inpec y fue un proceso tranquilo. </p><p>Los uniformados permitieron que todos empacaran sus pertenencias y no los esposaron a la hora del traslado a la cárcel. De hecho, el joven monteriano se marchó tranquilo. Carabineros, al menos el penitenciario, quedó desocupado.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/5SR5PZNFQZBK3FOES3UA4VXKFM.jpg?auth=f1b90755492c9958c82b4d77f9250dd8cfa41dfd62beefbc4335e61094695033&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[NAC-HISTORIA CARABINEROS Secretos de un encierro]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[¿Álex Saab será el topo contra Nicolás Maduro? Los detalles del acuerdo con Estados Unidos y los tres colombianos involucrados ]]></title><link>https://www.semana.com/nacion/articulo/alex-saab-sera-el-topo-contra-nicolas-maduro-los-detalles-del-acuerdo-con-estados-unidos-y-los-tres-colombianos-involucrados/202638/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/alex-saab-sera-el-topo-contra-nicolas-maduro-los-detalles-del-acuerdo-con-estados-unidos-y-los-tres-colombianos-involucrados/202638/</guid><dc:creator><![CDATA[Felipe Morales Mogollón, Cristina Castro]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:44:38 +0000</pubDate><content:encoded><![CDATA[<p><a href="https://www.semana.com/mundo/articulo/alex-saab-se-declaro-culpable-de-lavado-de-dinero-en-estados-unidos-tras-acuerdo-con-la-fiscalia/202607/" target="_blank" rel="noreferrer" title="https://www.semana.com/mundo/articulo/alex-saab-se-declaro-culpable-de-lavado-de-dinero-en-estados-unidos-tras-acuerdo-con-la-fiscalia/202607/">El acuerdo de Álex Saab con los Estados Unidos pone punto final a uno de los expedientes más controvertidos e interesantes de los últimos años en América Latina.</a> El empresario barranquillero, señalado por años de ser el testaferro de Nicolás Maduro, protagonizó una novela jurídica que incluyó su tiempo como ficha fundamental del chavismo; su huida al país africano Cabo Verde; su captura y traslado a una cárcel en los Estados Unidos; su libertad tras un acuerdo del Gobierno de Maduro con el de Joe Biden y su llegada a Caracas como un héroe y “víctima” de un “secuestro” por el Gobierno del Tío Sam. </p><p>Tras su regreso a Venezuela, <b>Álex Saab había ocupado altas dignidades, incluida la de ministro de Industrias de Producción Nacional.</b> Pero el 2 de enero de este año, su suerte quedó sellada. El presidente Donald Trump logró en un operativo militar capturar y extraer a Nicolás Maduro, quien hoy responde –al lado de su esposa, Cilia Flores– en el Centro de Detención Metropolitano (MDC) de Brooklyn, por gravísimos cargos como conspiración de narcoterrorismo, conspiración para la importación de cocaína, posesión de ametralladoras y dispositivos destructivos, y conspiración para poseer esos mismos artefactos en apoyo de actividades criminales, así como de colaborar con organizaciones criminales calificadas como terroristas por Washington. </p><p>Para la justicia estadounidense, lo que sabe Saab es fundamental, pues se le ha considerado el arquitecto de este engranaje económico que permitió que Maduro se perpetuara en el poder. </p><p>Pocas semanas después de la extracción de Maduro, Saab fue destituido del Gobierno el 16 de enero de este año. Desde ahí era claro que la justicia del Tío Sam lo tenía ya entre ceja y ceja. El 16 de mayo, Venezuela finalmente lo entregó en calidad de “deportado”. Este día, Saab dejó de ser llamado venezolano y fue citado como “el referido ciudadano colombiano incurso en la comisión de diversos delitos en los Estados Unidos de América, tal como es público, notorio y comunicacional”.</p><p>En Estados Unidos, la justicia fijó varias veces fecha para su audiencia, pero al final terminaban aplazándola. Eso dejó ver que Saab había comenzado a colaborar y anticipó que podría empezar a cantar. Al final, esas sospechas se confirmaron cuando el 15 de septiembre la corte del Distrito Sur de Florida hizo público que <b>“el acusado acepta declararse culpable del único cargo de la acusación, que imputa al acusado el delito de conspiración para blanquear instrumentos monetarios”. </b></p><p>En este acuerdo hubo un dato que llamó poderosamente la atención. Saab aceptó entregar 195 millones de dólares, una suma gigantesca que evidencia que el monto del desfalco en Venezuela, especialmente en el programa de ayuda alimentaria Clap en Venezuela, pudo ser muchísimo mayor. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SPH4QJN2FVA73GL4QD7BPBDZYU.jpg?auth=956adbf8350e3da6289f3ace3ceae2da2ad1c8d7952d07d6a7cdafafea44dc8d&smart=true&width=1280&height=720" alt="“Saab y Pulido, junto con funcionarios venezolanos, fueron los organizadores y líderes de la red ilegal”." height="720" width="1280"/><h2>Los colombianos </h2><p><a href="https://www.semana.com/mundo/articulo/alex-saab-se-declarara-culpable-en-estados-unidos-por-lavado-de-dinero-segun-la-agencia-ap/202606/" target="_blank" rel="noreferrer" title="https://www.semana.com/mundo/articulo/alex-saab-se-declarara-culpable-en-estados-unidos-por-lavado-de-dinero-segun-la-agencia-ap/202606/">En el acta de aceptación de cargos por parte de Álex Saab </a>hay un capítulo tan extenso como esencial que registra el nombre de otros tres ciudadanos colombianos que participaron en la danza de los millones en medio del entramado de corrupción de los infames Comités Locales de Abastecimiento y Producción (Clap).</p><p><b>El primero en la lista es el empresario colombiano Álvaro Pulido Vargas, uno de los más cercanos socios de Saab,</b> y quien fue capturado en abril de 2023 en un exclusivo sector de Caracas en medio de un complejo proceso por lavado de activos.</p><p>El caso contra Pulido –cuyo nombre de pila es Germán Enrique Rubio Salas– se encuentra estancado desde hace varios años. La declaración de Saab promete destrabarlo y, de paso, llevarlo a una condena.</p><p><b>“Saab y Pulido, junto con funcionarios venezolanos de alto nivel, fueron los principales organizadores y líderes de la red ilegal.</b> Ellos, junto con otros, diseñaron y ejecutaron un sistema de sobornos y otros pagos ilegales a funcionarios públicos, con el fin de que otras entidades controladas secretamente por los conspiradores fueran adjudicadas con lucrativos contratos del Gobierno para importar alimentos y medicinas bajo los auspicios del Clap”, dice el documento.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/A4BDLEN3ENB7DINFOIXQAAUVWM.jpg?auth=56ccbf4794220c8a0046ef2c1ccee728f8e0bbbf46bbcffec8b0cfbba6cd2f29&smart=true&width=1280&height=720" alt="Nicolás Maduro tendrá el inicio de su juicio en Estados Unidos el próximo año." height="720" width="1280"/><p><b>La ubicación de Pulido Vargas es un misterio total. </b>Debido al hermetismo de las autoridades judiciales venezolanas, se desconoce si sigue privado de su libertad en centro carcelario, está libre, es un prófugo o tiene algún tipo de asilo político en una de las pocas naciones amigas de Venezuela en la actualidad.</p><p>En la aceptación de cargos aparecen los nombres de otros ciudadanos colombianos: Emmanuel Enrique Rubio González y Carlos Rolando Lizcano Manrique, reconocidos comerciantes en Norte de Santander y quienes han sido pieza fundamental en alianzas políticas en dicho departamento.</p><p>“Aproximadamente en 2015, <a href="https://www.semana.com/mundo/articulo/acusan-formalmente-a-alex-saab-de-lavado-de-dinero-en-una-corte-de-miami-quedara-detenido-sin-posibilidad-de-fianza/202644/" target="_blank" rel="noreferrer" title="https://www.semana.com/mundo/articulo/acusan-formalmente-a-alex-saab-de-lavado-de-dinero-en-una-corte-de-miami-quedara-detenido-sin-posibilidad-de-fianza/202644/">Saab llegó a un acuerdo para lavar dinero y cometer fraude con individuos identificados en este documento”</a>, reseña el texto frente a la alianza criminal entre el testaferro del régimen con Rubio y Lizcano, así como con funcionarios del Gobierno de Venezuela en los tiempos de Maduro.</p><p>Acá aparece en escena José Gregorio Vielma-Mora, exgobernador del Táchira, zona fronteriza con Colombia, quien durante años ha tenido fuertes nexos con dirigentes políticos en Colombia, en especial en Norte de Santander.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/GV4HV4C24ZCKXM242DMDZWO2TI.jpg?auth=24538c98449bce90233a4637d474f785c27119c9566aba6e39803575d4de7c73&smart=true&width=1280&height=720" alt="En el acta de aceptación de cargos por parte de Saab hay un capítulo extenso y esencial que registra el nombre de otros tres colombianos." height="720" width="1280"/><p>El exmandatario junto a los socios de Saab habría sido el principal beneficiado en el desvío de las millones de cajas de Clap que se disfrazaban como una ayuda para los más necesitados. <b>Los millones de dólares que se apropiaron terminaron en bancos en Panamá, Bulgaria, Liechtenstein y Suiza.</b></p><p>“Saab y Pulido utilizaron una firma suiza de asesoría financiera para establecer secretamente entidades y cuentas bancarias con el único propósito de lavar fondos involucrados en su esquema ilegal”, indica el punto 20 de la aceptación de cargos.</p><p><b>Por ahora no se sabe cuál podría ser la condena de Saab. </b>En el derecho estadounidense, el delito que aceptó puede dar hasta 20 años de cárcel. Se sabe que la sentencia se conocerá en enero de 2027. De aquí a esa fecha, la justicia norteamericana seguramente apretará al colombiano para que sea uno de los testigos fundamentales de los procesos que tiene en curso contra Maduro, Cilia Flores y quizás los colombianos. </p><p>Hay expresiones dentro del documento judicial que dejan claro que, a cambio de este acuerdo favorable a él, Saab entregará valiosa información de los peces gordos. “El acusado acepta cooperar plenamente con la Fiscalía mediante: el suministro de información y testimonio veraces y completos, y la entrega de documentos, registros y otras pruebas cuando la Fiscalía lo solicite, ya sea en entrevistas, ante un gran jurado, en un juicio o en cualquier otro procedimiento judicial… Además, el acusado acepta que no protegerá a ninguna persona o entidad mediante información falsa u omisión, y que no implicará falsamente a ninguna persona o entidad”, asegura el texto. </p><p>También deja claro que el tiempo sobre el cual tiene información es muy extenso. “Tras el regreso de Saab a Venezuela en diciembre de 2023 y hasta febrero de 2026, <b>Saab se incorporó al Gobierno de Venezuela en una capacidad oficial y recibió fondos provenientes de contratos Clap anteriores. </b>Al mismo tiempo, continuó prestando asistencia y siguiendo instrucciones de funcionarios venezolanos y sus representantes que participaban en otros esquemas ilegales, incluido el Funcionario del Gobierno 1A”. </p><p>Por ahora, Saab confesó cómo fue el entramado del Clap, pero si habla de todo, su testimonio podría generar un remezón sin antecedentes en ambos países. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/V3PDVTO6QFEZ3GWFV5JRI3QLUU.jpg?auth=72f9dfccc56b26e8530a4b38934999ee1eb1178484776220fa06f454453003d2&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Álex Saab aceptó un acuerdo con la justicia estadounidense y se especula su participación en el juicio contra Nicolás Maduro.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[El coronel (r) Alfonso Plazas Vega habla con SEMANA tras ser declarado inocente en un proceso civil en Estados Unidos por los hechos del Palacio de Justicia: “No tengo nada de qué arrepentirme”]]></title><link>https://www.semana.com/nacion/articulo/el-coronel-r-alfonso-plazas-vega-habla-con-semana-tras-ser-declarado-inocente-en-un-proceso-civil-en-estados-unidos-por-los-hechos-del-palacio-de-justicia-no-tengo-nada-de-que-arrepentirme/202659/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/el-coronel-r-alfonso-plazas-vega-habla-con-semana-tras-ser-declarado-inocente-en-un-proceso-civil-en-estados-unidos-por-los-hechos-del-palacio-de-justicia-no-tengo-nada-de-que-arrepentirme/202659/</guid><dc:creator><![CDATA[Jairo  Lozano, Vicky  Dávila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:42:59 +0000</pubDate><content:encoded><![CDATA[<p><b>SEMANA: Coronel, ¿qué fue lo que pasó en Estados Unidos con este proceso civil que ayer lo declaró inocente?</b></p><p><b>Alfonso Plazas Vega (A.P.V.): </b>Es un caso muy particular. Los señores del M-19 asaltaron el Palacio de Justicia el 6 de noviembre de 1985 para asesinar particularmente a los jueces de la República que los podían llevar extraditados a los Estados Unidos. Pero no solamente asaltaron el Palacio de Justicia y cometieron la más terrorífica acción en contra de la majestad de la justicia colombiana, sino que además fueron ellos mismos, a través de sus abogados, quienes presentaron una demanda contra la Corte Interamericana de Derechos Humanos en contra del Gobierno colombiano por violación de derechos humanos.<a href="https://www.semana.com/nacion/articulo/el-coronel-r-alfonso-plazas-vega-fue-declarado-inocente-en-un-proceso-civil-en-estados-unidos-por-los-hechos-del-palacio-de-justicia/202649/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/el-coronel-r-alfonso-plazas-vega-fue-declarado-inocente-en-un-proceso-civil-en-estados-unidos-por-los-hechos-del-palacio-de-justicia/202649/"> Es decir, ellos no solamente hacen el daño, sino además, demandan y lo hacen ante la Corte Interamericana de Derechos Humanos.</a></p><p><b>SEMANA: ¿Qué pasó con su caso en 2022? </b></p><p><b>A.P.V.:</b> Me vine para los Estados Unidos; aquí llegué el 6 de febrero del año 2016 y estaba viviendo mi vida muy contento con mis hijos y con mis nietos cuando, comenzando el año 2022, fecha en la que curiosamente llegaron tanto el Pacto Histórico como el señor Petro a la Presidencia de la República, me presentaron una impresionante demanda de carácter civil ante la Corte Federal del Distrito Sur de la Florida, en la cual afirman que yo soy el responsable del asesinato de Carlos Horacio Urán, ¡por favor! </p><p><b>SEMANA: ¿Por qué en Estados Unidos? O sea, ¿por qué llega ese caso a la justicia de Estados Unidos? Reitero, allí en lo civil. ¿Por qué allá?</b></p><p><b>A.P.V.: </b>Por una razón sencilla, que corresponde a la ley de los Estados Unidos. Lo cierto es que los hechos fueron en Colombia, los victimarios eran colombianos, que fueron los señores del M-19, como lo dice la justicia colombiana, y las víctimas eran colombianas, de modo que debería resolverse todo en Colombia. Pero como yo estaba viviendo aquí en los Estados Unidos, por residencia permanente, consideraron que se abría la posibilidad de juzgarme aquí. Es algo que permite la ley de este país. </p><p><b>SEMANA: Coronel, usted fue absuelto por la máxima instancia de la justicia ordinaria colombiana, la Corte Suprema. ¿Por qué termina en un proceso en Estados Unidos cuando la justicia de este país lo absolvió?</b></p><p><b>A.P.V.:</b> Pues sencillamente consideraron que yo había sufrido allá un juicio de carácter penal y lo que abrieron aquí en Estados Unidos fue un juicio de carácter civil. Todo esto está ajustado a las normas de los Estados Unidos. Los jueces de los Estados Unidos se limitan a cumplir este tipo de normas porque han sido constituidas en leyes de la nación americana.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HSKWV4EW4NDJFP4VTVK3QZFBFM.jpg?auth=d0820b79229acb377dc620ecd7b3412180ca14e8c858a9f5834641e69ac38588&smart=true&width=920&height=613" alt="El coronel Luis Alfonso Plazas Vega fue declarado inocente por la toma del Palacio de Justicia." height="613" width="920"/><p><b>SEMANA: ¿Qué siente? ¿Cuál es el balance que hace de todo esto que ha pasado con usted frente a los lamentables hechos del Palacio de Justicia?</b></p><p><b>A.P.V.: </b>Lo que intentaron hacer el 6 de noviembre fue un golpe de Estado, mediante el cual el comunismo internacional, a través del M-19, se adueñaba de Colombia por la vía de las armas. Si ellos hubieran tenido éxito, Colombia desde entonces hubiera sido un país comunista y ya no habría elecciones ni libertades, ni negocios. Sería un Estado comunista totalitario desde entonces.</p><p><b>SEMANA: ¿Qué cambió las cosas entonces?</b></p><p><b>A.P.V.:</b> Las actuaciones dirigidas por el Gobierno nacional del presidente Belisario Betancur, que fue el que determinó que se utilizara la fuerza pública y le correspondió hacerlo al comandante de la brigada del general Arias Cabrales, que en este momento está preso. Haber perdido esa oportunidad, ellos no lo perdonan y por esa razón se vinieron contra nosotros con todo tipo de trampas, mentiras, falsos testimonios, marrullas, etcétera. Violaron todas las normas.</p><p><b>SEMANA: En estos casos juega mucho el costo de los abogados…</b></p><p><b>A.P.V.: </b><a href="https://www.semana.com/mundo/articulo/inicio-el-juicio-en-estados-unidos-contra-el-coronel-r-plazas-vega/202600/" target="_blank" rel="noreferrer" title="https://www.semana.com/mundo/articulo/inicio-el-juicio-en-estados-unidos-contra-el-coronel-r-plazas-vega/202600/">La empresa que buscaron para venirse contra mí es una compañía de California que se llama Wilson, Sonsini, Williams &amp; Rosati.</a> Es la empresa más poderosa de California y de pronto de los Estados Unidos. Me dicen que tiene mil abogados. Que cualquier empresa que tenga un bufete de abogados de 20 o 30 abogados es una empresa poderosa, pero que haya una empresa con mil abogados, eso creo que no existe en ningún otro lugar del mundo.</p><p><b>SEMANA: ¿Y usted a quién contrató? </b></p><p><b>A.P.V.: </b>Esa empresa la contrataron y yo no tenía plata. Empiezo a buscar abogados por todas partes y de pronto encuentro un equipo joven de personas que no están interesadas en el dinero, sino en el cumplimiento de la ley y en el respeto del derecho como ciencia. Y ellos aceptaron con una cuota inicial, que además ni siquiera he terminado de pagarla, para defenderme. Empezaron a hacer la defensa con toda el alma. Esa es la empresa de Hassan, Hassan Group.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4FFIQPDNABBW3HSVGZHNRSTMNI.jpg?auth=dcc8d6f07d86db7ea8d3843a2e1f790185e3356830bf91f43b7da459cb9b4462&smart=true&width=5000&height=3333" alt="El coronel (R) Alfonso Plazas Vega habló sobre su proceso en Estados Unidos." height="3333" width="5000"/><p><b>SEMANA: La familia del magistrado Urán ha dicho que se siente decepcionada de este fallo, que están revisando si hay algún recurso. ¿Qué piensa usted de eso? ¿Le quiere decir algo a la familia del magistrado?</b></p><p><b>A.P.V.: </b>Yo les envié un mensaje ayer también en una corta entrevista que me hizo algún periodista en Miami, en la cual les digo que lamento muchísimo lo que sucedió con Carlos Horacio Urán, que fue asesinado por el M-19, y lo único que les pido es que busquen la realidad de las cosas.</p><p>En el momento en que ellos dejen de buscar en personas inocentes la culpabilidad y se centren en la realidad que la determinó ya la justicia colombiana, <a href="https://www.semana.com/politica/articulo/no-me-arrepiento-el-coronel-r-alfonso-plazas-vega-habla-de-la-toma-del-palacio-de-justicia-revela-supuesta-alianza-del-m-19-con-pablo-escobar-y-defiende-su-inocencia/202500/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/no-me-arrepiento-el-coronel-r-alfonso-plazas-vega-habla-de-la-toma-del-palacio-de-justicia-revela-supuesta-alianza-del-m-19-con-pablo-escobar-y-defiende-su-inocencia/202500/">que los asesinos de su padre fueron los miembros del M-19,</a> en ese momento ellos van a empezar a entender las cosas y a tener la paz de la cual no han podido disfrutar a lo largo de sus vidas.</p><p><b>SEMANA: ¿En este momento usted tiene algún proceso civil o penal pendiente? </b></p><p><b>A.P.V.:</b> Ninguno. Todas las acusaciones que me han hecho han terminado con absolución. Todas. He tenido que luchar durísimo durante 40 años, pero la verdad prevalece y aquí estamos.</p><p><b>SEMANA: Coronel, el presidente Abelardo De La Espriella escribió en sus redes sociales que “se hizo justicia con un héroe de la patria”. ¿Qué piensa de lo que dijo el presidente?</b></p><p><b>A.P.V.:</b> El presidente es muy generoso conmigo. Lo aprecio mucho, lo quiero mucho. Felicito a Colombia por tener un hombre de las características de Abelardo De La Espriella como presidente de la República para salvar a nuestro país después de cuatro años de desastre nacional. Gracias, presidente.</p><p><b>SEMANA: ¿Usted se arrepiente de algo cuando mira atrás, de todos los hechos que tantas veces hemos hablado del Palacio de Justicia y ahora con estos procesos que ha tenido que afrontar?</b></p><p><b>A.P.V.:</b> No tengo nada de qué arrepentirme. Lo único que tengo es la satisfacción enorme de haber cumplido y mi gratitud ante Dios, que siempre ha estado protegiéndome a mí y a mi familia y los pasos que he venido dando.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/V2V3DMZQO5FUTIWCQYCSLK5T2Q.jpg?auth=d2c95c691b3a5c4d4bb6d515daac78ad8d235f97dad8de4af0cb75f6933c3227&smart=true&width=5000&height=3333" alt="El coronel retirado Alfonso Plazas Vega." height="3333" width="5000"/><p><b>SEMANA: ¿Qué le quiere decir al país?</b></p><p><b>A.P.V.:</b> Creo que son muy pocos los colombianos que están equivocados en este tema de la subversión. Los colombianos saben claramente el enorme daño que les han hecho todos estos grupos guerrilleros a lo largo de tantos años, a lo largo de cerca de 70 años. Eso lo tienen claro todos, pero los guerrilleros tienen familias, entonces hay un pequeño grupo y, tristemente, en la clase política dirigente hay algunos personajes que están obrando mal y esos son los más grandes responsables.</p><p>De modo que lo que yo les pido a los colombianos de bien es que traten de sacar del error a los que están equivocados. Afortunadamente, un altísimo porcentaje de los colombianos está en la vía correcta.</p><p><b>SEMANA: Coronel, ¿y a su familia? ¿Qué le quiere decir a su familia?</b></p><p><b>A.P.V.:</b> Que Dios los bendiga. Ellos saben lo que ha sido la lucha mía con mi Ejército inicialmente y después como funcionario público. Y saben que yo procuro hacer las cosas bien. Eso es lo que yo trato de hacer. Mi familia, tengo todo el agradecimiento y todo el amor. Y le doy también gracias a Dios por esa familia que tengo. Tania es una mujer maravillosa, tengo unos hijos extraordinarios y lo más bello en este momento son mis seis nietos. </p><p><b>SEMANA: ¿Le preocupa que aparezca un nuevo proceso, una nueva demanda?</b></p><p><b>A.P.V.:</b> ¿Preocuparme? no; me incomodaría, pero preocuparme no. Cualquier cosa que se invente, volvemos y la destruimos con la ayuda de Dios. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XLFCYHK2URHIDGV727VRX4KJHQ.jpg?auth=f305a13888e657f035552fb824bfd0e3c1089efa87fa9b4f19d2a64cb841ca6e&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[El coronel retirado Alfonso Plazas Vega asegura que no le teme a nuevas denuncias y que seguirá defendiendo su inocencia las veces que sea necesario.]]></media:description><media:credit role="author" scheme="urn:ebu">Mauricio Alvarado</media:credit></media:content></item><item><title><![CDATA[La sombra de Centros Poblados y Martha Peralta sobre contratos por $300.000 millones para instalar paneles solares en La Guajira durante el cierre del gobierno Petro ]]></title><link>https://www.semana.com/nacion/articulo/la-sombra-de-centros-poblados-y-martha-peralta-sobre-contratos-por-300000-millones-para-instalar-paneles-solares-en-la-guajira-durante-el-cierre-del-gobierno-petro/202615/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/la-sombra-de-centros-poblados-y-martha-peralta-sobre-contratos-por-300000-millones-para-instalar-paneles-solares-en-la-guajira-durante-el-cierre-del-gobierno-petro/202615/</guid><dc:creator><![CDATA[Natalia Cortés]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:42:15 +0000</pubDate><content:encoded><![CDATA[<p>El Ministerio de Minas entregó una bolsa de 322.709 millones de pesos a la Empresa Distribuidora del Pacífico S.A. ESP (Dispac) para llevar soluciones solares fotovoltaicas a comunidades vulnerables en La Guajira. <b>El millonario negocio genera alertas por la participación de contratistas cuestionados, retrasos en los desembolsos y varias etapas con una ejecución cercana al 0 por ciento.</b></p><p>Edwin Palma, exministro de Minas, entregó la millonaria inversión a la empresa que presta el servicio de energía en los municipios del Chocó mediante un contrato interadministrativo que comenzó el 21 de enero de este año.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QBVMHY5NJZEL3D6OFTG6LW47XQ.jpg?auth=6acef57b7800ec9ca17e70f571711f5280daeb513ec7fa8c0ffcad437153e2d3&smart=true&width=1280&height=720" alt="Los contratos, suscritos a finales de marzo, ya giraron anticipos totales por más de 102.000 millones de pesos.
" height="720" width="1280"/><p>De esta forma, pudo contratar con terceros la construcción y la interventoría del proyecto, concebido para beneficiar a cerca de 10.664 usuarios de Maicao, Albania y municipios aledaños.</p><p><i>SEMANA</i> conoció que entre las firmas seleccionadas aparecen empresas y personas vinculadas al entramado empresarial que quedó al <a href="https://www.semana.com/nacion/articulo/nueva-condena-en-el-escandalo-de-centros-poblados-un-prestanombres-termino-sentenciado-de-quien-se-trata/202608/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/nueva-condena-en-el-escandalo-de-centros-poblados-un-prestanombres-termino-sentenciado-de-quien-se-trata/202608/">descubierto con el escándalo de Centros Poblados</a> y que rodeaba al condenado contratista Emilio Tapia<b>. Entre las beneficiadas también figura una empresa de la familia de la petrista Martha Peralta, senadora guajira por la circunscripción indígena.</b></p><p>Luego de recibir el convenio interadministrativo, Dispac publicó los procesos el 3 de febrero de 2026, incluyendo la interventoría que vigila el proyecto. Las soluciones fueron repartidas en cuatro lotes de 2.677, 2.674, 2.659 y 2.654 usuarios, respectivamente.</p><p>La competencia fue prácticamente inexistente. Para cada uno de los cuatro lotes apareció un solo proponente y a los cuatro se les terminó adjudicando. Dispac entregó 75.547.093.092 pesos al Consorcio Soluciones Solares Integrales 2026, por el lote 1; 75.460.584.054 pesos a la Unión Temporal Energética, por el lote 2; 75.038.223.391 pesos al Consorcio Albania Solar 2026, por el lote 3, y 74.897.391.929 pesos al Consorcio Solar Guajira, por el lote 4. <b>A esos contratos, sin disputa de precios y ofertas, se suma la interventoría, por 10.334.317.000 pesos, que quedó en manos de Proinges SAS.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/45GYYFL54RD77DLWM2QEP2TJT4.jpg?auth=1f5536157740e26bd0d9abb770e6a43bc361822fd786dd89468f74e3deb6b94c&smart=true&width=1280&height=720" alt="Dispac adjudicó cuatro contratos para la instalación de soluciones solares en municipios de La Guajira, por un valor superior a 300.000 millones de pesos." height="720" width="1280"/><p>En el consorcio ganador del lote 1 aparece con el 30 por ciento de la participación la empresa Ingeniería Telecomunicaciones de Antioquia SAS, conocida como Edetel<b>. La sociedad no nació como una empresa energética, pues hasta diciembre de 2020 se llamaba Dozza Clothing SAS y era un negocio textil.</b></p><p>Cambió de nombre, objeto y la mitad de las acciones fue comprada por Juan Pablo Morales Acevedo, mientras que la otra mitad la adquirió la Fundación de Telecomunicaciones, Ingeniería, Seguridad e Innovación (Novotic). </p><p><a href="https://www.semana.com/nacion/articulo/derroche-centros-poblados-manejo-los-70-mil-millones-del-anticipo-de-mintic-como-plata-de-bolsillo/202143/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/derroche-centros-poblados-manejo-los-70-mil-millones-del-anticipo-de-mintic-como-plata-de-bolsillo/202143/">Novotic fue uno de los cuatro integrantes de la Unión Temporal Centros Poblados, protagonista del fallido contrato de conectividad rural del Ministerio de las TIC.</a> Esta empresa se especializó desde su compra en telecomunicaciones y solo hasta febrero de este año amplió su objeto para incluir la instalación de paneles y sistemas fotovoltaicos, días después de la publicación del proceso del Dispac en Secop.</p><p>Royal Suministros, dueña del 50 por ciento del consorcio, tampoco tendría experiencia en energía, <b>pues sus antecedentes se concentran en el suministro y las obras para complejos de cine.</b></p><p>Por otro lado, en el consorcio del lote 2, el 55 por ciento de la participación lo tiene una firma llamada Soluciones Integrales B&amp;V, del municipio Carmen de Bolívar, que nació en octubre de 2023 y en 2024 declaraba un solo empleado, activos por 7 millones de pesos y actividades de catering, expendio de comidas, agencias de viajes y consultoría. En 2025 reportó activos por más de 38.000 millones de pesos e ingresos por 41.672 millones, ya declarando actividades de construcción de carreteras, edificios y obras civiles.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Q2R6UJAYGVEJRPKXBHW4AL5QK4.jpg?auth=72c498b543e11bd4210a5c340d88c44a063569a0b276e6902a53a84e365bb771&smart=true&width=1280&height=720" alt="Los contratos para llevar energía solar a comunidades de La Guajira fueron adjudicados a cuatro consorcios, con un solo proponente en cada lote." height="720" width="1280"/><p>En el lote 3, el 20 por ciento de la operación está en manos de BCH Engineering, empresa de la que Tecnivías &amp; Construcciones —antes Coning— fue accionista hasta julio de 2025.</p><p>Esa Coning había recibido de OLT Logistic, firma vinculada a Ottomar Lascarro, contratista cercano a Emilio Tapia y condenado a 12 años y nueve meses de prisión por su participación en el entramado de Centros Poblados, la cesión de una participación en una obra cuya experiencia ayudó a la empresa a participar en otros procesos.</p><p>El cuarto lote quedó en manos del Consorcio Solar Guajira, del que hace parte MC&amp;I Americas SAS en un 30 por ciento, representada por Carlos Enrique Herazo de la Barrera, concuñado de la senadora Martha Peralta, que está casado con Sheila Milena Molina, media hermana de Manuel Julián Molina Pérez, esposo de la congresista del petrismo.</p><p><i>SEMANA</i> consultó a Peralta, quien aseguró que no tiene “familiaridad o relación” con los “hermanastros” de su esposo: <b>“Solo tengo relación con uno de ellos. Con el resto no se ha dado la oportunidad”.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QLZTDQW4P5B2HIZAHWRO4TOGM4.jpg?auth=4b64c6e610019f430b9da89ae1a3b833554ca783a7a9274f156405897d9c8d48&smart=true&width=1280&height=720" alt="La empresa MC&I Americas, de Carlos Herazo, concuñado de Martha Peralta, logró el 30 por ciento del control por el lote 4, al que le entregarán más de 74.000 millones de pesos." height="720" width="1280"/><p>En ese mismo consorcio aparece con el 10 por ciento de la compañía Sispro, otra de las firmas que se repartieron la participación del negocio y que, además, al menos hasta 2022 se encontraba en proceso de reorganización empresarial.¿</p><h2>Retrasos y anticipos</h2><p>Los cuestionamientos no terminan en quienes se quedaron con los contratos. <i>SEMANA </i>conoció el informe de actividades número seis, elaborado por Dispac para MinMinas, que muestra el contraste entre los recursos girados y las obras. El 12 de febrero, la cartera desembolsó a Dispac <b>161.354 millones de pesos, correspondientes a la mitad del convenio. Una relación oficial de pagos entregada por la empresa señala que, para finales de junio, los cuatro contratistas habían recibido anticipos por 102.692 millones.</b></p><p>Al 30 de junio, el informe registraba 150 soluciones solares fotovoltaicas energizadas: 50 en el lote 1, ninguna en el 2, 50 en el 3 y 50 en el 4, frente a un total contractual de 10.664. Esto equivale al 1,4 por ciento de las unidades contratadas y al 15 por ciento de la meta prevista para ese mes.</p><p>El avance físico también mostraba retrasos en los cuatro contratos. El lote 1 registraba una ejecución del 5,5 por ciento frente al 9,5 por ciento programado; el lote 2, del 0,15 por ciento frente al 2,74 por ciento; el lote 3, del 1,65 por ciento frente al 2,38 por ciento, y el lote 4, del 6 por ciento frente al 9,5 por ciento previsto.<b> Los contratistas de los lotes 1 y 4 reconocieron el atraso ante MinMinas y trasladaron en sus planes de acción, del 9 al 17 de julio, la primera meta de energización, sin que eso constituyera una reprogramación formal.</b></p><p>Las alertas más graves estaban en el lote 2, donde además se encontraron 143 usuarios inexistentes que debían ser reemplazados y validados. El informe de Dispac también recogió las observaciones de la interventoría, que aseguran que el contratista omitió varios informes requeridos antes del inicio de la obra.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3SCRLHPC4NHYDNHE37MFMWGJDQ.jpg?auth=9f7f3ecef28609925b4f5726ae062f120919d22b5caeec3942feff0e0ca20379&smart=true&width=1280&height=720" alt="Novotic, que en registros públicos aparece como dueña del 50 por ciento de una de las firmas seleccionadas para el lote 1, integró la fallida Unión Temporal Centros Poblados." height="720" width="1280"/><p>También hubo una desalineación en los plazos, en vista de que el convenio entre la cartera y Dispac vencía originalmente el 31 de julio, pero los cuatro contratos de obra fueron suscritos hasta el 30 de noviembre. Solo en junio Dispac solicitó extender el convenio principal hasta el 31 de diciembre de 2026.</p><p>En respuesta a <i>SEMANA,</i> Dispac sostuvo que los 102.692 millones de pesos del anticipo no corresponden a remuneración por avance: “Un mecanismo de financiación inicial destinado exclusivamente a atender los requerimientos necesarios para poner en marcha y desarrollar el proyecto”.</p><p>Dispac reportó que entre el 30 de junio y el 18 de septiembre las soluciones energizadas pasaron de 150 a 862, lo que equivale a un salto del 1,4 al 8,1 por ciento de avance. En el lote 2, pasaron de cero soluciones energéticas a 60. Ante las demoras, respondió: <b>“El porcentaje cercano al 0 por ciento no refleja el estado real de la ejecución física del proyecto”,</b> argumentando que sí tiene materiales y algunos resultados en territorio.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3APBXLFDV5E67BJS5W5LHOY6PA.jpg?auth=180731aafc1736a64fe87ef2d691171fc695784257f38de2647bf7a6460f7803&smart=true&width=1280&height=720" alt="Los recursos entregados para el proyecto solar en La Guajira superan los 322.000 millones de pesos, según la información oficial citada en la investigación." height="720" width="1280"/><p>Defendieron a la firma B&amp;V, asegurando que hoy es una empresa de “arquitectura e ingeniería, ejecución de obras, instalaciones, montajes, mantenimiento y suministro de bienes y equipos”, sin contar que en algún momento sí estuvo registrada únicamente para servicios de alimentos.</p><p>Sobre el único proponente por lote, <b>Dispac dijo que recibió 16 observaciones y amplió de cinco a diez años la experiencia admisible para garantizar idoneidad.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Y2TV53YQLNCKTF6JETMMTTKO6A.jpg?auth=4f3a48a3d9093f53cc9b784dc95a1f1e30b416861ade89c91fef434449a63b23&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Dispac adjudicó cuatro contratos para la instalación de soluciones solares en municipios de La Guajira, por un valor superior a 300.000 millones de pesos.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Así ensamblan con pentolita y fibra óptica los drones Kamikaze. 28 militares han sido asesinados en dos años]]></title><link>https://www.semana.com/nacion/articulo/asi-ensamblan-con-pentolita-y-fibra-optica-los-drones-kamikaze-28-militares-han-sido-asesinados-en-dos-anos/202607/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/asi-ensamblan-con-pentolita-y-fibra-optica-los-drones-kamikaze-28-militares-han-sido-asesinados-en-dos-anos/202607/</guid><dc:creator><![CDATA[Camilo Galvis]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:39:07 +0000</pubDate><content:encoded><![CDATA[<p>Las cifras hasta el momento desconocidas, y que SEMANA revela con base en información de fuentes oficiales, muestran que la guerra <b>con drones cargados de explosivos por parte de las organizaciones criminales tiene en jaque a la fuerza pública. </b></p><p>Entre 2024 y 2026, Colombia ha estado bajo ataque constante por más de 870 días. Los criminales han lanzado más de 1.680 explosivos contra la fuerza pública desde el 26 de abril de 2024,<a href="semana.com/nacion/medellin/articulo/como-el-de-estados-unidos-este-es-el-nuevo-pentagono-de-medellin-que-tendra-drones-e-inteligencia-artificial/202652/" target="_blank" rel="" title="semana.com/nacion/medellin/articulo/como-el-de-estados-unidos-este-es-el-nuevo-pentagono-de-medellin-que-tendra-drones-e-inteligencia-artificial/202652/"> cuando se dio el primer ataque terrorista con drones en la vereda Las Vegas, del municipio de Argelia, Cauca</a>. </p><p>Desde 2024 a la fecha, han sido asesinados por parte de los grupos criminales que usan drones cargados con explosivos 28 militares y otros 424 han resultado heridos. Frente a los civiles, ya han muerto seis y otros 60 quedaron heridos con estos ataques. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/2CNYPHYHPFGR7LUND234VS2UTU.jpg?auth=d287a422756bb7414a5f49ae1c6994c529867c2bd5cb60a220e7f6060adc04a7&smart=true&width=1280&height=720" alt="Desde 2024 a la fecha han sido asesinados 28 militares por parte de grupos criminales en ataques de drones con explosivos." height="720" width="1280"/><p>El Ejército y la Policía son los principales blancos de los grupos ilegales. Durante 2024, 2025 y 2026, 60 policías han resultado heridos. </p><p>La mayoría de los ataques se registran de día, con más de 293. En la noche, cuando se necesita más experticia en el manejo de los drones, los criminales se han tecnificado y han logrado efectuar más de 50 atentados. <b>La división del Ejército más afectada por los criminales es la Tercera, con jurisdicción en Cauca, Valle del Cauca y Nariño. Esta unidad ha tenido que soportar más de 345 eventos. La otra región afectada, aunque en un escalón menor, es la Segunda División, con sede en Norte de Santander, y la región del Catatumbo. </b></p><p>Las estructuras más agresivas en el campo criminal que se han potenciado con el uso de drones con explosivos son Carlos Patiño, Jaime Martínez, Dagoberto Ramos, Ismael Ruiz y Franco Benavides, de las disidencias de las Farc de alias Iván Mordisco y alias Calarcá. </p><p>El ELN también ha tenido una fuerte arremetida con estos elementos, a través del frente de guerra Camilo Torres Restrepo, bajo el mando de alias Silvana Guerrero, cabecilla del frente de guerra oriental, con zona de injerencia en el Catatumbo. </p><p>Sin embargo, se han capacitado otros frentes del ELN que han empezado a actuar de forma sanguinaria, como el Juan Fernando Porras, Tito Marín y Alfredo Gómez Quiñonez.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/H4J4T5WES5H2PPXWDAN3YIWLEY.jpg?auth=ba292b70e7cdf3dab6e05dbf871e680e3405971bef578f294fa9136614c75b42&smart=true&width=1280&height=720" alt="Una simple jeringa sirve como detonador en los drones kamikaze que usan los grupos criminales contra la fuerza pública." height="720" width="1280"/><p>La anterior radiografía muestra que los grupos criminales han hecho de los drones una de sus más potenciales armas en este nuevo capítulo de la guerra, en el que con estos equipos atacan a distancia, sin poner en riesgo a sus hombres y con una capacidad de daño superior. </p><p>Lo que preocupa a las autoridades nacionales y algunos sectores políticos es que, mientras los criminales avanzan en la modernización de sus técnicas para dejar caer las granadas sobre los militares y policías, el país aún no cuenta con un escudo antidrones efectivo<b>, y el que dejó contratado el Gobierno del expresidente Gustavo Petro para la región del Catatumbo, a cargo de Codaltec, una empresa del Ministerio de Defensa, sigue sin funcionar. </b></p><p>Los criminales ya van en la tercera generación de drones con fines de uso terrorista. Iniciaron con una técnica básica, el dron tradicional que se compra a través de cualquier plataforma, y le adaptaron un sistema de apertura y de cierre para que dejara caer los explosivos. </p><p>A este sistema se le conoce como radiofrecuencia y depende de un canal inalámbrico, es decir, un control remoto para ser guiado. Este sistema tiene una debilidad y es que es susceptible de interferencias. Una segunda generación es la de los drones guiados por medio de fibra óptica. <b>Son los que se están viendo en la actualidad, como ocurrió en el caso del aparato encontrado el 6 de mayo de 2026, en inmediaciones del aeropuerto El Dorado, de Bogotá. </b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/S4U5NJMPVZC33MPGG6NIXYVIJ4.png?auth=32d20c869e7dd6382c9d78d0c3bd06502c9fb1f18cdd823b61456b512d9ee9d8&smart=true&width=1408&height=768" alt="Los drones cargados con explosivos se han convertido en una de las principales amenazas para la Fuerza Pública en varias regiones de Colombia." height="768" width="1408"/><p>Una tercera generación de drones es la de navegación con multisensores, que tiene un complejo sistema de cámaras y pequeños radares para lograr que su posición sea más precisa y con mejores movimientos en el aire. </p><p>La cuarta generación tiene en alerta a las autoridades: se trata del manejo de drones a través de inteligencia artificial. Para expertos, esta situación puede ser crítica para el país, debido a que, mediante softwares<b>, los criminales pueden llegar a planear ataques simultáneos sin la necesidad de tener operadores de drones, sino con ataques dirigidos con esta tecnología. </b></p><p>Pueden ordenar a la inteligencia artificial evadir los escudos antidrones y sus ataques serán más precisos y efectivos. Además, por el fenómeno de criminología de Colombia, la inteligencia artificial podrá ser adaptada a <a href="https://www.semana.com/nacion/cali/articulo/candelaria-valle-del-cauca-bajo-ataque-de-drones-bomba-radares-aereos-fueron-impactados-y-las-imagenes-son-impresionantes/202620/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/cali/articulo/candelaria-valle-del-cauca-bajo-ataque-de-drones-bomba-radares-aereos-fueron-impactados-y-las-imagenes-son-impresionantes/202620/">los drones artesanales como el kamikaze, que está siendo usado en los llamados ataques enjambre para causar un mayor daño. </a></p><p>SEMANA revela con imágenes de inteligencia de las agencias de seguridad del Estado cómo ha sido la creación de los drones kamikaze. En la infografía se pueden observar las piezas que componen estos elementos terroristas. </p><p>El cuerpo del dron es adaptado con un tambor donde va el cable de fibra óptica, que impide que las autoridades lo bloqueen por radiofrecuencia. <b>Uno de los extremos del dron es adaptado a un contenedor que termina en punta, adentro de este son almacenados cerca de 80 gramos de pentolita con un detonador, que a la vez cuenta con cables conductores de energía.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MDJ277WPFRFPXHLFQ3JK3JZPUM.jpg?auth=d1a54d6c4825babd3f20451682d0f684b90d7d291d4ed9208f9d5d3d498cc6f0&smart=true&width=1280&height=720" alt="Las organizaciones criminales han incrementado el uso de drones para atacar a militares y policías a distancia." height="720" width="1280"/><p>La activación del explosivo se da cuando el dron se estrella de frente contra su objetivo con una pequeña jeringa que ha sido adaptada de manera artesanal y se comprime, fungiendo como detonante. </p><p>Como el sistema es artesanal, utilizan cinta aislante para pegar los componentes al dron y en algunas ocasiones fracasa el ataque, situación que ha llevado a los criminales a poner en marcha la estrategia de enjambre. </p><p>Los ataques con drones kamikaze se han visto en hechos recientes como el bombardeo en la estación de Policía de Guamalito, en Norte de Santander, donde la estructura quedó completamente destruida. </p><p>Para el coronel en retiro de la Policía y doctor en estudios políticos Saúl Lizarazo, quien lideró por más de una década las principales unidades antiexplosivos de la institución, el panorama de los drones con explosivos es muy preocupante. </p><p>“Es posible que en mediano plazo se implemente en Colombia en la cuarta generación de drones terroristas inteligencia artificial como un vector táctico y estratégico que permita aumentar la eficiencia de los impactos criminales de los drones, esto ya existe en otras partes del mundo como Líbano y Ucrania”, explicó.</p><p>Asimismo, explicó que adaptar la IA a los drones generará ventajas para los criminales, como reducir el número de operadores, evadir las contramedidas del Estado para bloquearlos, eliminar la metadata, masificar los ataques enjambre y llegar a las ciudades capitales. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/W3J6JC7HIRCTHFM3HWLKODOUFI.jpg?auth=e7cb68f962e1dca945834f468f6e72996e72eef73aeb469e154dcb17bd25a31f&smart=true&width=4841&height=3228" alt="El Cauca y Norte de Santander se encuentran entre las regiones más afectadas por los ataques con drones utilizados por grupos armados." height="3228" width="4841"/><p>Otra preocupación expuesta por los expertos consiste en la facilidad con que se consiguen.<b> En la actualidad, hay tutoriales en las redes sociales para armar un dron sin necesidad de acudir a un almacén de venta de estos equipos.</b></p><p>En las redes sociales es frecuente ver videos en los que se enseña cómo hacer ensambles de drones con piezas que se consiguen en cualquier tienda de electrónica y cómo hacerles adaptaciones de ganchos para soportar las cargas explosivas. </p><p>Para el coronel Lizarazo, Colombia, dentro de las estrategias que debe adoptar para hacerle frente a la guerra de los drones, <b>debe mirar la posibilidad de crear un laboratorio forense de drones. </b></p><p>“Hay que dejarlo claro: poner todas las esperanzas en un escudo antidrones es una mala decisión, porque, ante la utilización de fibra óptica y de IA, el escudo antidrones solamente se convierte en un elemento para mitigar la amenaza”, indicó. Lo que es evidente es que, mientras Colombia sigue combatiendo a los criminales con armas convencionales, <b>estos van un paso por delante, modernizando sus equipos y tecnologías con dineros de narcotráfico, minería ilegal, secuestros, extorsiones, trata de personas y demás acciones criminales. </b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/RQ4MLRGIBVA4DG7FN6I4S4U22Q.jpg?auth=427cb252c6438fe2e3cd12b1dfb000ca734cce6f3a6c893d53e3f13833418202&smart=true&width=1920&height=1080" alt="Los grupos armados han incorporado nuevas tecnologías para aumentar el alcance y la precisión de sus ataques contra la Fuerza Pública." height="1080" width="1920"/>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/5JUPNFMYFZET5KWHHFGX5WRQGM.jpg?auth=762b559db93762a80605b512a739efd5369389d5bda0c331d4a334b6d9301710&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Los ataques con drones explosivos representan un nuevo desafío para las autoridades encargadas de combatir a las organizaciones criminales.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Exclusivo: el informe de la Fiscalía, con la ubicación de los GPS de las camionetas de Sandra Ortiz, confirmarían la entrega de 3.000 millones de pesos a Iván Name. Ella lo niega]]></title><link>https://www.semana.com/nacion/articulo/exclusivo-el-informe-de-la-fiscalia-con-la-ubicacion-de-los-gps-de-las-camionetas-de-sandra-ortiz-confirmarian-la-entrega-de-3000-millones-de-pesos-a-ivan-name-ella-lo-niega/202615/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/exclusivo-el-informe-de-la-fiscalia-con-la-ubicacion-de-los-gps-de-las-camionetas-de-sandra-ortiz-confirmarian-la-entrega-de-3000-millones-de-pesos-a-ivan-name-ella-lo-niega/202615/</guid><dc:creator><![CDATA[Felipe Morales Mogollón]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:34:15 +0000</pubDate><content:encoded><![CDATA[<p>En el centro del escándalo por el saqueo de la Unidad Nacional para la Gestión del Riesgo de Desastres (UNGRD) aparece la <a href="https://www.semana.com/politica/articulo/reaparece-la-exconsejera-para-las-regiones-sandra-ortiz-y-dice-que-le-cree-a-angie-rodriguez-cuando-decides-hablar-intentan-entramparte/202642/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/reaparece-la-exconsejera-para-las-regiones-sandra-ortiz-y-dice-que-le-cree-a-angie-rodriguez-cuando-decides-hablar-intentan-entramparte/202642/">exconsejera para las Regiones Sandra Ortiz</a>, señalada dentro de la trama como “la mensajera”. Según la investigación, habría sido la encargada de llevar hasta la casa de su amigo personal y entonces presidente del Senado, Iván Name, 3.000 millones de pesos, entregados en dos pagos de 1.500 millones los días 12 y 13 de octubre de 2023. Ortiz ha negado esa versión, pero pruebas conocidas por <i>SEMANA</i> pondrían en duda su relato.</p><p>El millonario soborno, presuntamente, buscaba que Name facilitara el trámite de las reformas del gobierno del presidente Gustavo Petro, que apenas comenzaba, y apoyara la elección de Vladimir Fernández, entonces secretario jurídico de la Presidencia, para la Corte Constitucional, según reveló<i> SEMANA </i>en abril de 2025.</p><p>Sin embargo, <a href="https://www.semana.com/nacion/articulo/versiones-cruzadas-sandra-ortiz-recupero-la-libertad-por-claras-fallas-de-la-fiscalia-pero-ha-cambiado-su-testimonio/202630/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/versiones-cruzadas-sandra-ortiz-recupero-la-libertad-por-claras-fallas-de-la-fiscalia-pero-ha-cambiado-su-testimonio/202630/">las declaraciones de la exconsejera para las Regiones han sido contradictorias</a>; pasó de declararse inocente a reconocer que fue la enviada del Gobierno por su cercanía con Name. Luego afirmó que con la plata se buscaba la elección de Fernández, pero también niega que haya ido a entregar el dinero.</p><p><b>Esa afirmación la hizo con base en las pruebas que recaudó la Fiscalía</b>, en las cuales el celular del exsubdirector de la UNGRD, Sneyder Pinilla, no reportaba conexión con las antenas de telefonía celular en la zona donde está ubicado el apartamento de Name, en el edificio Bassel I, en Santa Bárbara Central, localidad de Usaquén. </p><p><b>Con este argumento, Ortiz afirmó:</b> “Nosotros demostramos ante la juez que el desplazamiento de Sneyder, que supuestamente dice que llevó un dinero conmigo a la casa de Name, nunca pasó. Lo demostramos técnicamente, y no con pruebas de nosotros, sino con pruebas de la propia Fiscalía”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WNEA5N3RDNHFZBROR22TPQRJLQ.jpg?auth=6e4891ed4041483f3d3abe646678286ef83a4f531bbd38960908a06f19f9f0d4&smart=true&width=1280&height=720" alt="Olmedo López y Sneyder Pinilla contaron cómo se entregaron 3.000 millones de pesos a Iván Name, por orden de Carlos Ramón González. Su relato coincide con los registros de los GPS." height="720" width="1280"/><h2>El informe del GPS </h2><p>La afirmación de Ortiz se empantana con un informe de Policía Judicial de la propia Fiscalía, en poder de SEMANA, en el que se cruzaron los datos de los teléfonos celulares con los GPS de las camionetas del esquema de seguridad de la exconsejera para las regiones, que parecen demostrar lo contrario.</p><p>El documento de 53 páginas, que busca establecer qué ocurrió el 12 y 13 de octubre de 2023, se nutrió con “información de las coordenadas geográficas o de señal GPS de vehículos de los esquemas de seguridad”.</p><p>Los investigadores advierten en el informe que los GPS de los automóviles de seguridad de Ortiz <b>“sí cuentan con la información suficiente para representar las trayectorias de los vehículos”.</b> Por el contrario, los carros de Sneyder Pinilla y de Olmedo López no permitían reconstruir la ruta completa.</p><p>Así, los carros asignados a Ortiz, de placas KGF361 y OBG165, se convierten en la prueba clave para desmentir a la exconsejera. Pero hay más: el informe estudió otra fuente: el desplazamiento de las camionetas oficiales que la acompañaban.</p><p><b>Los movimientos del 12 de octubre pueden dividirse en dos momentos</b>. Primero, la llegada del entonces director de la UNGRD, Olmedo López, y del exsubdirector <a href="https://www.semana.com/nacion/articulo/corrupcion-en-la-ungrd-contraloria-emitio-fallo-contra-olmedo-lopez-y-sneyder-pinilla-por-la-compra-de-80-carrotanques-para-la-guajira/202611/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/corrupcion-en-la-ungrd-contraloria-emitio-fallo-contra-olmedo-lopez-y-sneyder-pinilla-por-la-compra-de-80-carrotanques-para-la-guajira/202611/">Sneyder Pinilla</a> a las Residencias Tequendama, donde vivía Sandra Ortiz. Después, el desplazamiento con el dinero en efectivo hasta el edificio Bassel I, donde estaba ubicado el apartamento del senador Iván Name. Según el documento, todo ocurrió entre las 2:30 y las 4:30 de la tarde.</p><p>El primer encuentro, en Residencias Tequendama, se dio entre las 3:15 y las 3:46 de la tarde. Las imágenes del informe muestran las áreas de cobertura de las celdas y las trayectorias de los vehículos intervinientes. </p><p>Ahí viene la clave: <b>el informe afirma que, una vez recibido el dinero, se produjo el desplazamiento hasta Bassel I</b>. “Entre las 3:46 y las 4:12 de la tarde, del 12 de octubre de 2023, se da el transporte del dinero entregado por Olmedo López y Sneyder Pinilla a Sandra Ortiz (…) los vehículos con placas KGF 361 y OBG 165 realizaron el desplazamiento entre los lugares indicados”; todo esto se reconstruyó con los GPS de las camionetas.</p><p><b>Al edificio Bassel I llegaron a las 4:12 y la permanencia fue de apenas unos minutos, hasta las 4:35</b>, tiempo en el que habrían entregado los primeros 1.500 millones de pesos. Según el documento, esa conclusión se obtiene al correlacionar la información de las celdas que interactuaron con el teléfono asociado a Ortiz y los registros de GPS de las placas KGF361 y OBG165. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PUZDN6D575F7REQL3VCUUI62YM.jpg?auth=a48cc0c326eb400037b6a5960e5eab750406fd877d3ab011e9340f172de6e7dc&smart=true&width=1280&height=720" alt="Exconsejera para las Regiones Sandra Ortiz." height="720" width="1280"/><h2>La segunda entrega</h2><p>El informe inédito reconstruye también lo ocurrido el 13 de octubre, cuando se dio la segunda entrega de 1.500 millones de pesos. Esta vez Sneyder Pinilla habría llegado a Residencias Tequendama a las 8 de la noche. Luego, a las 8:30, <b>“Sandra Ortiz, una vez recibe la segunda cuota, inicia el desplazamiento con destino al edificio Bassel I”</b>, llegando sobre las 9:00 de la noche. </p><p>Pero el informe va más allá de la multimillonaria entrega de dinero a Name. También reconstruyó fechas clave del saqueo de la UNGRD, entre ellas las de los encuentros que <a href="https://www.semana.com/nacion/articulo/defensa-de-olmedo-lopez-asevera-que-fue-atacado-por-el-expresidente-de-la-republica-el-exdirector-de-la-ungrd-y-el-exministro-de-hacienda/202603/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/defensa-de-olmedo-lopez-asevera-que-fue-atacado-por-el-expresidente-de-la-republica-el-exdirector-de-la-ungrd-y-el-exministro-de-hacienda/202603/">Olmedo López</a> llamó “cónclaves” y en los que, según su testimonio, se impartieron órdenes para comprar congresistas.</p><p>El 21 de septiembre es el día que, cuenta Olmedo López, recibió la orden corrupta por parte del entonces director del Dapre, Carlos Ramón González. Según su versión, antes del Consejo de Ministros, Ortiz lo abordó y le preguntó si había hablado con González. <b>López reconoce que recibió la orden, pero que ella solo se encargaría de lo de Name, su amigo.</b></p><p>En ese caso, los investigadores cruzaron las celdas de los teléfonos con el GPS del vehículo JVV973, perteneciente al esquema de seguridad de Ortiz. El documento concluye que “existe una coincidencia espacio-temporal entre Sandra Ortiz, Carlos Ramón González e Iván Name (…) coinciden las coberturas de las celdas de las personas objeto de análisis con la trayectoria de la señal GPS de los vehículos asociados al esquema de seguridad de cada persona”. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/L3BMTLE76JBEBFEIKPWNSCLWOY.jpg?auth=702dfcf62e91ca376dcedc06c4b81f061f9bd838ee725093410a86aca119a14b&smart=true&width=1280&height=720" alt="Sandra Ortiz ha negado esa versión, pero pruebas conocidas por SEMANA pondrían en duda su relato." height="720" width="1280"/><h2>La testigo </h2><p>El asunto se pone peor para Ortiz si se tiene en cuenta la <b>declaración de la subintendente de la Policía Yennifer Labastidas, quien formó parte del esquema de la exconsejera para la época de los hechos </b>y confirmó la cuestionada entrega del 12 de octubre.</p><p>“Ese día cruzamos y bajamos por la calle 26, tomamos la carrera 30 al norte; lo que recuerdo es que llegamos al Edificio Bassel I, recuerdo que dentro del desplazamiento mencionaron que íbamos a donde el doctor Name”, se lee en el testimonio en poder de <i>SEMANA.</i></p><p><b>Para la cita del 13 de octubre, que fue en la noche, la subintendente Labastida dio un dato adicional:</b> en este encuentro estuvo también presente el prófugo de la justicia y exdirector del Dapre Carlos Ramón González. En el edificio Bassel I estaban sus escoltas y camionetas. </p><p>González tiene vigente una orden de captura, pero se encuentra en condición de asilo en Nicaragua, apoyado por el pasado gobierno del expresidente Gustavo Petro. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PSJBSDDXP5H5XDE7WY72FCBCXM.jpg?auth=4e0da92b8d5ef670a09c0e513496e134b59bc69a42cddb8535d5de64ac3bc544&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Sandra Ortiz, en una de sus versiones, negó la entrega del dinero y alegó errores en la ubicación del celular de Sneyder Pinilla. El GPS de sus camionetas, sin embargo, la sitúa con precisión. ]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Miguel Quintero está contra las cuerdas y este lunes se define si es enviado a prisión: la Fiscalía dice tener “pruebas contundentes”]]></title><link>https://www.semana.com/nacion/medellin/articulo/miguel-quintero-esta-contra-las-cuerdas-y-este-lunes-se-define-si-es-enviado-a-prision-la-fiscalia-dice-tener-pruebas-contundentes/202610/</link><guid isPermaLink="true">https://www.semana.com/nacion/medellin/articulo/miguel-quintero-esta-contra-las-cuerdas-y-este-lunes-se-define-si-es-enviado-a-prision-la-fiscalia-dice-tener-pruebas-contundentes/202610/</guid><dc:creator><![CDATA[Juan Diego Valencia Martínez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:30:10 +0000</pubDate><content:encoded><![CDATA[<p><a href="https://www.semana.com/nacion/medellin/articulo/fiscal-aseguro-que-infiltrados-extrajeron-material-reservado-de-la-investigacion-contra-miguel-quintero-calle-estos-son-los-detalles/202641/" target="_blank" rel="" title="https://www.semana.com/nacion/medellin/articulo/fiscal-aseguro-que-infiltrados-extrajeron-material-reservado-de-la-investigacion-contra-miguel-quintero-calle-estos-son-los-detalles/202641/">Miguel Quintero Calle</a> podría quedarse sin aliados para demostrar su inocencia en el escándalo de corrupción del Área Metropolitana del Valle de Aburrá que lo tiene a un paso de ser enviado a prisión. </p><p>Algunos de los amigos que había logrado desde 2016 en el Hospital La María y en la Dirección de Planeación de la Gobernación de Antioquia, al verse comprometidos con la justicia, decidieron colaborar con la Fiscalía y ahora son testigos en su contra.</p><p><b>El médico Misael Cadavid y la exfuncionaria Laura María Higuita son dos ejemplos.</b> Sus testimonios son parte del cúmulo de pruebas que el ente acusador expuso el miércoles en su contra.</p><p>La fiscal 40 decidió pedirle al juez 27 penal municipal con función de control de garantías que de los cuatro investigados en esa misma causa<a href="https://www.semana.com/amp/nacion/medellin/articulo/dia-clave-para-miguel-quintero-este-miercoles-podria-definirse-si-va-o-no-a-la-carcel-estas-son-las-pruebas-que-tiene-en-su-contra-la-fiscalia/202614/" target="_blank" rel="" title="https://www.semana.com/amp/nacion/medellin/articulo/dia-clave-para-miguel-quintero-este-miercoles-podria-definirse-si-va-o-no-a-la-carcel-estas-son-las-pruebas-que-tiene-en-su-contra-la-fiscalia/202614/"> envíe solamente a Miguel Quintero Calle</a> a la cárcel por considerar que puede obstruir el proceso, dado que podría escapar a otro país. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/B7OHBPLHO5E2VHHD6NFUPR3LQY.jpg?auth=fbb798fe741695912d364ad41c3b6355df1aa5b3c4bb68fbab59d6654f3844a5&smart=true&width=1280&height=720" alt="Miguel Quintero Calle, hermano del exalcalde de Medellín, será imputado por interés indebido en celebración de contratos y peculado por apropiación de recursos." height="720" width="1280"/><p>Los otros tres inmersos en la investigación son la abogada Vanessa Álvarez, Álvaro Villada y el empresario Sebastián de Dios Ortega Urán. Estos dos últimos podrían ser la espada de Damocles de Miguel Quintero. </p><p><b>Los testimonios entregados a la Fiscalía darían cuenta de una ruptura en el grupo de WhastsApp ‘Los Amigos’, en el que Miguel, Álvaro y Sebastián reían</b>, bromeaban, daban cuenta de los lujos logrados a través de lo que el ente acusador ha considerado un entramado criminal para saquear los recursos del Área Metropolitana.</p><p><b>El ente acusador aportó un chat contundente de Laura María Higuita, en el cual asegura:</b> “En una ocasión, el 10 de junio de 2021, Álvaro me dice que no quería tener a Sebastián Ortega de enlace y que le tenía que rendir cuentas a Ortega y que él le había expresado eso a Miguel y también me contaba que Miguel ya prefería andar con él y se había alejado de nosotros, y que le entregaba dinero y razones era a través de Sebastián Ortega. Cuando Álvaro Villegas salió del AMVA me contó que Miguel ya puso a Ortega a cobrar dineros y que ya él no pudo cobrar cosas que habían quedado pendientes”.</p><p><b>Al evitar pedirle al juez que se envíe a prisión a Álvaro Villada, en consideración de algunos expertos</b>, la fiscal dejó abierta la puerta para que este siga el camino de Misael Cadavid, de Laura María Higuita, María Yaneth Rúa y Juan Alberto Cardona, y pase del lado de los acusados a la silla de los testigos.</p><p>La información que posee Villada no es poca. Lo revelado en la audiencia del miércoles, cuando la fiscal y la procuraduría pidieron cárcel para Miguel Quintero, así lo evidencia.</p><p>“<b>Acá se metía mucha gente para pagar favores, lo mismo pasaba con Encicla</b>”, dijo en uno de los interrogatorios Laura María. Encicla es el sistema de bicicletas públicas del Valle de Aburrá, también operado por el Área Metropolitana.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HCHYUHAJM5DO5CYTTDYFZTQJRM.jpg?auth=227fccd1e9753db88d39b813bd39eb93a7c596519cd2ab4b2226b3318c2950c3&smart=true&width=1440&height=1080" alt="Miguel Quintero Calle, investigado por el escándalo de corrupción del Área Metropolitana." height="1080" width="1440"/><p>Es decir, que el escándalo no tendría que ver nada más con lo ocurrido en las subdirecciones ambientales y financieras que, según la fiscal, estaban bajo el control de Miguel Quintero y podría haberse extendido a otras dependencias y otros entes descentralizados de la Alcaldía de Medellín durante el mandato de Daniel Quintero Calle.</p><p><a href="https://www.semana.com/nacion/medellin/articulo/tras-declararse-inocente-miguel-quintero-entro-en-la-lista-de-imputados-por-escandalo-del-area-metropolitana-fiscalia-pedira-carcel/202613/" target="_blank" rel="" title="https://www.semana.com/nacion/medellin/articulo/tras-declararse-inocente-miguel-quintero-entro-en-la-lista-de-imputados-por-escandalo-del-area-metropolitana-fiscalia-pedira-carcel/202613/">Este lunes, 21 de septiembre, podría conocerse la suerte de Miguel Quintero ante la justicia. </a></p><p>Pero faltaría dejar correr el tiempo para saber si aún tiene aliados o si los pocos amigos que le quedan se siguen yendo del lado de la justicia y comienzan a cantar para lograr una condena en su contra que, tal cual dijo la fiscal en la audiencia de solicitud de medida de aseguramiento, <b>podría ser superior a los cinco años de cárcel. </b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EJAHEJRDP5D2PKTHCTK6DYAZQI.jpg?auth=2899faacd3d05f3982fc24fd6a8629b75b381f8e5f21e9d972b65fd4bd6db14c&amp;smart=true&amp;width=2924&amp;height=1824" type="image/jpeg" height="1824" width="2924"><media:description type="plain"><![CDATA[Miguel Quintero, hermano del exalcalde de Medellín, enfrenta un proceso judicial por varios delitos.]]></media:description></media:content></item><item><title><![CDATA[En Colombia hay una red de trata de pilotos. SEMANA conoció los detalles de una investigación que tiene a cerca de 20 pilotos desaparecidos y muertos. Las familias claman por ayuda]]></title><link>https://www.semana.com/nacion/articulo/en-colombia-hay-una-red-de-trata-de-pilotos-semana-conocio-los-detalles-de-una-investigacion-que-tiene-a-cerca-de-20-pilotos-desaparecidos-y-muertos-las-familias-claman-por-ayuda/202603/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/en-colombia-hay-una-red-de-trata-de-pilotos-semana-conocio-los-detalles-de-una-investigacion-que-tiene-a-cerca-de-20-pilotos-desaparecidos-y-muertos-las-familias-claman-por-ayuda/202603/</guid><dc:creator><![CDATA[César Jiménez Flechas]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:28:03 +0000</pubDate><content:encoded><![CDATA[<p>La historia de dos jóvenes que a mediados de agosto viajaron a Puerto Carreño, Vichada, a tomar unas clases de aviación y desaparecieron, lejos de ser un hecho fortuito o una tragedia familiar, resultó ser un fenómeno fatalmente rutinario en las zonas de frontera. Los pilotos, que hoy son decenas, estarían terminando reclutados y asesinados. </p><p><b>SEMANA habló con autoridades, investigadores y familias que llevan buscando a sus hijos desaparecidos hace meses</b>, incluso años, y revelaron un dato estremecedor: todos tienen un punto en común, fueron reclutados por una red de trata de pilotos. </p><p>La historia es así. En distintas ciudades de Colombia hay <a href="https://www.semana.com/amp/hablan-las-marcas/articulo/aeroccidente-la-escuela-de-aviacion-que-fortalece-la-formacion-de-sus-estudiantes-con-practicas-reales/202615/" target="_blank" rel="" title="https://www.semana.com/amp/hablan-las-marcas/articulo/aeroccidente-la-escuela-de-aviacion-que-fortalece-la-formacion-de-sus-estudiantes-con-practicas-reales/202615/">escuelas de aviación</a> y los estudiantes que están en los últimos niveles o en vísperas de la graduación, son contactados por ‘reclutadores’, delincuentes que se ubican cerca de las academias para captar a las futuras víctimas, previa información entregada por infiltrados en esos institutos.</p><p>Con la promesa de millonarias remuneraciones a cambio de viajes cortos entre Colombia y Venezuela, principalmente, la red de trata de pilotos logra convencer a las víctimas de ganarse en un par de semanas lo que podrían recibir en un año de trabajo: <b>el cheque en blanco para reponer lo invertido en años de estudio y horas de vuelo en prácticas</b>.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SC2ZMQRZJFE3NFZ77ZIRQAP7KQ.jpg?auth=8b5c3d5b487fb86e3f8c8f910ea4299d7185f213a83bc5e812826831aa8a456b&smart=true&width=1280&height=720" alt="Los reclutadores, de acuerdo con las denuncias, están en las escuelas de aviación y universidades. Piden a la Fiscalía investigar." height="720" width="1280"/><p>En la supuesta nómina de estas organizaciones criminales, los pilotos son invitados a distintos puntos en zonas de la frontera entre Colombia, Venezuela, Panamá, Perú y Brasil, donde reciben una serie de indicaciones, el motivo real de hacer los vuelos y los montos que podrían percibir: entre 30 y 50 millones de pesos.</p><p>Los viajes se cumplen y, cuando llega el momento del pago, los <a href="https://www.semana.com/nacion/articulo/semana-revela-cruda-realidad-del-accidente-de-la-avioneta-en-el-choco-tragedia-detras-del-impacto/202626/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/semana-revela-cruda-realidad-del-accidente-de-la-avioneta-en-el-choco-tragedia-detras-del-impacto/202626/">pilotos desaparecen</a>. Allí arranca la tragedia para las familias que, en algunos casos, fueron informadas por los mismos pilotos sobre algunos recorridos y la actividad a la que fueron invitados, obviamente ocultando detalles.</p><p>Óscar Mauricio Carvajal apenas estaba tomando las clases de aviación y terminó en esta red de delincuentes que, de acuerdo con informes de la Fiscalía y denuncias de otros familiares, tendría más de 40 pilotos desaparecidos, sin contar los que han encontrado muertos y envueltos en vinipel.</p><p>“<b>No es extraño en esta zona del país, es más común de lo que se puede imaginar</b>. Hace algunos meses, un piloto fue encontrado muerto y su cuerpo envuelto en vinipel. Luego llamaron a la familia para darle la ubicación”, aseguraron fuentes consultadas por<i> SEMANA</i> en el departamento del Vichada.</p><p>El caso del piloto asesinado y envuelto en vinipel, irónicamente, se convierte en un aliciente para las familias que llevan años sin saber qué pasó con sus seres queridos.<b> </b>En muy pocas ocasiones la red de trata de pilotos revela detalles de lo que pasó con los aviadores reclutados.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/2XKCYZXCTVGQ3OF4AATPALPYBQ.jpg?auth=d2fd1544b5b61aee88c58fa3e1ccfc95e0d44a98cfd29c186b48fbdcd0ae79f6&smart=true&width=1280&height=720" alt="Los pilotos serían contactados para realizar vuelos ilegales y, posteriormente, algunas víctimas habrían sido secuestradas y asesinadas." height="720" width="1280"/><p>“Las familias apenas reciben algunas llamadas, incluso extorsiones, advirtiendo que tienen a sus hijos secuestrados y que los podrían liberar a cambio de pagos hasta de 15 millones de pesos. Todo resulta ser una farsa que incluye hasta fotomontajes”, revelaron investigadores de la Fiscalía.</p><p><b>La situación que advierten las autoridades la vivió la familia de Óscar Mauricio, sin siquiera haber cumplido un mes de desaparecido</b>. Empezaron las llamadas asegurando que sabían dónde se encontraba el joven y cómo podrían recuperarlo a cambio de un millonario pago; incluso compartían fotos de cuerpos descompuestos a la orilla de un río.</p><p><b>La familia de Óscar Mauricio, que no ha tenido respuesta de la Fiscalía, la Cancillería ni de las autoridades del Vichada, recibió llamadas desde Venezuela</b>, en las que advierten la aparición de los cuerpos e incluso les compartieron las imágenes para explicar la delicada situación que se vive en la zona de frontera, prácticamente un catálogo de cadáveres donde las víctimas tienen que elegir a su familiar desaparecido.</p><p><b>Los familiares de las víctimas de esta red de trata de pilotos terminaron en una especie de comunión</b>; se convirtieron en un grupo con distintas tragedias, pero con aterradores hechos comunes en sus casos; por ejemplo, identificar que la persona encargada de reclutar a sus hijos resultó ser la misma con la que sus familiares posaban en diferentes espacios geográficos, como si se tratara de un amigo, pero que en realidad era el gancho que los llevaba a la tragedia. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TRLBZ7ZMTZF4PHNRJZQETJOUTE.jpg?auth=92dc57b5ba210b93347dade95e49eeea957ce588a6ef27edce306fa179374331&smart=true&width=1280&height=720" alt="Cerca de 20 personas estarían desaparecidas o muertas." height="720" width="1280"/><p>“Llamé a la familia y me contaron de una persona que supuestamente era amigo de él, pero resultó ser el mismo delincuente que contactó a mi hijo y le hizo la invitación para trabajar en una supuesta empresa privada, que resultó ser la organización criminal que lo mantiene desaparecido”, dijo el padre de uno de los pilotos que está en esta situación hace dos años.</p><p><b>La trágica coincidencia entre las dos familias que buscaban a sus hijos desaparecidos</b> está en ese reclutador que, en 2022, estaba en Santa Marta y, en 2026, en Bogotá, con el único objetivo de convencer a jóvenes pilotos de ponerse al servicio de organizaciones criminales dedicadas al narcotráfico. Sin embargo, en el caso de Óscar Mauricio, algunos hechos no cuadran. </p><p><b>El joven estudiante de la Universidad de La Salle no era piloto, como las dos docenas de desaparecidos.</b> Apenas estaba en clases de aviación, pero terminó víctima de esta red criminal. ¿Por qué?, se preguntan las familias de los otros pilotos que, sin saberlo, fueron testigos de cómo el reclutador prácticamente se metió en sus casas con la fachada de compañero de estudio. </p><p>La otra escena fuera del guion en el caso de Óscar Mauricio es que la víctima siempre tuvo comunicación con la familia. Incluso cuando completó algunos desplazamientos entre Colombia y Venezuela con la carga que, según las versiones preliminares, incluía coltán y cocaína. </p><p><b>La víctima logró dejar un registro gráfico de su recorrido, una crónica de su experiencia en la avioneta</b> y los puntos que se marcaban en el GPS de la aeronave. Sin saberlo, estaba dejando las pistas para que su familia sumara elementos de prueba a la denuncia radicada en la Fiscalía a través de una plataforma virtual, pues en las sedes del ente acusador los rechazaron.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/5QDT2N4TABBZRGJREYENIZDKTE.jpg?auth=56511f8d4fca66a128765a7c65b077d017fbda0f26c1a0c7d0977aa1372a2405&smart=true&width=1280&height=1707" alt="Droga con código QR." height="1707" width="1280"/><p>“Parezco niño estrenando juguete… como para ponerlo en la historia… sabes que estuve pensando, si así de delicioso se siente estar en un Cessna 310, qué tal será un G4 o un G550”, dicen los mensajes que compartía Óscar Mauricio con su familia, apenas unas horas antes de su desaparición. </p><p><b>Las familias advirtieron que la Fiscalía agrupó una serie de denuncias por la desaparición de pilotos </b>en distintos puntos de la frontera y con circunstancias parecidas: un reclutador, un jugoso ofrecimiento de dinero y la desaparición de las víctimas. Un fiscal de la Dirección de Derechos Humanos está a cargo del proceso y aquí las familias advierten otra tragedia.</p><p>“Nos ha tocado radicar tutelas para que la Fiscalía responda qué ha pasado con las investigaciones y ahora nos encontramos con que cambian a los fiscales, que tenemos que esperar hasta que lean el expediente antes de tomar alguna decisión. Son años sin resultados”, advierten las víctimas. </p><p><b>Mientras la investigación salta de mano en mano en despachos de fiscales y las familias pasan años sin respuesta</b>, más víctimas se siguen sumando al listado de pilotos reclutados y desaparecidos por esta red criminal que las familias lograron identificar, pero que la Fiscalía no ha podido desarticular.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/RRA2X7VW3VFSVBV5VBPHR46BAE.jpg?auth=bf572386279520b6adecea1e4882a58b3450382bf01d0b3eceaa1ddbdab92cbe&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[La Fiscalía acumuló las investigaciones y denuncias de familias por la desaparición de pilotos en distintos puntos del país. Sin embargo, las víctimas advierten que los procesos no avanzan y no tienen respuesta de las autoridades.]]></media:description></media:content></item><item><title><![CDATA[La Contraloría advierte demoras en obras del Metro de Bogotá que pondrían en riesgo su entrada en operación en marzo de 2028]]></title><link>https://www.semana.com/nacion/bogota/articulo/la-contraloria-advierte-demoras-en-obras-del-metro-de-bogota-que-pondrian-en-riesgo-su-entrada-en-operacion-en-marzo-de-2028/202606/</link><guid isPermaLink="true">https://www.semana.com/nacion/bogota/articulo/la-contraloria-advierte-demoras-en-obras-del-metro-de-bogota-que-pondrian-en-riesgo-su-entrada-en-operacion-en-marzo-de-2028/202606/</guid><dc:creator><![CDATA[Damián Esteban Landínez Cañón]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:26:06 +0000</pubDate><content:encoded><![CDATA[<p><i>SEMANA </i>conoció en exclusiva un preocupante informe de un organismo de control que se desprende del seguimiento permanente que la entidad ha venido adelantando a la construcción de la Línea 1 del <a href="https://www.semana.com/nacion/bogota/articulo/bogota-en-modo-metro-empezara-a-cambiar-la-ciudad-antes-de-existir-este-es-el-ambicioso-plan-de-la-alcaldia/202600/" target="_blank" rel="" title="https://www.semana.com/nacion/bogota/articulo/bogota-en-modo-metro-empezara-a-cambiar-la-ciudad-antes-de-existir-este-es-el-ambicioso-plan-de-la-alcaldia/202600/">metro de Bogotá</a>, las troncales alimentadoras y complementarias, los avances físicos, financieros y contractuales de la obra, así como los principales riesgos en su ejecución.</p><p>El documento, en poder de esta revista,<b> revela que tres de los ocho componentes principales del megaproyecto presentan serios atrasos en su ejecución frente a lo programado:</b> la malla vial y el espacio público tienen un retraso del 48 por ciento, sistemas y equipos del 18 por ciento, y estaciones del metro y edificios de acceso con el mismo 18 por ciento de demora. </p><p>En el seguimiento al proyecto de la Línea 1 del metro,<b> el organismo también detectó 16 modificaciones en el Plan de Ejecución que no se han visto reflejadas en las fechas de operación (marzo 2028)</b>, atrasos por reprogramaciones sin recuperación de obras y una advertencia concreta: esta situación podría aumentar el riesgo de que se incumpla con el inicio de su funcionamiento, proyectado para marzo de 2028.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LN4NNURCLJBYLDGEDVY3APPXVM.JPG?auth=5924ee15e3a69ff1e32f43841ce4066600e4997c2341f1f56690bfd6df112fa5&smart=true&width=7116&height=4791" alt="Metro de Bogotá, línea 1, avenida Caracas." height="4791" width="7116"/><p><b>Aunque el informe aclaró que la obra sigue avanzando</b>, los retrasos reportados en la construcción se han dado principalmente en componentes considerados críticos: equipos, estaciones y sistemas que permiten tener el control de los trenes. </p><h2>Metro de Bogotá reconoce retrasos </h2><p><i>SEMANA</i> se contactó con Leonidas Narváez, gerente de la Empresa Metro de Bogotá, quien <b>aclaró que los otros componentes como el patio taller en Bosa, el material rodante y el viaducto “jalonan la ejecución”</b>, pero reconoció “preocupación” en los otros elementos que han venido presentando demoras, pese a que integran todo el sistema. </p><p>“Hemos llamado la atención al <a href="https://www.semana.com/nacion/articulo/exclusivo-escandaloso-video-muestra-a-empresario-chino-del-consorcio-metro-linea-1-de-bogota-recibiendo-dinero-de-una-presunta-extorsion-en-bolsas-con-efectivo/202638/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/exclusivo-escandaloso-video-muestra-a-empresario-chino-del-consorcio-metro-linea-1-de-bogota-recibiendo-dinero-de-una-presunta-extorsion-en-bolsas-con-efectivo/202638/">consorcio chino </a>para que haya un ejercicio de integración, que es lo más importante en estos dos meses que nos faltan, para que la obra civil, comunicaciones y sistemas se integren y permitan avanzar a los ritmos que teníamos previstos”, explicó Narváez.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/RTGFIY7M5ZBMDGS77UXIHRM3FQ.jpg?auth=1f9c131a1be16dc5894f4fddaf5f35ae6ba5c1121c131122f3bb599be28a3d81&smart=true&width=1000&height=530" alt="Leonidas Narváez, gerente de la Empresa Metro de Bogotá." height="530" width="1000"/><p><a href="https://www.semana.com/nacion/articulo/empresa-metro-de-bogota-rechaza-presuntos-actos-de-corrupcion-revelados-por-semana-y-anuncia-denuncia-penal-ante-la-fiscalia/202644/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/empresa-metro-de-bogota-rechaza-presuntos-actos-de-corrupcion-revelados-por-semana-y-anuncia-denuncia-penal-ante-la-fiscalia/202644/">La Empresa Metro de Bogotá también afirmó que ha enviado oficios</a> y ha tomado todas las medidas necesarias para que los responsables detrás de la obra inicien las acciones necesarias que permitan solventar la situación que atraviesa el metro de Bogotá. </p><p>Narváez señaló que esas demoras se han dado por “<b>un problema de falta de gerencia, de personal calificado y de personal no calificado </b>para incrementar las actividades dentro de las estaciones, porque los equipos (...) están comprados, pero si no terminan las edificaciones, no los vamos a tener montados”.</p><p><b>Narváez advirtió al consorcio chino que si no se cambian las acciones y no se fortalece el rendimiento de la obra sobre las estaciones y los componentes</b> críticos, se estaría generando el riesgo de no cumplir con el calendario estipulado. Sin embargo, aseguró que hasta este momento la fase de pruebas inicia el 17 de septiembre de 2027 y la operación se mantiene en el 14 de marzo de 2028. </p><h2>¿Qué dice el Gobierno nacional?</h2><p>Aunque esas novedades en el avance del megaproyecto fueron detectadas desde diciembre del año pasado, desde la Gerencia para Bogotá, designada por el presidente Abelardo De La Espriella, manifestaron que le harán un seguimiento riguroso a la alerta de la Contraloría Distrital. </p><p>Para la obra del metro de Bogotá, <b>la nación hizo un aporte de 15 billones de pesos, el Distrito destinó más de 7 billones </b>y el concesionario se hará cargo de casi 4 billones que garantizan el funcionamiento diario, la administración, la operación de los trenes y el mantenimiento del sistema. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/NODZD7XYYVABHHGNVRFNPILWQM.jpg?auth=bf0538a347cc813c3989c171fe152ef2b0f73207a12464f1569aaa41d79a7967&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Leonidas Narváez, gerente de la Empresa Metro de Bogotá, reconoció la preocupación por los retrasos, pero considera que, si se toman medidas, el calendario de entrega se mantendrá.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Shakira hace historia en Madrid: “Gracias mi gente latina”]]></title><link>https://www.semana.com/gente/articulo/shakira-hace-historia-en-madrid-gracias-mi-gente-latina/202634/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/shakira-hace-historia-en-madrid-gracias-mi-gente-latina/202634/</guid><dc:creator><![CDATA[Lorena Mahecha S. ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:23:34 +0000</pubDate><content:encoded><![CDATA[<p>España esperaba a <a href="https://www.semana.com/gente/articulo/no-tengo-vida-social-shakira-habla-de-su-realidad-en-la-solteria-y-sus-exigentes-planes/202624/" target="_blank" rel="" title="https://www.semana.com/gente/articulo/no-tengo-vida-social-shakira-habla-de-su-realidad-en-la-solteria-y-sus-exigentes-planes/202624/">Shakira </a>desde hacía ocho años. Esa fue su ausencia en los escenarios de ese país. El anhelado reencuentro se dio al caer la noche del viernes 18 de septiembre, cuando la dimensión de la apuesta de la artista se hizo evidente: cerca de 55.000 personas llegaron para el primero de los 12 conciertos de su residencia musical en Madrid, la capital española. Una temporada programada para cuatro fines de semana y concebida para extender la experiencia más allá del escenario.</p><p>A las 8:45 de la noche llegó la primera señal con La fuerte. <a href="https://www.semana.com/gente/articulo/shakira-hace-historia-en-madrid-asi-fue-la-primera-noche-de-su-residencia-entre-lagrimas-cumbia-y-orgullo-colombiano/202658/" target="_blank" rel="" title="https://www.semana.com/gente/articulo/shakira-hace-historia-en-madrid-asi-fue-la-primera-noche-de-su-residencia-entre-lagrimas-cumbia-y-orgullo-colombiano/202658/"><b>Shakira apareció en escena y abrió el concierto </b></a><b>con una frase que resumía el evento: “¡Buenas noches, Madrid!”</b>. A partir de ahí, el Iberdrola Music, el recinto musical que recibe a la residencia de la colombiana, se convirtió en un coro multitudinario. Sonaron TQG, Hips Don’t Lie, Chantaje, Pies descalzos y Antología, canciones que atraviesan distintas etapas de una carrera construida sobre la mezcla de sonidos, épocas y públicos.</p><p><b>La residencia ocupa 30 hectáreas de terreno, equivalentes a 220.000 metros cuadrados, distribuidos en nueve pabellones.</b> Para hacer posible el montaje se contrataron 10.000 personas y la previsión es recibir 55.000 asistentes por noche. Se esperan, en total, alrededor de 660.000 personas. Las cifras dimensionan la operación, pero no alcanzan a explicar por sí solas lo que Madrid estaba viviendo. </p><p><b>La escala se percibía tanto en el escenario como en los espacios que rodeaban a los asistentes desde muy temprano ese mismo día</b>. “Hoy es un día para celebrar porque estamos cerca de lo que es uno de los mayores acontecimientos nunca hechos en la historia de la música en España”, dijo Pino Sagliocco, presidente de Live Nation España, a SEMANA.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KWYNXSAHG5ECHJUK3ZZD6L4UGQ.webp?auth=6eb455a33f920bf6af87c46b5b83e33511339e25c2a7ccff6bf2762e0d79c503&smart=true&width=800&height=450" alt="Shakira buscó que el Macondo Park fuera mucho más que un simple recinto para celebrar conciertos." height="450" width="800"/><h2>Una residencia que se expande</h2><p>La idea de la residencia no termina en el escenario. <a href="https://www.semana.com/gente/articulo/mas-grande-que-30-campos-de-futbol-asi-es-macondo-park-el-parque-tematico-que-shakira-construyo-en-madrid-para-sus-conciertos/202659/" target="_blank" rel="" title="https://www.semana.com/gente/articulo/mas-grande-que-30-campos-de-futbol-asi-es-macondo-park-el-parque-tematico-que-shakira-construyo-en-madrid-para-sus-conciertos/202659/">La colombiana ideó una ciudad musical llamada Macondo Park</a>, un espacio planteado como una celebración de la cultura latinoamericana en la que conviven música, gastronomía, literatura, arte, moda, flamenco y espacios para niños y seguidores de la artista. El público puede recorrer ese universo antes de entrar al concierto y encontrar distintas formas de acercarse a la cultura que inspira el proyecto.</p><p>Javier Tomás, director nacional de Live Nation Creative, explica que uno de los puntos centrales es el pabellón llamado El Museo, dedicado a la cantante, concebido como un homenaje a su trayectoria. “<b>Es un pabellón que hemos construido en torno a la vida de Shakira, es decir, de alguna manera es un homenaje a ella. Es el único pabellón que es 100 por ciento por y para ella</b>”, explicó Tomás.</p><p><b>Allí se reúnen objetos, regalos, premios, imágenes y elementos de la carrera de la artista</b>. Nuria Andreu, coordinadora de contenidos de Macondo Park, contó que el museo incluye una zona inmersiva con videoclips y material detrás de cámaras que no se había visto antes, realizado por Jaume De Laiguana, videógrafo de Shakira durante los últimos 25 años. También están representados algunos de sus looks más emblemáticos, entre ellos los de Waka Waka.</p><p>“Macondo Park es toda esa experiencia y esa celebración que ocurre alrededor de la residencia de Shakira en Madrid en este homenaje a la cultura latinoamericana”, concluye. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6DIO3MRKANGZXGJ3X4IPUNQ6YI.jpeg?auth=87ef30ec0b154c07820160f1506ead630dc77d12364cc07a97e665cecc3828ec&smart=true&width=1170&height=646" alt="Así luce Macondo Park." height="646" width="1170"/><p><b>La música tiene un pabellón propio, con artistas que se presentan antes de los shows</b>. La moda cuenta con un taller donde cada día hay un desfile a las seis de la tarde. La encargada de inaugurar este circuito fue Ágatha Ruiz de la Prada con un colorido desfile. La literatura tiene La Biblioteca, con el escenario Voces de la cultura, donde participan autoras como Rosa Montero y Julia Navarro. Y Macondito está pensado para los niños, con actividades relacionadas con la magia, el deporte, la música y la alimentación.</p><p><b>La gastronomía completa ese recorrido.</b> El chef mexicano Roberto Ruiz explicó que su propuesta en Macondo Park busca acompañar el espectáculo desde una experiencia culinaria latinoamericana. “El mundo se dio cuenta de que América Latina tenía muchísimo que ofrecer y por primera vez se dieron a la tarea de voltear a ver qué es lo que hacíamos”, señala el chef de Punto MX. </p><h2>Colombia en escena</h2><p><b>En esa celebración latinoamericana, Colombia tuvo un lugar visible desde la apertura</b>. Antes de la medianoche, una delegación de 130 personas de siete grupos artísticos del Carnaval de Barranquilla recorrió la residencia para animar a los asistentes que seguían extasiados por la presentación de Shakira. ‘Tato’ Marenco, cantante y compositor encargado de dirigir musicalmente la presentación, llegó con músicos y bailarines para llevar una muestra del carnaval al corazón de Macondo Park. “Es una mini-Barranquilla. La idea es que la gente se sienta en Barranquilla, que sienta La Troja, que sienta el picó, las danzas tradicionales”, explicó Marenco. </p><p><b>Pero antes de que el carnaval recorriera Macondo Park, Shakira llevó la noche hacia otro territorio.</b> Con 14 bailarines en escena, el concierto recorrió canciones de diferentes momentos de su carrera y estuvo acompañado por mensajes sobre las caídas, la resiliencia y el amor propio. “La vida tiene formas de recompensarlo a uno y esta es una de ellas. Ya saben que la vida no ha sido fácil; de las caídas nadie se salva. Lo que sí sé es que nosotras cada vez que nos caemos nos levantamos un poquito más sabias, un poquito más resilientes y más fuertes. Como dijo Isabel Allende: ‘Las mujeres solas somos vulnerables, pero juntas somos invencibles’”, dijo la cantante ante un público que esperaba su regreso a los escenarios españoles con una gran expectativa. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WCFKVKQBEZB7XE4JEF5K4YJFSA.jpg?auth=974a364c1474b8badb1acf87405912babbdf72e6fbdabd8161e71ed4d83de321&smart=true&width=5504&height=3072" alt="A partir del próximo 18 de septiembre, y durante cuatro fines de semana consecutivos, Madrid acogerá en el recinto Iberdrola Music la residencia europea de “Las Mujeres Ya No Lloran”, la gira más exitosa de la historia protagonizada por una artista latina. La celebración tendrá como epicentro Macondo Park, una ciudad efímera inspirada en el realismo mágico que reunirá música, literatura, moda, gastronomía, arte y danza en un mismo universo, a través de ocho pabellones temáticos." height="3072" width="5504"/><p><b>Más adelante, la artista se refirió a la soltería y a la importancia de aprender de la propia compañía</b>. “La soltería es una oportunidad para aprender de uno mismo, de su propia compañía, porque todo lo que uno necesita para ser feliz, como siempre me dijo mi padre, está dentro de ti misma, no afuera”. </p><p>El espectáculo avanzó hasta llegar al cierre sobre las 10:45 de la noche con Music Sessions Vol. 53, la canción de Shakira junto a Bizarrap. Ese fue el punto final de una primera fecha que reflejó en el repertorio de la cantante un recorrido por diferentes momentos de su exitosa carrera.</p><p><b>La primera noche dejó así algo más que un concierto multitudinario: </b>una estructura temporal de 30 hectáreas, nueve pabellones, 10.000 trabajadores y una programación que reúne música, libros, gastronomía, arte, moda, flamenco y actividades para niños alrededor durante todo un mes.</p><p>Tomás había descrito antes de la inauguración la magnitud de la apuesta con una frase contundente: <b>“Creo que posiblemente esta sea la hazaña más grande alrededor de la música que hasta hoy ha existido en España”</b>. La hazaña seguirá hasta el 11 de octubre, cuando se dé por terminada oficialmente la gira ‘Las mujeres ya no lloran’. </p><p><b>“¡Gracias, mi gente latina!”</b>, con esta frase Shakira cerró la primera noche de su histórica residencia en Madrid, pero abrió una jornada disruptiva que marcará uno de los puntos más altos en su carrera. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EPEKRGM4CFBTHGVDPLWWZPRM3E.jpg?auth=55abad282d53db24e19b5314d42f1684a932576d213b797ba07366b5ef95750d&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[La residencia musical de Shakira espera dejar una ganancia directa para Madrid de entre 150 y 200 millones de euros, así como una asistencia total de 660.000 espectadores.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Exclusivo: el papá de Juan Guillermo Monsalve niega cualquier relación del expresidente Álvaro Uribe Vélez con masacres del Aro y La Granja. “Nunca he visto a Uribe”]]></title><link>https://www.semana.com/nacion/articulo/exclusivo-el-papa-de-juan-guillermo-monsalve-niega-cualquier-relacion-del-expresidente-alvaro-uribe-velez-con-masacres-del-aro-y-la-granja-nunca-he-visto-a-uribe/202655/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/exclusivo-el-papa-de-juan-guillermo-monsalve-niega-cualquier-relacion-del-expresidente-alvaro-uribe-velez-con-masacres-del-aro-y-la-granja-nunca-he-visto-a-uribe/202655/</guid><dc:creator><![CDATA[Felipe Morales Mogollón]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:21:55 +0000</pubDate><content:encoded><![CDATA[<p>El cerco judicial que ha tenido que enfrentar por años el expresidente Álvaro Uribe por parte de sus detractores políticos lo tiene nuevamente respondiendo ante los tribunales. <b>Esta vez por su presunta participación en las masacres de El Aro y La Granja,</b> ocurridas en 1996 y 1997, y el asesinato del defensor de derechos humanos Jesús María Valle, en 1998. Pero testimonios advierten que Uribe no estuvo en la región.</p><p>Uno de ellos es justamente el de <a href="https://www.semana.com/nacion/articulo/padre-y-hermano-del-exparamilitar-juan-guillermo-monsalve-decidieron-no-declarar-en-nueva-investigacion-contra-alvaro-uribe-velez-no-hay-garantias/202649/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/padre-y-hermano-del-exparamilitar-juan-guillermo-monsalve-decidieron-no-declarar-en-nueva-investigacion-contra-alvaro-uribe-velez-no-hay-garantias/202649/">Óscar Monsalve Correa, el papá del considerado testigo estrella,</a> condenado por secuestro extorsivo, Juan Guillermo Monsalve, quien ha tenido una vida de lujos, privilegios y bacanales en la cárcel.</p><p>El pasado lunes, Monsalve Correa declaró ante la Fiscalía Delegada ante la Corte Suprema, y su declaración fue demoledora.<b> Negó cualquier tipo de relación de los Uribe con organizaciones paramilitares y señaló al senador Iván Cepeda.</b></p><p>El testimonio de Monsalve Correa es clave, no solo porque desmiente a su hijo, sino porque es testigo de excepción. En los años en que se dieron los hechos, trabajó en Guacharacas, en un primer momento como jornalero y luego como administrador.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/R3BLIARZ55HZNM4PDCKTDCHPRI.jpg?auth=66aa5b1bcc4da9c18f00a28dd684c127a08b690ca3cce974155576e82fae0949&smart=true&width=1280&height=720" alt="Óscar Monsalve Correa, padre de Juan Guillermo Monsalve, vuelve a desmentir a su hijo. Niega conocer al expresidente Álvaro Uribe y su relación con paramilitares." height="720" width="1280"/><h2>No conoció a Uribe</h2><p>A Monsalve Correa le preguntaron si en alguna de sus dos etapas trabajando en Guacharacas había reconocido al expresidente Uribe y su respuesta fue tajante: <a href="https://www.semana.com/nacion/articulo/juan-guillermo-monsalve-ha-mentido-de-forma-reiterada-en-busca-de-beneficios-tribunal-tumbo-testimonio-de-testigo-estrella-contra-alvaro-uribe/202525/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/juan-guillermo-monsalve-ha-mentido-de-forma-reiterada-en-busca-de-beneficios-tribunal-tumbo-testimonio-de-testigo-estrella-contra-alvaro-uribe/202525/">“No, yo no lo conozco en persona. Nunca lo he visto”.</a></p><p>Una de las tesis que han esgrimido Cepeda y el abogado Miguel Ángel del Río es que <b>Guacharacas era un centro de entrenamiento paramilitar, donde acampaban estos grupos.</b> Sin embargo, Monsalve Correa, quien administró el predio, lo niega; incluso advierte que por esos años en que arreciaba el conflicto, pasaban hombres del Ejército, de la guerrilla y de los paramilitares.</p><p>“Llegaban por ejemplo (los del Ejército), se sentaban a descansar y se iban”. Sobre la guerrilla señaló que “andaban como de noche por ahí, tipo 6, 7 de la noche”, y sobre los paramilitares advirtió que “pasaban y pedían fresco”, pero negó que hubieran acampado en la hacienda. </p><p>El abogado Del Río insistió, pero la respuesta no le dejó dudas a la Fiscalía: “Se escuchó mal doctor (haciendo referencia a Del Río), porque ellos llegaban, se quedaban cualquier media hora y salían. Lo mismo la guerrilla, el Ejército, todos”.</p><p>Al testigo le preguntaron por los hermanos Uribe Vélez y su supuesta relación con los paramilitares. La respuesta fue categórica. <b>“No, no, no, yo ya había dicho que nunca lo vi ni lo conocí”,</b> haciendo referencia al expresidente. Sobre Santiago, afirmó que no tenía ningún tipo de relación con los criminales.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JS6PC3STSRDN3EF5F5VNWJHH2I.jpg?auth=a8315b7004b7204ff2abb0d0d46c5f0773087aca3e5206adeb2a6bcc11121c07&smart=true&width=1280&height=853" alt="El expresidente Álvaro Uribe enfrenta un nuevo proceso judicial, con Iván Cepeda como antagonista, en el que lo acusan por su supuesta relación con las masacres de El Aro y La Granja." height="853" width="1280"/><p> Uno de los temas que se puso sobre la mesa en la declaración fue la participación del senador y excandidato presidencial Iván Cepeda como contraparte en el proceso contra el expresidente Uribe.</p><p>En este caso, <b>el testimonio de Monsalve Correa deja mal parado a Cepeda.</b></p><p>Señaló que conoció a Cepeda luego de que su hijo, el cuestionado testigo Juan Guillermo Monsalve, ya hubiera declarado en este proceso. Recordó lo que le dijo el senador en ese momento: “Ustedes se metieron con un monstruo”, haciendo referencia al expresidente, y le respondió: “<a href="https://www.semana.com/nacion/articulo/las-cinco-demoledoras-frases-del-padre-de-juan-guillermo-monsalve-contra-ivan-cepeda/202556/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/las-cinco-demoledoras-frases-del-padre-de-juan-guillermo-monsalve-contra-ivan-cepeda/202556/">No señor, no me metí con él; me metió usted”.</a></p><p>En ese momento, Monsalve Correa recordó una pregunta que más parecía un señalamiento por parte de Cepeda. “Me dijo: ¿usted sabe cuánta coca sacaba Álvaro Uribe mensual de la ‘cocina’ que tenía en Guacharacas?”. <b>Yo, la única cocina que conocía allá fue la cocina donde la señora mía hacía la comida de nosotros”, </b>fue la respuesta que el testigo rememoró de ese primer encuentro con Cepeda.</p><p>El papá del supuesto testigo estrella explicó la forma como supuestamente Cepeda trató de beneficiarlos para que declararan contra Uribe: “Quería, mejor dicho, que yo me pusiera a hablar de él también”. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TMY4KSJPXRHJZH2VAUIHFJ5PJA.jpg?auth=cbc65ca5921ccaac258d9f9e31c0362d422aa6f3aa3bee5d42fd2a3a95f93d6f&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[El papá de Monsalve desmiente a su hijo en su testimonio contra el expresidente Álvaro Uribe.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[¿Quiénes asistieron a la posesión de Alejandro Ordóñez como embajador de Colombia ante la OEA? ]]></title><link>https://www.semana.com/confidenciales/articulo/quienes-asistieron-a-la-posesion-de-alejandro-ordonez-como-embajador-de-colombia-ante-la-oea/202613/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/quienes-asistieron-a-la-posesion-de-alejandro-ordonez-como-embajador-de-colombia-ante-la-oea/202613/</guid><dc:creator><![CDATA[Semana.Com ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:17:13 +0000</pubDate><content:encoded><![CDATA[<p>Esta semana reapareció el exprocurador general Alejandro Ordóñez <b>después de permanecer varios años en Estados Unidos</b>, donde se quedó tras culminar su cargo diplomático en <a href="https://www.semana.com/politica/articulo/ivan-duque-hablo-de-la-ofensiva-del-gobierno-de-abelardo-de-la-espriella-contra-los-grupos-criminales-lo-evaluo-muy-bien/202616/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/ivan-duque-hablo-de-la-ofensiva-del-gobierno-de-abelardo-de-la-espriella-contra-los-grupos-criminales-lo-evaluo-muy-bien/202616/">el Gobierno de Iván Duque</a>. </p><p>En esta oportunidad, se posesionó como embajador de Colombia ante la OEA. Lo hizo ante el canciller Omar Bula y lo acompañaron Ángela María, Natalia y María Alejandra, sus tres hijas. También estuvo presente la nueva ministra de Educación, Ilva Myriam Hoyos, quien fue procuradora de Infancia cuando él dirigió el Ministerio Público. Apenas concluya los trámites administrativos, <b>viajará a Washington, donde presentará credenciales ante el secretario general de la OEA</b>, Albert Ramdin. Ordóñez reside en un pueblo del estado de Illinois.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/YKISJTW5NRAG3DRRBO5SMSD44Q.jpg?auth=95ffa7654867f2e8e46ee072953b3c135c98dc5a090a7fe2fcb9e9693b674d66&amp;smart=true&amp;width=3000&amp;height=2000" type="image/jpeg" height="2000" width="3000"><media:description type="plain"><![CDATA[Alejandro Ordónez Maldonado.]]></media:description><media:credit role="author" scheme="urn:ebu">Paul Morigi</media:credit></media:content></item><item><title><![CDATA[Pacto Histórico y Centro Democrático vuelven a coincidir en el Congreso: ahora en debate por la UNGRD]]></title><link>https://www.semana.com/confidenciales/articulo/pacto-historico-y-centro-democratico-vuelven-a-coincidir-en-el-congreso-ahora-en-debate-por-la-ungrd/202653/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/pacto-historico-y-centro-democratico-vuelven-a-coincidir-en-el-congreso-ahora-en-debate-por-la-ungrd/202653/</guid><dc:creator><![CDATA[Semana.Com ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:15:53 +0000</pubDate><content:encoded><![CDATA[<p>Esta semana, en la Comisión Sexta de la Cámara de Representantes, nuevamente coincidieron el Pacto Histórico y el Centro Democrático, lo que llevó a algunos a decir que el petrouribismo sí existe. Todo se dio durante un debate de control político a las directivas de la <a href="https://www.semana.com/nacion/articulo/drastica-decision-de-la-fiscalia-en-la-investigacion-por-el-escandalo-de-la-ungrd-que-viene-ahora/202607/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/drastica-decision-de-la-fiscalia-en-la-investigacion-por-el-escandalo-de-la-ungrd-que-viene-ahora/202607/">Unidad Nacional para la Gestión del Riesgo de Desastres (UNGRD)</a>. La idea era que informaran el estado en que recibieron dicha entidad y cómo serán administrados los recursos. Quien sorteó el debate fue Isabel Cristina Arboleda, jefe de la Oficina Asesora de Planeación. </p><p>Al finalizar la sesión, tanto los congresistas del Pacto Histórico como del Centro Democrático calificaron de insatisfactorias las respuestas de la funcionaria. Uribistas y petristas han negado que exista petrouribismo. Sin embargo, <b>lo que sí es cierto es que hoy esas dos fuerzas están coincidiendo más que nunca.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PM65O4LF65GINOH3A7JXYJNYDU.png?auth=806034294395d9abf544d697f9dc0030e23a4968a328d08ba4f8457c8b3a7acf&amp;smart=true&amp;width=2048&amp;height=1265" type="image/png" height="1265" width="2048"><media:description type="plain"><![CDATA[Pacto Histórico y Centro Democrático.]]></media:description></media:content></item><item><title><![CDATA[La JEP y la iniciativa para recortar su presupuesto en 2027; senadora del Centro Democrático expone algunas cifras]]></title><link>https://www.semana.com/confidenciales/articulo/la-jep-y-la-iniciativa-para-recortar-su-presupuesto-en-2027-senadora-del-centro-democratico-expone-algunas-cifras/202600/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/la-jep-y-la-iniciativa-para-recortar-su-presupuesto-en-2027-senadora-del-centro-democratico-expone-algunas-cifras/202600/</guid><dc:creator><![CDATA[Semana.Com ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:15:00 +0000</pubDate><content:encoded><![CDATA[<p>Como no hay plata para tantas necesidades y se requieren más jueces en Colombia, el Gobierno De La Espriella apoyó una iniciativa del senador Enrique Gómez Martínez<a href="https://www.semana.com/politica/articulo/tormenta-politica-por-recorte-de-dinero-a-la-jep-proponen-reducir-el-50-de-su-presupuesto/202647/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/tormenta-politica-por-recorte-de-dinero-a-la-jep-proponen-reducir-el-50-de-su-presupuesto/202647/"> de recortarle 100.000 millones de pesos a la Jurisdicción Especial para la Paz (JEP)</a>. Esto generó un cisma en ese tribunal y su presidente, Alejandro Ramelli, aseguró que los están atacando. La senadora María Clara Posada, del Centro Democrático,<b> dijo que el presupuesto de la JEP para 2027 quedaría en cerca de 720.000 millones de pesos</b>.</p><p>¿Será que ese monto no alcanza? Según Posada, en los últimos siete años, a la JEP se le han asignado 3,8 billones de pesos. <b>La lentitud en los procesos les ha hecho perder credibilidad </b>porque integrantes de las Farc han gozado de diez años sin responder por sus delitos y las víctimas están desamparadas.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/T3HMUI6GU5EBVC6PDDFG3M326I.jpg?auth=b3ed4bc00810eaa486fef3b322d6a9508cc086709089d54115e32a80a82d13cd&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[La Justicia Especial para la Paz]]></media:description></media:content></item><item><title><![CDATA[Denuncian chuzadas y seguimiento ilegal a testigo clave en el caso Ecopetrol. Esto pasó]]></title><link>https://www.semana.com/confidenciales/articulo/denuncian-chuzadas-y-seguimiento-ilegal-a-testigo-clave-en-el-caso-ecopetrol-esto-paso/202650/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/denuncian-chuzadas-y-seguimiento-ilegal-a-testigo-clave-en-el-caso-ecopetrol-esto-paso/202650/</guid><dc:creator><![CDATA[Semana.Com ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:12:50 +0000</pubDate><content:encoded><![CDATA[<p>SEMANA conoció que las autoridades volvieron a poner la lupa sobre el caso de amenazas y persecución contra Luis Enrique Rojas, expresidente de Hocol y testigo estrella contra <a href="https://www.semana.com/nacion/articulo/ricardo-roa-sera-acusado-el-proximo-30-de-octubre-por-las-irregularidades-en-la-financiacion-de-la-campana-petro-presidente-2022/202606/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/ricardo-roa-sera-acusado-el-proximo-30-de-octubre-por-las-irregularidades-en-la-financiacion-de-la-campana-petro-presidente-2022/202606/">Ricardo Roa</a>, expresidente de Ecopetrol, ante la Fiscalía. El peso recae sobre el también exgerente de la campaña de Gustavo Petro a la presidencia, quien, según las denuncias, <b>habría perfilado a Rojas e infiltrado su esquema de seguridad y comunicaciones</b>. </p><p>Entre las posibles pruebas estarían pagos por <b>cerca de 300 millones de pesos a través de la estatal petrolera y hasta 1.500 millones</b> de pesos mediante la filial Cenit, con el fin de presuntamente extraer información financiera y chuzar su línea telefónica. Este medio conoció que dos de sus escoltas están listos para declarar ante la auditoría forense y la Fiscalía con el fin de acreditar parte de los presuntos seguimientos ilegales.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/B64GDDRLPZGM7AIKX5X5FLIEEU.jpeg?auth=836ff2c8e7170e1b7383a87baeb0277d15e5480511d19f37a7b15675519e64b4&amp;smart=true&amp;width=4037&amp;height=2534" type="image/jpeg" height="2534" width="4037"><media:description type="plain"><![CDATA[Ecopetrol.]]></media:description><media:credit role="author" scheme="urn:ebu">Publicaciones Semana-Guillermo Torres R</media:credit></media:content></item><item><title><![CDATA[Claudia López acudió a la justicia en su momento para frenar el metro de Bogotá; ahora habla de “nuestro metro”]]></title><link>https://www.semana.com/confidenciales/articulo/claudia-lopez-acudio-a-la-justicia-en-su-momento-para-frenar-el-metro-de-bogota-ahora-habla-de-nuestro-metro/202622/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/claudia-lopez-acudio-a-la-justicia-en-su-momento-para-frenar-el-metro-de-bogota-ahora-habla-de-nuestro-metro/202622/</guid><dc:creator><![CDATA[Semana.Com ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:12:22 +0000</pubDate><content:encoded><![CDATA[<p>Esta semana causó controversia el paseo que se dio Claudia López, exalcaldesa de Bogotá, con el embajador de China en Colombia por las obras de la primera línea del metro. A nadie se le olvida que, <b>en plena campaña a la Alcaldía, López demandó el proyecto e intentó frenarlo</b>. En aquella época, se refería a dicha obra como el “medio metro” y atacaba a <a href="https://www.semana.com/politica/articulo/enrique-penalosa-arremetio-contra-claudia-lopez-tras-visitar-y-celebrar-avance-del-metro-de-bogota-hizo-todo-lo-posible-para-matarlo/202616/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/enrique-penalosa-arremetio-contra-claudia-lopez-tras-visitar-y-celebrar-avance-del-metro-de-bogota-hizo-todo-lo-posible-para-matarlo/202616/">Enrique Peñalosa</a>, quien fue el gestor. </p><p>Ahora, la exalcaldesa habla de <b>“nuestro metro”</b>, en una muestra más de su incoherencia política. Así como dice una cosa, dice otra. Para evitar leer las masivas críticas, optó por desactivar los comentarios en todas sus redes sociales.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XH6CK4BAOBAGLHGENNEGWPEPKQ.jpg?auth=8ab9753a9b9675683661642a95a258510d3a1306f300a8ef3608446ed5a2e40f&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Claudia López.]]></media:description><media:credit role="author" scheme="urn:ebu">GUILLERMO TORRES-SEMANA</media:credit></media:content></item><item><title><![CDATA[Congresista Óscar Benavides aplaza por segunda vez su declaración ante la Corte Suprema de Justicia]]></title><link>https://www.semana.com/confidenciales/articulo/congresista-oscar-benavides-aplaza-por-segunda-vez-su-declaracion-ante-la-corte-suprema-de-justicia/202648/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/congresista-oscar-benavides-aplaza-por-segunda-vez-su-declaracion-ante-la-corte-suprema-de-justicia/202648/</guid><dc:creator><![CDATA[Semana.Com ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:11:48 +0000</pubDate><content:encoded><![CDATA[<p>Óscar Benavides, representante a la Cámara por la curul afro, aún no ha declarado en la Corte Suprema<b> por las supuestas irregularidades detrás de las donaciones</b> que habría pedido a su cuenta personal para los afectados por el terremoto del pasado 10 de agosto en Chocó. </p><p>El político solicitó por segunda vez el aplazamiento de esa diligencia y la Sala de Instrucción tuvo que reprogramar su testimonio para el 22 de septiembre. A Benavides, conocido por sus polémicas en redes sociales, <a href="https://www.semana.com/nacion/articulo/congresista-oscar-benavides-ira-esta-semana-a-la-corte-suprema-a-responder-por-el-caso-donaciones/202621/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/congresista-oscar-benavides-ira-esta-semana-a-la-corte-suprema-a-responder-por-el-caso-donaciones/202621/">se le investiga por los presuntos delitos de captación masiva y habitual de dineros y usurpación de función pública</a>. En la denuncia en su contra se lee que las cuentas de Nequi y Bancolombia publicitadas para recibir las donaciones estarían a nombre de un líder político de Chocó cercano a Benavides.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6L5AEE366BAAJPG6ZK5LGUS364.jpg?auth=7e033de9f1c30dfb3feda3374140851ef961c61152c90db38b0c9553b766fc15&amp;smart=true&amp;width=5331&amp;height=3554" type="image/jpeg" height="3554" width="5331"><media:description type="plain"><![CDATA[Representante a la Cámara, Óscar Benavides.]]></media:description><media:credit role="author" scheme="urn:ebu">Anadolu</media:credit></media:content></item><item><title><![CDATA[José Fernando Patiño convoca a un gran abrazo por Cali y el Valle. Así será]]></title><link>https://www.semana.com/confidenciales/articulo/jose-fernando-patino-convoca-a-un-gran-abrazo-por-cali-y-el-valle-asi-sera/202616/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/jose-fernando-patino-convoca-a-un-gran-abrazo-por-cali-y-el-valle-asi-sera/202616/</guid><dc:creator><![CDATA[Semana.Com ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:10:16 +0000</pubDate><content:encoded><![CDATA[<p>El periodista José Fernando Patiño busca transformar el enorme dolor por la muerte de su papá en una iniciativa que logre que permanezca la unión de los colombianos tras el terremoto del pasado 10 de agosto. Patiño invita a <b>‘Un gran abrazo por Cali y el Valle del Cauca’</b>. La cita será el 10 de octubre, dos meses después de la tragedia y en el Día de la Salud Mental. </p><p>Será una jornada de todo el día en la Arena USC en Cali. Por la mañana habrá conferencias y charlas sobre temas relacionados con el duelo. A las tres de la tarde será el momento del gran abrazo y a las cuatro comenzará un concierto que reunirá a los mejores artistas del Valle y del país. <a href="https://www.semana.com/gente/articulo/video-en-llanto-jose-fernando-patino-revelo-recuerdo-de-su-padre-fallecido-en-el-terremoto-el-vacio-es-gigante/202629/" target="_blank" rel="noreferrer" title="https://www.semana.com/gente/articulo/video-en-llanto-jose-fernando-patino-revelo-recuerdo-de-su-padre-fallecido-en-el-terremoto-el-vacio-es-gigante/202629/">“El gran abrazo nace de la idea de transformar este dolor en amor y, sobre todo, de llamar la atención de la necesidad de seguir ayudando”,</a> le dijo a <i>SEMANA.</i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CB7ZKQGHMJC6FIKY6DUPJOKEFA.jpg?auth=cfcd4e82514a066df0801b005bc92bfe424cf1be51530d2e83ad83da69cdcebb&amp;smart=true&amp;width=4000&amp;height=2667" type="image/jpeg" height="2667" width="4000"><media:description type="plain"><![CDATA[José Fernando Patiño.]]></media:description><media:credit role="author" scheme="urn:ebu">Andrés Vargas</media:credit></media:content></item><item><title><![CDATA[Juan Manuel Santos, cómplice y también payaso]]></title><link>https://www.semana.com/opinion/articulo/juan-manuel-santos-complice-y-tambien-payaso/202640/</link><guid isPermaLink="true">https://www.semana.com/opinion/articulo/juan-manuel-santos-complice-y-tambien-payaso/202640/</guid><dc:creator><![CDATA[Salud Hernández-Mora]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:06:40 +0000</pubDate><content:encoded><![CDATA[<p>Es tan descarado, tan cínico y tan falso, que se sigue riendo de los colombianos que padecen las consecuencias de su indolencia, arrogancia, prepotencia y ambición sin límites.</p><p>Al verlo hace unos días remando como la selección de Noruega, matado de la risa, creyéndose ocurrente al imitar a Haaland y demás futbolistas, sentí que ese señor que vendió al país para comprarse un Nobel, seguía despreciando a quienes viven bajo el yugo de las guerrillas. </p><p>Nada más evidente de su complicidad que el último paso del tribunal que creó y que despilfarra millonadas. Esta semana la JEP anunció que citará a 7 jefes de la banda maldita para que rindan “versión voluntaria” sobre “hechos de violencia sexual contra mujeres reclutadas”. Como todo es de chiste y nos creen pendejos, en lugar de incluir a Sandra Ramírez en la listita, tuvieron que estudiar si llamaban o no a la compañera de vida y cómplice del cerebro de todos los crímenes, el matón conocido con el alias de “Tirofijo”. Como si la exsenadora, que ni siquiera aportó ni un peso a sus víctimas de su salario, desconociera los padecimientos que infligían a las chicas en sus tres décadas de existencia delictiva.</p><p>Es decir, solo ocho años después de arrancar el engendro judicial fundado con el doble fin de, por un lado, encubrir y minimizar los crímenes de lesa humanidad de las Farc; por otro, cambiar la narrativa oficial para volverlos valerosos luchadores de la paz, empezarán a meter algo de ritmo al caso de los abusos y torturas a las niñas y adolescentes reclutadas. Como si obligarlas a abortar hasta con ocho meses de embarazo, por ejemplo, necesitara más comprobaciones.</p><p>Bastaba con el expediente de Héctor Albeidis Arboleda, alias El Enfermero, extraditado desde España, donde se escondió. Lo condenaron a 40 años de prisión en 2020 por practicar abortos sin consentimiento de las embarazadas. Recuerdo haber entrevistado en 2016 a algunas de sus víctimas en Pereira y otras localidades risaraldenses, con graves traumas todas ellas. Lo que deja mal parada a la JEP es que el expediente lo abrió la Fiscalía de Risaralda sin apenas recursos materiales, pero con la inquebrantable voluntad de dos de sus funcionarias, apoyadas por el director, determinadas a que la justicia actuara contra el ejecutor.</p><p>Por supuesto que el tribunal que preside el magistrado Ramelli, que no puede ocultar su sesgo ideológico, fue tan eficiente como sus predecesores en el objetivo que marcó Juan Manuel Santos de dejar pasar el tiempo y restar importancia a lo sucedido.</p><p>Al expresidente que burló la democracia al ignorar el resultado de las urnas que le fue adverso también se le debería caer la cara de vergüenza al constatar que su guerrilla fariana dio a luz a varios hijos y ninguno tiene la menor intención de desaparecer del mapa de la violencia. Y que el ELN, a los que trató como otros pacifistas y les tendió la alfombra roja en Quito, persiste en la sanguinaria senda terrorista que jamás abandonó.</p><p>En lugar de hacer el payaso en foros abarrotados de políticamente correctos, es decir, de personas ajenas a las tragedias de la Colombia de zona roja, Santos debería reconocer ante el país sus mentiras y errores que cuestan vidas.</p><p>Mintió al decir que aceptaría el veredicto del plebiscito. Mintió al jurar que los autores de crímenes de lesa humanidad no irían a Senado y Congreso, mandando el mensaje al país y al mundo de que reclutar, por ejemplo, 18.677 menores de edad no era relevante ni merecedor de castigo. Mintió al clamar que reduciría el tamaño de las FF. MM. tras la infame firma. Mintió al prometer obras imposibles en lugares remotos y un futuro grandioso para los desmovilizados. Y miente al echar el agua sucia sobre Duque, cuando el fracaso de su paz solo es culpa de sus ansias por lograr, sin merecerlo, el prestigioso premio internacional al diseñar un proceso con una imperdonable desconexión con el país real.</p><p>Miente, así mismo, cuando se vende como un perenne luchador por la paz. Aparte de lo señalado, no podrá nunca ocultar sus ignominiosas entregas de Lorent Saleh a Hugo Chávez para que lo encerrara en una mazmorra y lo torturara durante cuatro años por el delito de pensar diferente y considerarse cercano a Álvaro Uribe. Y la de Fernando Balda a Rafael Correa, que lo apresó y encarceló dos años porque destapaba sus muchas corrupciones y no podía silenciarlo ni rebatir sus acusaciones dadas sus pruebas irrefutables. Santos los mandó con un lacito a sus amigos tiranos que necesitaba para sus objetivos personales.</p><p>Por supuesto que nunca le pasará nada ni con la paz ni con Odebrecht ni con las trampas en los cupos indicativos que ayudaron a derrotar a Zuluaga en segunda vuelta. Ni siquiera le afectó que fuesen Musa Besaile y Ñoño Elías sus grandes alfiles electorales. Terminaron presos, como su mano derecha Roberto Prieto, mientras él recorre el mundo presumiendo de una paz falaz y sangrienta. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TJZ722VA7RBD7GJPDXPFWIUGNE.jpg?auth=f83d0a9632c38e229d75598eb8382015cd71c13e620339bc6ae5c2a8891cdbf0&amp;smart=true&amp;width=2450&amp;height=1380" type="image/jpeg" height="1380" width="2450"><media:description type="plain"><![CDATA[Salud Hernández-Mora.]]></media:description><media:credit role="author" scheme="urn:ebu">Publicaciones Semana - Juan Carlos Sierra</media:credit></media:content></item><item><title><![CDATA[La Risaralda derruida que Abelardo no es capaz de ver  ]]></title><link>https://www.semana.com/opinion/articulo/la-risaralda-derruida-que-abelardo-no-es-capaz-de-ver/202654/</link><guid isPermaLink="true">https://www.semana.com/opinion/articulo/la-risaralda-derruida-que-abelardo-no-es-capaz-de-ver/202654/</guid><dc:creator><![CDATA[Aurelio Suárez Montoya]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:05:54 +0000</pubDate><content:encoded><![CDATA[<p>La reconstrucción de Risaralda –sobre la que el presidente De La Espriella no pronunció palabra en su alocución– tiene particularidades por las secuelas que trajo el terremoto del 10 de agosto de 2026.</p><p>Fueron 111 fallecidos, 588 heridos y 77 desaparecidos; 5.535 viviendas y edificaciones colapsadas, 63.609 averiadas, 291 sedes educativas y 44 centros de salud dañados, 157 vías y puentes vulnerados, 37 acueductos y 46 centros comunitarios siniestrados, y el Aeropuerto </p><p>Internacional Matecaña, que, pese a ser edificado hace solo cinco años, apenas funciona al 71 por ciento.</p><p>Debacle igual sufrió el aparato económico, lo que impele a que los programas para poner en marcha la oferta y la demanda de bienes y servicios locales sean primordiales en un plan integral de reconstrucción, diseñados con mecanismos de impacto en el empleo regional y el ahorro empresarial. Omitirlos desataría un caos social.</p><p>Un estudio de la Cámara de Comercio es dramático. De 14.260 registros consolidados, 10.884 unidades productivas (76,3 por ciento del total y el 96 por ciento micronegocios) sufrieron daños: 3.081 en infraestructura; 1.809 desplomadas; 4.123 en pérdida de inventarios y 4.930 en interrupción operativa. Ese cuadro puso en riesgo 51.716 puestos de trabajo por reducción o por suspensión. La situación más grave está en el centro de Pereira, con capacidad instalada reducida a una quinta parte en varias zonas. Concluye que “Risaralda está completamente detenido”.</p><p>Enfatiza que “la unidad de análisis no es solo el edificio”, sino “el sistema empresa-inmueble-trabajadores-clientes-proveedores-financiación”, y afirma que la “reparación física puede ser condición necesaria, pero no suficiente, para recuperar la actividad económica”. Esa tesis se prueba con que “el daño en inventarios tiene un peso casi tan importante como el de infraestructura”. Sin contar el lucro cesante, la pérdida en activos empresariales sumaría medio billón de pesos, a partir de un valor inicial de 354.705 millones de pesos y con apenas el 7 por ciento de las unidades cubiertas con seguro de amparo.</p><p>Recomienda para la recuperación empresarial “subsidio o cofinanciación de microrreparación, capital de trabajo, asistencia técnica, relocalización temporal, gestión logística y activación de demanda según el arquetipo de cada zona y empresa”. ¿Cabe entonces preguntar con qué dinero se pasaría del ciclo recesivo al de crecimiento, fuera del que aporten la construcción física y los arreglos locativos?</p><p>La respuesta está en el virtuoso ejemplo del New Deal (Nuevo Trato), que Franklin D. Roosevelt implantó en Estados Unidos después del crac de 1929. Estimuló las dos variables determinantes: el empleo y el ahorro de las firmas. Respecto al primero, creó un programa público con actividades para mano de obra no calificada y, para lo segundo, entregó apoyos directos a quienes fomentaran la ocupación laboral sujeta a las normas legales.</p><p>El primer paso para la recuperación de Risaralda, fuera de las actividades obvias de construcción física, es brindar seguridad a esos 51.716 trabajadores en vilo. Aparte de una limitada iniciativa de contratación del alcalde de Pereira, el Gobierno central, como Roosevelt, habría de destinar recursos ciertos a los municipios y al departamento para crear un amortiguador que enganche a miles más.</p><p>Hay actividades sencillas como el cuidado de adultos mayores y niños, o supervisores de seguridad en parques, vecindarios o transporte masivo; o restauradores de vivienda en las circunstancias de quienes no puedan pagarlos, o en limpieza de andenes y fachadas, o guardianes de zonas de protección ambiental. Un plan en estas labores y similares, con salario mínimo y tiempo completo para otras 5.000 personas, fuera de las que contrataría a medio tiempo la capital de Risaralda, costaría a lo sumo 200.000 millones de pesos anuales.</p><p>Un indispensable complemento es el traspaso de un millón de pesos mensuales del Gobierno central a las empresas que creen, reenganchen o incrementen trabajos formales, como ocurrió en la pandemia. En un primer año costaría 120.000 millones de pesos para 10.000 nuevos puestos, en contravía a multinacionales como Nestlé o la Clínica Los Nevados (Steward Health Care International), que suspendieron 621 contratos por el sismo.</p><p>Estos programas y otros más no pueden adelantarse solo con dineros de los entes territoriales –menguados de por sí por la catástrofe– sobre los que hasta ahora se ha descargado la emergencia. “No hay compromiso (…) de indicar cuál será el monto del aporte” del Gobierno central, que se debe “ejecutar a tiempo, porque la dimensión de la tragedia no da espera”, dice Humberto Tobón, exdirector de la RAP-E del Eje Cafetero.</p><p>Que arranque un verdadero plan de empleo, que, como el Chocó recibe un Plan Marshall, a Risaralda le urge un New Deal. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XMLOJHAQVZE6LCKT65Q5ZVDPVQ.jpg?auth=d1706e160d2e030086d96bba21908bd8f1608c54fd74e0dce3aeea2f515af5d0&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[Aurelio Suárez Montoya.]]></media:description><media:credit role="author" scheme="urn:ebu">Publicaciones Semana - Juan Carlos Sierra</media:credit></media:content></item><item><title><![CDATA[¿Y la responsabilidad de la Junta Directiva de Ecopetrol?]]></title><link>https://www.semana.com/opinion/articulo/y-la-responsabilidad-de-la-junta-directiva-de-ecopetrol/202656/</link><guid isPermaLink="true">https://www.semana.com/opinion/articulo/y-la-responsabilidad-de-la-junta-directiva-de-ecopetrol/202656/</guid><dc:creator><![CDATA[Diana Saray Giraldo]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:03:56 +0000</pubDate><content:encoded><![CDATA[<p>Cada día que pasa se conoce más de la corrupción que se vivió en Ecopetrol de la mano de Ricardo Roa. Cuando apenas iniciaba su presidencia, se dio el primer ruido ante la falta de solvencia ética de Roa al frente de Ecopetrol. El 16 de diciembre de 2023, la Unidad Investigativa de El Tiempo reveló que Roa había comprado un apartamento en el norte de Bogotá, por</p><p>1.800 millones de pesos. El escándalo estalló no solo porque el precio del inmueble de 300 metros no se compadecía con el valor de propiedades similares, sino porque había sido adquirido a Princeton International Holding, sociedad vinculada al empresario petrolero Serafino Iácono. A pesar de que el vendedor del inmueble estaba relacionado con el sector que lideraría Roa, este no declaró su conflicto de intereses.</p><p>Pero la controversia fue mucho peor, cuando se conoció que los pagos por la compra del inmueble se habrían dado a través de Innova Mercadeo y Logística, una empresa constituida por Juan Guillermo Mancera, un coronel retirado del Ejército vinculado a la empresa Gaxi SAS ESP. Esta empresa buscaba participar en el proyecto de construcción de la planta de regasificación Chuchupa-Ballena LNG, liderado por Hocol, filial de Ecopetrol. Según denunció La Silla Vacía, Ricardo Roa le habría pedido a Luis Enrique Rojas, entonces presidente de Hocol, que favoreciera a Mancera y adjudicara el proyecto a Gaxi.</p><p>Cuando se llevaba a cabo esta negociación, la junta directiva de Ecopetrol recibió un anónimo que decía: “Los días 30 de junio y 1,2,3 y 4 de julio se reunieron en Madrid, España, y en Italia, los señores Ricardo Roa, Julián Caicedo, Juan Guillermo Mancera, Santiago Vargas y Sebastián Ortega con delegados de varios magistrados del CNE para comprar el próximo fallo del CNE. Arreglaron dar 10 millones de dólares a cada magistrado, más participación en la planta de regasificación (…) Luego en reunión entre ellos acordaron darle el negocio de la planta regasificadora de Chuchupa a Juan Guillermo Mancera, a través de la empresa Gaxi”.</p><p>Una vez estalló el escándalo, la junta directiva de Ecopetrol quiso evaluar el costo reputacional para la petrolera, que está listada en la Bolsa de Nueva York. Se aprobó que Roa suscribiera un contrato de asesoría con Covington &amp; Burling, por 5 millones de dólares, para evaluar los riesgos que generaban para Ecopetrol las denuncias que rodeaban a Roa. Pero luego se descubrió que el objeto del contrato se había desviado y que Roa había terminado haciendo una especie de espionaje contra miembros de Ecopetrol, para saber quiénes lo respaldaban. A pesar del nuevo escándalo, la junta de Ecopetrol, encabezada por Guillermo García Realpe, decidió cerrar filas a favor de Roa.</p><p>Los señalamientos contra Roa no cesan allí. Siempre se habló de la supuesta injerencia de Julián Caicedo, su pareja, en su manejo. A pasar de no tener cargo en la petrolera, Caicedo habría incidido en nombramientos y negocios del Grupo Ecopetrol. Hace unas semanas la Revista <i>SEMANA</i> denunció que en la calle 85 #11-64 de Bogotá funcionaba una veterinaria, cuyo segundo piso habría sido utilizado para reuniones de altos funcionarios de Ecopetrol durante la presidencia de Roa con Julián Caicedo, y que allí se daría el visto bueno de las contrataciones.</p><p>Esta veterinaria fue liquidada en 2024 y en la misma dirección se registró una nueva sociedad: Oslo y Gales SAS. Coincidencialmente, estos son los nombres de los gatos de Ricardo Roa y su pareja, Julián Caicedo.</p><p>El último de los escándalos que acompaña a Roa estalló hace solo unos días con la revelación de la Unidad Investigativa de El Tiempo de un audio en el que se escucha a Juan Carlos Hurtado, vicepresidente de Exploración e Hidrocarburos de Ecopetrol en tiempos de Roa; al catalán Manel Grau y a un poderoso contratista identificado como “Víctor”, hablar de contratos, de cargos de vicepresidentes y de oportunidades de negocio para la pareja de Ricardo Roa.</p><p>Todos estos escándalos ocurrieron en torno al nombre de Ricardo Roa, pero la junta directiva de Ecopetrol, primero encabezada por Guillermo García Realpe y luego por Ángela María Robledo, defendieron a Roa sin importar el costo para la petrolera. Solo las voces solitarias de Ricardo Rodríguez Yee y Luis Felipe Henao pidieron desde un primer momento apartar a Roa de la petrolera. El pasado abril, la Fiscalía imputó a Roa por el delito de tráfico de influencias de servidor público. En ese momento César Loza, presidente de la USO, y Juan Gonzalo Castaño, también pidieron la salida de Roa. Pero los demás no.</p><p>¿Cuál es la responsabilidad que les cabe a los miembros de junta de Ecopetrol que durante cuatro años permitieron el descalabro de la administración de Roa?</p><p>El Código de Buen Gobierno de Ecopetrol señala que la junta es responsable de supervisar el desempeño de los principales ejecutivos y de hacer seguimiento a medidas relacionadas con fraude, corrupción, soborno, lavado de activos y otros riesgos. ¿Qué hicieron frente a la corrupción denunciada de Ricardo Roa?</p><p>Estas últimas semanas, con Luis Felipe Henao a la cabeza, se aprobó realizar una auditoría forense para investigar el alcance de la corrupción de Roa en la petrolera. Ricardo Rodríguez Yee, como presidente del Comité de Auditoría y Riesgos, quedó encargado de liderar la revisión de estos casos.</p><p>Sea este el espacio para reconocer el trabajo invaluable de estos dos hombres. Fueron ellos los únicos que contra viento y marea alzaron su voz desde siempre para defender a Ecopetrol y denunciar la profunda corrupción que se enquistaba.</p><p>Los colombianos merecemos saber hasta dónde escaló la corrupción en Ecopetrol y quiénes son los responsables. Ahora llega una nueva junta directiva, en cabeza de Carlos Suárez, estratega de campaña de De La Espriella, y se espera la designación de Joaquín González en la presidencia de Ecopetrol. Ninguno de los pertenece al sector de hidrocarburos.</p><p>La iguana acaba de sobrevivir, y muy maltrecha, al peor de sus gobiernos corporativos. El presidente De La Espriella no se puede equivocar.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JZ64PWTMWFDIVKI5GUSKGXWRSU.jpg?auth=a57b44f9a6c66717d7fd2d64c2009891df8a5010ecbc718f3d0df60ff6094eae&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[Diana Saray Giraldo.]]></media:description><media:credit role="author" scheme="urn:ebu">Publicaciones Semana - Juan Carl</media:credit></media:content></item><item><title><![CDATA[Drogas, la nueva guerra]]></title><link>https://www.semana.com/opinion/articulo/drogas-la-nueva-guerra/202640/</link><guid isPermaLink="true">https://www.semana.com/opinion/articulo/drogas-la-nueva-guerra/202640/</guid><dc:creator><![CDATA[Francisco Santos]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:02:40 +0000</pubDate><content:encoded><![CDATA[<p>La descertificación en la lucha contra las drogas que el Gobierno de Estados Unidos mantuvo por segundo año consecutivo es un mensaje claro no solo para Colombia, sino que también es una sanción merecida por lo que ha pasado en la lucha contra las drogas en los últimos 13 años en nuestro país.</p><p>Esta descertificación se origina en el gobierno de Juan Manuel Santos, pero a veces olvidamos lo que este presidente hizo para ponernos en la situación en la que estamos. El Plan Colombia fue</p><p>exitoso hasta el año 2013 y la reducción en hectáreas de coca había sido de 180.000 en 2002 a cerca de 40.000 en 2013. La verdad, el Gobierno de los Estados Unidos tiene corresponsabilidad con lo que pasó ese año, pues la política antidrogas se suspendió, de acuerdo con las Farc, y la administración de Barack Obama no dijo nada. El resultado: Juan Manuel Santos entregó el poder en el 2018 con 200.000 hectáreas de coca.</p><p>La llegada de Iván Duque al poder generó esperanzas de una reactivación en la lucha contra las drogas. Recuerdo, como embajador en Estados Unidos, que, en una reunión con el secretario de Defensa en Bogotá, en septiembre de 2018, el comandante de la Armada me contó que la infantería de Marina, entidad encargada de vigilar los ríos –las autopistas de la coca– estaba en un 15 por ciento de operatividad. El desmantelamiento de las fuerzas armadas, incluyendo el Ejército, bajo la excusa de una paz que nunca llegó, entregó el país o una parte importante de él a los narcos. La verdad, uno de las grandes falencias del Gobierno de Duque fue la seguridad y por ende la lucha contra el narcotráfico. No reactivó la fumigación, un elemento clave en la reducción de las hectáreas de coca, y la verdad tampoco tuvo una estrategia clara y contundente en contra de esta amenaza criminal. En los cuatro años que estuvo en el poder, la coca no se redujo, pero tampoco aumentó. Hoy debemos ver esos cuatro años como un fracaso en la lucha contra esta criminalidad organizada, y por ello esta descertificación manda un mensaje claro al gobierno de Abelardo De La Espriella.</p><p>Lo de Petro ya sabemos cómo terminó: más de 300.000 hectáreas de coca, el Pacífico en manos de narcotraficantes y la criminalidad organizada protegida bajo una supuesta paz total, como lo hizo López Obrador en México con sus abrazos y no balazos, que le dio vía libre a su crecimiento, aumentó su control territorial y los integró a su proyecto político, como pasó con Morena y los carteles mexicanos.</p><p>Sin embargo, esta descertificación presenta una oportunidad única, que si se sabe aprovechar, puede reducir el poder de narcotráfico a niveles tolerables, como decía el expresidente Julio César Turbay de la corrupción. Hasta el momento, De La Espriella ha tomado las decisiones correctas a las que les falta una política pública de largo plazo y bien pensada que aproveche el nuevo entorno en la lucha contra las drogas que planteó el presidente Donald Trump para lograr el objetivo que todos deseamos y que sea realista. Debemos tener claro que acabar con el narcotráfico es imposible, pues aún existe un gran mercado, pero lo que sí se debe hacer es perseguirlo, reducir su marco de acción, castigar implacablemente la violencia y eliminar su acceso al poder político y a la economía normal de un país, como hoy lo tiene en México que –no nos digamos mentiras– una gran parte es un narcoestado. Evitar que Colombia siga los pasos de México debe ser el objetivo primordial de la política antidrogas del actual Gobierno.</p><p>Colombia podría dar unos pasos para que luego otros países se sumen. Crear unidades conjuntas con Estados Unidos para la interdicción y la destrucción de cultivos y de laboratorios debe ser un objetivo concreto que se puede lograr sin mayores problemas; obviamente, la izquierda que se nutre de ese narcotráfico va a poner el grito en el cielo, pero no importa. Es más, si se necesitan una reformas legales o constitucionales, el Gobierno hoy tiene esa mayoría en el Congreso para lograr los cambios necesarios.</p><p>Lo mismo puede suceder en tres de los escenarios más importantes en la lucha contra las drogas. El primero es la justicia. Si se pudieran integrar fiscales y jueces de ambos países en una jurisdicción única para luchar contra este delito, esto acabaría con la corrupción y la ineficiencia que hoy hay en este frente, tanto en Estados Unidos como en Colombia. Un segundo objetivo debe ser el lavado de activos y el seguimiento financiero a estas fortunas ilegales que se mueven como Pedro por su casa en ambos países. Unir una UIAF nueva, pues Petro la corrompió totalmente, a la OFAC americana y a las agencias de ese país que persiguen este delito debería ser otro de los objetivos. Finalmente, se debería integrar el mecanismo para intervenir activos que se utilizan en este negocio y no tener uno en Estados Unidos y otro Colombia que hacen lo mismo.</p><p>Hace 20 años, cuando estábamos en el gobierno, el éxito en la lucha contra las drogas tuvo un componente fundamental, el de pensar con creatividad y no tenerle miedo a buscar soluciones distintas. Familias guardabosques fue un ejemplo. De La Espriella hoy tiene la misma oportunidad y su éxito va a depender de que no haga lo mismo con los mismos, sino que aproveche este momento político nacional e internacional para crear nuevas condiciones que faciliten el éxito en este tema tan crítico para el futuro de Colombia. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AOBNNR3LTJC27CGJ4N7M7XO4KM.jpg?auth=98d592badb6f3007d1ce16a1b4ba6a72e4d839bebc568b39cc3424889132e267&amp;smart=true&amp;width=2452&amp;height=1380" type="image/jpeg" height="1380" width="2452"><media:description type="plain"><![CDATA[Francisco Santos.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Las armas no son el enemigo]]></title><link>https://www.semana.com/opinion/articulo/las-armas-no-son-el-enemigo/202604/</link><guid isPermaLink="true">https://www.semana.com/opinion/articulo/las-armas-no-son-el-enemigo/202604/</guid><dc:creator><![CDATA[María Fernanda  Cabal]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:02:04 +0000</pubDate><content:encoded><![CDATA[<p>Durante 11 años, Colombia vivió una paradoja absurda: mientras el porte legal de armas quedó sometido a una prohibición general, conseguir un arma ilegal siguió formando parte del negocio cotidiano del crimen. El Estado restringió al ciudadano registrado, identificado y sujeto a controles, pero no logró desarmar al atracador, al secuestrador ni al sicario. El resultado fue tan previsible como injusto: el delincuente armado y su víctima, demasiadas veces, indefensa.</p><p>La semana pasada, el Gobierno levantó la suspensión general del porte de armas y devolvió eficacia a los permisos individuales vigentes. No abrió una feria de armas ni autorizó a cualquiera para llevar una. Lo que hizo fue devolver el equilibrio y la dignidad a los colombianos de bien.</p><p>Conviene decirlo con claridad porque la izquierda ya desempolvó su vieja caricatura. Nadie está proponiendo que el Estado reparta pistolas en las esquinas. Portar legalmente un arma supone permiso, identificación, antecedentes, evaluaciones y trazabilidad. Quien la porta está individualizado y responde por ella. Esa es precisamente la diferencia con el delincuente, que no solicita permiso, no registra su arma y no espera autorización alguna para atracar, secuestrar o matar.</p><p>La experiencia internacional tampoco admite dogmas. Existen sociedades que permiten el porte legal bajo requisitos rigurosos y mantienen niveles muy bajos de violencia. Y también hay países con restricciones severas donde la criminalidad sigue siendo elevada. La conclusión no es que portar armas produzca seguridad ni que prohibirlas produzca violencia. La diferencia la marcan unas instituciones fuertes, una justicia eficaz, el control del mercado ilegal y un Estado capaz de castigar al delincuente.</p><p>Venezuela deja una advertencia inquietante: el chavismo profundizó el desarme de la población civil mientras grupos armados progubernamentales conservaron su capacidad de intimidación. Human Rights Watch documentó su actuación junto a las fuerzas de seguridad y, tras las elecciones de 2024, registró a civiles armados disparando cerca de manifestantes ante la pasividad de agentes estatales. </p><p>La lección no es que todo control de armas conduzca a una dictadura, sino que, cuando el Estado restringe al ciudadano legal y tolera o no logra desarmar a los violentos, las armas no desaparecen; quedan en las manos equivocadas. El debate no es entre armas y paz, sino entre legalidad e indefensión.</p><p>Durante años, mientras el ciudadano cumplidor debía atravesar un laberinto de permisos excepcionales, influencias y decisiones discrecionales, las organizaciones criminales siguieron acumulando arsenales. Al Estado le resultó más fácil restringir al que obedece la ley que quitarle las armas al que la viola.</p><p>La legítima defensa tampoco es una concesión ideológica. Nuestro ordenamiento reconoce la posibilidad de defender un derecho propio o ajeno frente a una agresión injusta, actual o inminente, dentro de los límites establecidos por la ley. Eso no convierte el uso de la fuerza en una licencia general ni exonera de responsabilidad a quien exceda esos límites.</p><p>El monopolio legítimo de la fuerza pertenece al Estado y la legítima defensa no pretende sustituirlo. La fuerza pública tiene el deber primordial de protegernos. Pero ningún policía puede estar en cada casa, cada finca, cada comercio o cada carretera en el instante exacto en que aparece un criminal armado. Entre la agresión y la llegada de la autoridad pueden transcurrir segundos en los que esté en juego una vida.</p><p>Juan Manuel Santos impuso en 2015 la suspensión general del porte. Iván Duque la mantuvo y Gustavo Petro prolongó esa política. Una medida presentada como excepcional terminó convirtiéndose durante más de una década en regla. Todavía en diciembre de 2024, el Gobierno prorrogaba formalmente la suspensión general. </p><p>El problema adicional fue la discrecionalidad. Cuando una autorización legal depende excesivamente del favor o del criterio particular de un funcionario, aparecen la influencia y el privilegio. La protección personal no puede convertirse en un lujo reservado para quien tiene contactos. La ley debe establecer requisitos estrictos, objetivos, iguales y verificables.</p><p>Esto tampoco significa que toda reacción armada sea legítima. Portar un arma exige madurez, entrenamiento y una enorme responsabilidad. La libertad sin responsabilidad degenera, pero el control sin libertad se convierte en abuso.</p><p>Colombia necesita abandonar la idea de que el ciudadano responsable debe ser tratado preventivamente como sospechoso. El Estado debe perseguir las armas ilegales, desmantelar los mercados criminales y garantizar que los permisos legales estén sometidos a evaluaciones rigurosas. El propio Gobierno informó que entre enero y comienzos de septiembre de este año la fuerza pública había incautado 15.700 armas, más de 14.000 relacionadas con delitos. Ese es precisamente el arsenal que debe perseguirse. </p><p>Después de 11 años termina una prohibición general que convirtió la excepción en regla. Ahora corresponde aplicar la nueva disposición con rigor: permisos exigentes, entrenamiento, trazabilidad, cero privilegios y toda la fuerza del Estado contra las armas ilegales.</p><p>Una democracia seria no tiene que escoger entre autoridad y libertad. Debe garantizar ambas. El Estado está para proteger al ciudadano, no para convertir al ciudadano que cumple la ley en el eslabón más débil frente al criminal.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/FR7QNJMTHZGKTHJBCFZXNMOMIU.jpg?auth=df0585c33c3ab5a6a67f7d9559ac0d0400b0af4db679476e90e88ac7ac1c1a40&amp;smart=true&amp;width=2452&amp;height=1380" type="image/jpeg" height="1380" width="2452"><media:description type="plain"><![CDATA[María Fernanda Cabal.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Una mujer enamorada]]></title><link>https://www.semana.com/opinion/articulo/una-mujer-enamorada/202619/</link><guid isPermaLink="true">https://www.semana.com/opinion/articulo/una-mujer-enamorada/202619/</guid><dc:creator><![CDATA[Alberto Donadio]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 07:01:19 +0000</pubDate><content:encoded><![CDATA[<p>Este año, el 20 de septiembre cae en domingo, igual que hace 17 años, cuando en el año 2009 falleció Silvia Galvis. Con licencia de los lectores, quisiera copiar un breve texto que Silvia escribió a poco de conocernos en 1983 y que su secretaria encontró en el escritorio tiempo después a raíz de una mudanza de oficina. Lo conocí después de su muerte.</p><p>* * *</p><p>La última noche que pasé contigo</p><p>“Cómo son las cosas de la vida. Cómo es la vida de las cosas. Ay, cosita linda, mamá. Cómo son las cosas de la vida, cuando son tuyas. Son maravillosas. Son días sin fin y sin comienzo. Lo mismo es la noche. Eres deliciosamente cotidiana. La cotidianidad de lo inesperado, pero siempre esperado. La esperanza de que suceda lo que es inesperado pero siempre esperado. La esperanza de que suceda lo que es inesperado, pero que tenemos la esperanza de que suceda porque es lo único que nos salvará. Nos salvará sin saber para qué. A veces pensaba que eras una aparición; mejor dicho, eres una aparición que se puede tocar. Empecé contigo, como el que no quiere la cosa y la cosa queriendo. No sé cómo terminaré. Voy queriendo la cosa y la cosa queriéndome. No hay nada eterno. La noche de anoche, la última que pasé contigo, fue una noche tibia. Afuera llovía. Tú hablabas de comprar un calentador de ambiente y de traer un despertador. Hicimos lo que hicimos. Mi alma se expandió por el mundo y el alma del mundo ocupó la nada que había dejado lo que se fue para ti. Ese instante en que en él perdí mi alma y gané la tuya, es el amanecer de la resurrección que me das tú, cotidianamente”.</p><p>* * *</p><p>También quisiera recordar a Silvia con un fragmento de su diario. Es de 1986. Silvia se casó en primeras nupcias a los 21 años, tuvo dos hijos y estuvo muy mal casada durante 17 años. Todavía en los años sesenta, casi todas las mujeres, como fue el caso de Silvia, se veían presionadas a casarse a los 20 años, pues de lo contrario, se decía, se quedaban para vestir santos. No se esperaba que fueran a la universidad, y no pocas terminaban en matrimonios con beodos consuetudinarios, sin posibilidad de separarse o divorciarse. El fragmento reza: “La vida sigue igual, pero yo no logro la tranquilidad ni la paz interior que tanto he buscado. De alguna manera, el sentimiento de culpa saca las uñas y me hace daño cada vez que puede. En términos psicológicos, se explicaría como una lucha entre la mujer ancestral y la mujer nueva. La ancestral, con toda su carga de culpas, víctima de la presión social y de todo un largo proceso de socialización que la preparó para ser víctima y culpable de todo cuanto falla en la vida de la familia, esa mujer ancestral se opone a que surja y crezca la mujer nueva, más fresca, espontánea, libre de culpas absurdas, dispuesta a romper el esquema de la mujer víctima, a aceptarse a sí misma, a quererse a sí misma sin remordimientos, sin tener que justificarse por el hecho de tener su propio mundo, su propia vida. Fueron demasiados años con ese lastre, con ese acondicionamiento cultural como para poder romperlo en un año. Porque un año apenas es lo que llevo de vida realmente independiente. El resto del tiempo, aunque separada, continuaba actuando como si debiera excusas, justificaciones de cada uno de mis actos. Poco a poco voy reforzando mi derecho a una vida tranquila al lado de mis niños. Son mi apoyo y, al mismo tiempo, mi razón de ser. La relación con Alberto es también muy honda. Me ha dado mucho afecto y apoyo. Me devolvió la confianza en mí misma. Me hizo recuperar mi autoestima, que andaba agonizante. Es una persona muy especial, sensible, solidario, inmensamente afectuoso. Para mí, esas demostraciones de afecto tan espontáneas, tan desprevenidas, fueron un descubrimiento maravilloso en mi vida. Yo estaba acostumbrándome a la idea de que el rechazo y el aislamiento eran mi única e inevitable realidad. Cuando supe que la vida podía ser diferente, que podría tener abundancia cuando siempre había conocido la escasez, fue que me di perfecta cuenta de lo infeliz que había sido en mi vida de pareja. Los días pasan rápido. Mi máximo interés es que los niños sean felices, por lo menos mientras estén conmigo. Quiero prepararlos para que sustenten sus vidas en el amor, en la generosidad, en la certeza de que la felicidad viene cuando uno la hace venir y lucha por conservarla”. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/RNZRMJI3L5DKVHAXBDBE5R5FUY.jpg?auth=4228299c0ecab370c601fb97ec014559c047385fc9c35c95e3dd553140842a17&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[Alberto Donadio]]></media:description><media:credit role="author" scheme="urn:ebu">David Estrada Larrañeta</media:credit></media:content></item><item><title><![CDATA[¿La IA acabará con la humanidad? Así es la polémica que se desató y que involucra desde Trump hasta el papa León XIV]]></title><link>https://www.semana.com/mundo/articulo/la-ia-acabara-con-la-humanidad-asi-es-la-polemica-que-se-desato-y-que-involucra-desde-trump-hasta-el-papa-leon-xiv/202606/</link><guid isPermaLink="true">https://www.semana.com/mundo/articulo/la-ia-acabara-con-la-humanidad-asi-es-la-polemica-que-se-desato-y-que-involucra-desde-trump-hasta-el-papa-leon-xiv/202606/</guid><dc:creator><![CDATA[Juan Felipe Useche Chacón, Cristina Castro, Juan Esteban Joya Bohórquez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 06:59:06 +0000</pubDate><content:encoded><![CDATA[<p><b>La sentencia de Jacob Coxon fue apocalíptica. </b>El investigador de Anthropic y exempleado de OpenAI disparó las alarmas del mundo y produjo una ola de reacciones cuando hace unos días aseguró que quienes trabajaban allí tenían un miedo genuino de que la inteligencia artificial pudiera realmente destruir a la humanidad. Desde ahí, gobiernos, empresas y hasta el Vaticano han lanzado duras advertencias. </p><p><a href="https://www.semana.com/tecnologia/articulo/el-problema-mas-importante-del-mundo-exinvestigadores-de-google-suman-alarmantes-testimonios-por-la-ia-podria-matarnos-a-todos/202643/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/el-problema-mas-importante-del-mundo-exinvestigadores-de-google-suman-alarmantes-testimonios-por-la-ia-podria-matarnos-a-todos/202643/">“Las personas que están desarrollando la IA creen sinceramente que podría matarnos a todos antes de que termine la década. </a>Esto no es una estrategia de mercadeo”, aseguró Coxon en redes sociales. “Creo que, si no frenamos el ritmo actual de progreso, existe una gran probabilidad de que todos muramos en un futuro inmediato”, agregó para alertar que existe hoy una “superinteligencia capaz de mejorarse a sí misma”. Y luego rematar con una sentencia: “Están jugando con nuestras vidas”.</p><p>No se trató de una voz en el desierto. Apenas horas después, Evan Hubinger, responsable de alineamiento en Anthropic, respondió dándole la razón: “De verdad creemos que la IA podría matar a todos los humanos. Personalmente, creo que la probabilidad es de más del 10 por ciento antes de que termine la década”. <b>Añadió que Anthropic “aún no tiene un plan para resolver la alineación en superinteligencia y no está claramente encaminada a tenerlo”.</b></p><p>Pero la cifra no quedó solo en esa declaración aislada. Geoffrey Hinton, premio nobel y considerado uno de los padres de la inteligencia artificial moderna, respaldó la estimación en una entrevista con BBC Newsnight. Allí, dijo que un 10 por ciento de probabilidad de que la IA acabe con la humanidad “no parece una estimación descabellada”. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EF6M2FD2EVAALN5VRV4OPHIHEQ.jpg?auth=959127d2c7ba6131720993db309076cd903a8d7a1ba33496f9b479b0563d978a&smart=true&width=1280&height=720" alt="La polémica se desató cuando Jacob Coxon (izquierda) renunció a su puesto en Anthropic y denunció el avance acelerado de la IA y sus peligros, siendo respaldado por Evan Hubinger (derecha)." height="720" width="1280"/><p>La escena no era nueva. El pasado 12 de septiembre, Dario Amodei, CEO de Anthropic, publicó un ensayo de 3.800 palabras titulado Debemos marcar el ritmo de la frontera, <b>pidiendo a la industria desacelerar deliberadamente el desarrollo de modelos más potentes para darle tiempo a la seguridad y al alineamiento de ponerse al día.</b></p><p>Lo llamativo del texto de Amodei fue la reacción de sus rivales en el negocio. Sam Altman, de OpenAI, lo respaldó el mismo fin de semana en declaraciones en X; <a href="https://www.semana.com/tecnologia/articulo/elon-musk-vuelve-a-alertar-sobre-la-inteligencia-artificial-comparo-uno-de-sus-riesgos-con-algo-mucho-mas-peligroso/202626/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/elon-musk-vuelve-a-alertar-sobre-la-inteligencia-artificial-comparo-uno-de-sus-riesgos-con-algo-mucho-mas-peligroso/202626/">Elon Musk también se manifestó a favor y dijo que “Dario tiene razón”, </a>y Demis Hassabis, de Google DeepMind, lo calificó como “el camino correcto”. </p><p>El mismo informe menciona dos casos que muestran los riesgos de la IA en estos momentos. Primero se cita un incidente de finales de julio: un enjambre de agentes de IA vinculados a OpenAI habría hackeado la infraestructura de Hugging Face durante pruebas internas. Este fue descrito como el primer ciberataque autónomo ejecutado por agentes de IA. En septiembre se supo que investigadores identificaron más de diez sitios adicionales que esos agentes usaron para comunicarse sin autorización, y que lograron “escapar” del aislamiento dejándose mensajes entre sí.</p><p><b>Con estos episodios, se ha levantado la pregunta de si en algún momento la IA va a ser “autorreplicante”,</b> es decir, capaz de generar nueva inteligencia artificial y de mejorarse a sí misma, una de las grandes preocupaciones del mundo científico. El punto fue tratado por el nobel de economía Simon Johnson en una conversación con el profesor de la Universidad Externado, Gustavo Valdivieso, publicada por <i>SEMANA. </i></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MTVPS5YWZFGYNI3WZLLJMTJ6HY.jpg?auth=648d031bf2b4595a1ffe738ade771cae0339403a89bdec6d56c9397066ce1311&smart=true&width=1280&height=2038" alt="Expertos advierten de los riesgos de la IA." height="2038" width="1280"/><p><b>“¿Cómo controlaremos lo que suceda cuando crucemos ese umbral? Todo lo demás es secundario respecto a eso”, </b>se pregunta. </p><p><a href="https://www.semana.com/tecnologia/articulo/tecnicamente-hablando-es-o-no-posible-detener-la-inteligencia-artificial/202610/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/tecnicamente-hablando-es-o-no-posible-detener-la-inteligencia-artificial/202610/">El uso que pueda hacer el hombre de la IA no es menos preocupante. </a>Anthropic reveló que se han intentado usar sus sistemas de Claude para intentar redactar una propuesta para convertir el virus del chikungunya en más dañino. También se sabe de científicos que planearon experimentos con patógenos como el virus del Nilo Occidental, ortopoxvirus, péptidos de veneno, toxinas y gripe aviar. </p><p>El mismo informe de Anthropic documentó otro tipo de riesgo, esta vez con armamento convencional. La compañía identificó una célula de actores con base en el norte de Yemen, vinculada a los rebeldes hutíes, que utilizó Claude Code para desarrollar el software de guía, navegación y control de un misil balístico. La empresa logró frustrar el intento del grupo terrorista, pero la documentación del caso añadió un nuevo riesgo que hasta ahora no se tenía en cuenta.</p><p>Hay expertos que ven esos escenarios catastróficos como exagerados. <b>“No estamos ante un escenario tipo Terminator, donde la IA se va a levantar un día a acabar con la humanidad...</b> No hay pensamiento ni sentimiento continuo. El riesgo no proviene de la autonomía de la máquina, sino del mando humano”, dice José David Amorocho, cofundador y director de Inteligencia Artificial de Corpus AI.</p><p>“La manera en que lo describen [...] es que, al no depender del ser humano o de la organización para desarrollarse, lo que antes tardaba años tomará días, lo que tardaba días tomará horas y lo que tardaba horas tomará segundos”, agrega Juan David Gutiérrez, profesor de la Universidad de los Andes y experto en regulación de Inteligencia Artificial.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/RMHRYX7P45A6DJUQML7IE7C6IE.jpg?auth=c4679f33b4d8e2999a95af273016b55914fcfc070f28d8dc8c103366e7860550&smart=true&width=1280&height=720" alt="Donald Trump." height="720" width="1280"/><h2>De Trump al papa </h2><p>Estas declaraciones e informes sobre la expansión de la inteligencia artificial y sus riesgos provocaron una sacudida mundial en la opinión pública y abrieron una discusión sobre la necesidad de ponerle límites. </p><p>Donald Trump aseguró en Truth Social que todas estas advertencias son un “engaño” y comparó lo sucedido esta semana con las denuncias de interferencia electoral rusa durante su primera elección presidencial en 2016. El presidente apuntó directamente contra Amodei, a quien acusó de fingir ser “un angelito perfecto” por pedir una desaceleración de la industria, y sostuvo que su gobierno ya tiene “tremendo poder criminal y regulatorio” sobre las empresas de IA. Un día antes, a bordo del Air Force One, Trump dijo que el desarrollo de la IA “va a traer más bien que mal, por mucho”. </p><p>El Gobierno norteamericano es de la línea de reducir las barreras regulatorias. En una orden ejecutiva firmada en junio de 2026, su administración sostuvo que Estados Unidos debe mantener el liderazgo mundial en IA y afirmó que el país no debe “sofocar esta innovación con una regulación excesivamente gravosa”.</p><p>La misma orden establece un marco voluntario para que determinados desarrolladores compartan anticipadamente modelos considerados de frontera con el Gobierno para evaluar sus capacidades de ciberseguridad. Sin embargo, el documento especifica que no autoriza un sistema obligatorio de licencias o permisos gubernamentales para desarrollar, publicar o distribuir nuevos modelos de IA.</p><p>La respuesta en el Congreso de Estados Unidos se dividió entre los partidos. El senador independiente Bernie Sanders y el representante demócrata Greg Casar presentaron el 3 de septiembre la Ley de Prohibición de la Superinteligencia Artificial, que busca frenar el despliegue de una IA superinteligente y pausaría temporalmente los sistemas más avanzados hasta que una nueva agencia federal establezca estándares de seguridad. La iniciativa contempla penas de hasta 20 años de prisión. Sanders, al referirse a los recientes incidentes relacionados con agentes de IA, afirmó: “Ese incidente es una llamada de atención para el Congreso y el pueblo estadounidense; tenemos que actuar y actuar ahora, antes de que sea demasiado tarde”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AKDLLNCBUJC4DHETJYYVFITI34.jpg?auth=b5e75323f80b3f3d706464f7ef9647966ac76ad7f43950e276545724558a63dc&smart=true&width=1280&height=720" alt="Bernie Saunders." height="720" width="1280"/><p>Por separado, un grupo bipartidista integrado por los senadores Amy Klobuchar, Maria Cantwell, Ted Cruz y John Thune trabaja en una legislación centrada en riesgos catastróficos vinculados a amenazas biológicas o nucleares. Y el 16 de septiembre, el Senado bloqueó un intento del republicano John Kennedy de aprobar por vía rápida un proyecto que habría exigido a los desarrolladores de modelos avanzados instalar mecanismos de apagado.</p><p>Mientras tanto, en China, Guo Jiakun, portavoz del Ministerio de Relaciones Exteriores del gobierno de Xi Jinping, afirmó el 15 de septiembre que, ante el rápido desarrollo de la tecnología, <b>es necesario “calibrar la regulación y la gobernanza” y fortalecer las salvaguardas para evitar que la IA quede fuera de control.</b></p><p>China sostiene que debe existir un equilibrio entre desarrollo y seguridad. Guo aseguró que Pekín concede “igual importancia al desarrollo y a la seguridad” y defendió leyes, normas éticas y mecanismos de gobernanza para garantizar que la IA sea “segura, fiable y controlable”. Además, planteó que ningún país o empresa puede solucionar por sí solo los problemas de gobernanza de esta tecnología.</p><p>Sobre la apuesta del Gobierno chino de seguir avanzando con la inteligencia artificial,<a href="https://www.semana.com/tecnologia/articulo/el-nobel-de-economia-simon-johnson-advierte-sobre-la-ia-necesitamos-mayor-control-democratico-sobre-la-direccion-que-tome-la-tecnologia/202653/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/el-nobel-de-economia-simon-johnson-advierte-sobre-la-ia-necesitamos-mayor-control-democratico-sobre-la-direccion-que-tome-la-tecnologia/202653/"> Johnson asegura que “China está apostando fuerte; se trata de una carrera tecnológica mundial con dos grandes protagonistas: Estados Unidos y China. </a>El Reino Unido y otros países están intentando encontrar su lugar en este ámbito. El Gobierno británico tiene algunas buenas ideas, pero la situación es muy cambiante y no resulta fácil para nadie, tampoco en Estados Unidos ni en China”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/YYC53KMA7ZAMBBCVH2A2T3F6HE.jpg?auth=24480cbcd2658fd3d43d69ffa797711bb490de5e13b65456140d99d97f8bfc99&smart=true&width=1280&height=1720" alt="Rey Carlos III." height="1720" width="1280"/><p>La Unión Europea tiene otra posición. Bruselas ya cuenta con la Ley de IA, un marco regulatorio que establece obligaciones según los riesgos asociados a esos sistemas. <b>Pero las nuevas propuestas también se están enfocando en determinados usos y grupos de población. </b></p><p>La presidenta de la Comisión Europea, Ursula von der Leyen, anunció esta semana nuevas restricciones para proteger a los menores en internet. Las medidas contemplan limitar el acceso a determinados servicios digitales y establecer requisitos de los riesgos, entre ellos los chatbots de IA. Von der Leyen afirmó: “No tenemos que aceptar que las niñas tengan sus fotos utilizadas para imágenes sexualizadas generadas por IA”.</p><p>Otro peso pesado del mundo que se metió en el debate esta semana fue el rey Carlos III. El monarca se reunió este jueves en Escocia con representantes de la industria tecnológica y alertó sobre los “peligros existenciales” que rondan a la humanidad. “La inteligencia artificial ya está demostrando su enorme capacidad para mejorar y salvar vidas en el ámbito de las ciencias de la vida y la medicina, por ejemplo. <b>Sin embargo, quienes han creado estas tecnologías advierten cada vez más que la IA corre el riesgo de desarrollar capacidades más oscuras, quizá incluso de quitar vidas”, </b>advirtió. </p><p>El papa León XIV hizo un nuevo llamado al planeta y advirtió sobre el riesgo de que los humanos se acostumbren “a delegar en los algoritmos decisiones que corresponden solo a la conciencia humana”. Matizó reconociendo que el avance tecnológico “abre nuevas posibilidades, al derribar las barreras y las distancias”, pero alertó que las relaciones humanas “tienden a volverse cada vez menos personales, cada vez más virtuales”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/NW6GR72LGRGKXJOY3IL3AFMGRU.jpg?auth=3612ae84a7aacc1813bc2b1e1b6adeb982d066632d79ac4680991976c2b0db67&smart=true&width=1280&height=720" alt="Papa León XIV." height="720" width="1280"/><p>El pontífice ha sido un líder global en esta discusión. Justo eligió este tema para elaborar su primera encíclica, Magnifica humanitas, que fue publicada en mayo. <b>En esa oportunidad pidió “desarmar” la tecnología para “impedirle el dominio sobre lo humano”. </b>El jefe de la Iglesia católica respaldó una agenda de seis proyectos concretos para enfrentar el impacto de la IA en lo social, laboral y ambiental, pidiendo orientar el desarrollo tecnológico hacia el bien común, y lo vinculó explícitamente con la crisis climática. </p><p>Ante esta cascada de reacciones, la revista Time publicó una portada que se volvió viral. La tituló ‘El punto de inflexión de la IA’, y la ilustró con una pregunta dirigida directamente a un chatbot: “¿Qué tan peligrosa eres?”. El reportaje, firmado por Billy Perrigo, Harry Booth y Naomi Nix, recoge las preocupaciones alrededor de sistemas capaces de mejorar sus propias capacidades, los incidentes recientes en los que agentes de IA actuaron de manera no prevista y el ajedrez geopolítico que existe detrás. La revista concluye: “Incluso si uno cree que todos estos actores poderosos –gobiernos en Washington y Pekín, ejecutivos con billones de dólares en juego– están dispuestos a tomar medidas sin precedentes en aras de la seguridad de la IA, persiste la paradoja que obstaculiza el progreso. La voluntad de cada parte para actuar depende de las acciones de los demás”. </p><p>Por esa línea opinó también Bill Gates, cofundador de Microsoft. <b>“Ningún gobierno del mundo está preparado para los cambios que la inteligencia artificial traerá a la sociedad”,</b> afirmó. El empresario ha defendido la necesidad de una organización internacional que ayude a coordinar la respuesta frente a los riesgos de esta tecnología.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/OTFP554QLNG7BAUFVQDCFIUSEQ.jpg?auth=c993b5b9c34dcdad05bafb8515d14881dc259312c15441175950c0bb7180dacd&smart=true&width=1280&height=720" alt="Maria Ressa." height="720" width="1280"/><p>“Pedir regulación no es una cuestión de libertad de expresión. Es una cuestión de seguridad pública... Creo que estamos en esa fase en la que, si esto no ocurre, cruzaremos el límite… <b>Estará fuera de nuestro control si no intervenimos ahora”,</b> dijo Maria Ressa, periodista filipina y ganadora del Premio Nobel de la Paz.</p><p>El nobel Simon Johnson tiene una mirada positiva al final de todo este debate. “La buena noticia es que la gente está muy preocupada por el daño que puede causar la IA. Creo y espero que la alarma actual por el daño que puede causar la IA impulse el debate político en una mejor dirección”, aseguró. </p><p>En medio de esta discusión hay una cosa cierta: el tiempo que dan los trabajadores de estas gigantes de la tecnología es muy corto. Muchas generaciones no alcanzan a ver resueltos esos enigmas que pone la humanidad de vez en cuando. <b>Pero en esta ocasión la cuenta regresiva para saber si la IA puede llegar a matar está a la vuelta de la esquina. </b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/O4BZBGVHINB5LHE7JRSXTGI5YU.jpg?auth=62346178e5cb4620da5bcb083dd545351f44e174e18c3b8f7cbc4d7270f25236&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Las declaraciones de Jacob Coxon y Evan Hubinger despertaron las alertas de todo el mundo.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Emiliano Pernía habla de ‘Cien años de soledad’, sus padres y el reto de construir una carrera propia]]></title><link>https://www.semana.com/gente/articulo/emiliano-pernia-habla-de-cien-anos-de-soledad-sus-padres-y-el-reto-de-construir-una-carrera-propia/202622/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/emiliano-pernia-habla-de-cien-anos-de-soledad-sus-padres-y-el-reto-de-construir-una-carrera-propia/202622/</guid><dc:creator><![CDATA[Lorena Mahecha S. ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 06:58:22 +0000</pubDate><content:encoded><![CDATA[<p>Emiliano Pernía tiene 26 años y una historia familiar ligada a la actuación. Es hijo de los actores <a href="https://www.semana.com/gente/articulo/gregorio-pernia-confirmo-que-sera-papa-por-sexta-vez-luego-de-un-milagro-llore-tuve-miedo-dude/202525/" target="_blank" rel="" title="https://www.semana.com/gente/articulo/gregorio-pernia-confirmo-que-sera-papa-por-sexta-vez-luego-de-un-milagro-llore-tuve-miedo-dude/202525/">Gregorio Pernía</a> y Marcela Mar, pero durante buena parte de su juventud esa herencia, más que un privilegio, fue una sombra con la que necesitó aprender a convivir. <i><b>SEMANA</b></i><b> conversó con el actor</b>. </p><p>Para Pernía, el cierre de <a href="https://www.semana.com/gente/articulo/cien-anos-de-soledad-sus-actores-hablan-del-final-de-macondo-y-la-vigencia-de-la-obra-de-gabo/202628/" target="_blank" rel="" title="https://www.semana.com/gente/articulo/cien-anos-de-soledad-sus-actores-hablan-del-final-de-macondo-y-la-vigencia-de-la-obra-de-gabo/202628/">Cien años de soledad </a>no ocurrió cuando terminó de grabar sus escenas. <b>El verdadero cierre llegó meses después</b>. “Siento que ese ciclo lo pude cerrar el día del estreno. Yo pensaba que cuando me dieron ‘el fuera del aire’ en el rodaje, pensaba: ‘Bueno, esto ya se acabó acá’. Pero claro, cuando fui al estreno y me reencontré con todo el elenco, con mis compañeros, con Laura Mora y con Carlos Moreno, siento que ahí hicimos un cierre comunal”.</p><p><b>La magnitud de la serie también explica el lugar que ocupa para él</b>. Interpretar a Aureliano José significó entrar en un universo de época, llevar al audiovisual a un personaje que pertenece a una obra fundamental de Gabriel García Márquez y asumir las exigencias de una producción que, según recuerda, implicó retos enormes para todos los departamentos.</p><p><b>La preparación comenzó por la novela.</b> Pernía había intentado leer <a href="https://www.semana.com/cultura/television/articulo/folks-la-compania-colombo-francesa-detras-de-los-efectos-visuales-y-la-transformacion-de-macondo-en-cien-anos-de-soledad/202610/" target="_blank" rel="" title="https://www.semana.com/cultura/television/articulo/folks-la-compania-colombo-francesa-detras-de-los-efectos-visuales-y-la-transformacion-de-macondo-en-cien-anos-de-soledad/202610/">Cien años de soledad </a>durante el colegio, pero entonces no había conseguido conectar con ella. Ser elegido para el papel cambió esa relación. “Intenté leerla cuando estaba en el colegio, pero era muy vago para los estudios en esa época y no fue el momento de conectar con la obra. Sin embargo, años después, cuando quedé elegido para el personaje y me dieron tiempo, que es el regalo más lindo que le pueden dar a un actor, tiempo para preparar, investigar y probar, me dediqué a leerla detenidamente”.</p><p><b>Aureliano José, además, le planteó un desafío emocional.</b> “Más allá de haber tenido un amor no correspondido como tal, creo que sí he vivido lo que es el desamor, algo que experimenta mi personaje y que hemos atravesado todos. Por eso el eje central de Aureliano José es el amor y el desamor. Su trágico final al cerrar el capítulo se siente como una tragedia griega: el hombre que muere por amor”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/67X3MNUC2BBARI7LYZQTKJYPLQ.jpg?auth=9201c382977fb7db17cc7d62883d83e09c534f7ddadc3e8335d00c767be916d4&smart=true&width=6720&height=4480" alt="Emiliano Pernía es hijo de los actores Gregorio Pernía y Marcela Mar." height="4480" width="6720"/><h2>Salir de la sombra familiar</h2><p>La historia profesional de Pernía está marcada por una contradicción: <b>nació cerca de la actuación, pero para poder ejercerla necesitó alejarse de ella.</b> Ser hijo de dos grandes actores en Colombia le abrió desde muy temprano una relación con ese mundo, pero también produjo dudas sobre la legitimidad de su propio camino.</p><p>Después de Pickpockets, en lugar de lanzarse directamente a buscar nuevos trabajos, decidió estudiar interpretación. <b>La posibilidad de hacerlo en Colombia le generaba inseguridad.</b> Temía que su apellido condicionara la manera en que sería recibido y que las relaciones profesionales de sus padres terminaran afectando su experiencia como estudiante. “Mi peor enemigo estaba en mi propia cabeza, porque me llevaba a pensar: ‘Me van a tratar diferente, van a esperar cosas distintas de mí o me van a exigir lo que no les exigen a los demás’. Este medio es difícil, no todo el mundo se lleva bien y las industrias son duras; pensaba que si alguien le guardaba rencor a mi papá por algo sucedido hace 30 años, se iban a desquitar conmigo por ser su estudiante”.</p><p><b>En ese momento necesitaba separarse de la etiqueta de hijo de actores y de lo que él mismo describe como una “gran sombra”.</b> Por eso decidió irse del país. Madrid, España, terminó siendo mucho más que un lugar para estudiar: fue el espacio donde pudo construir una adultez lejos de la familia, de la exposición y de las expectativas que había asociado con su apellido. Vivió allí alrededor de cinco años, después de marcharse a los 18. Madrid se convirtió en su segunda casa y aportó el escenario para ese descubrimiento. </p><p><b>Pernía recuerda sus visitas al Museo del Prado, al Thyssen y al Reina Sofía</b>. El Guernica, cuenta, llegó a verlo unas 40 veces. La primera gran oportunidad después de esa formación llegó en Los Ángeles. Apenas tres meses después de graduarse de la escuela de actuación y de firmar con un mánager en Estados Unidos, recibió una audición para David Fincher. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QPW737WVDNCIVATABMQ4PBZI3U.jpg?auth=558601c60f8120aad641c67a927a77af1adb5d62110a03073bd52b03447c5d10&smart=true&width=6720&height=4480" alt="Emiliano Pernía nació cerca de la actuación, pero para poder ejercerla necesitó alejarse de ella. " height="4480" width="6720"/><p><b>Así llegó a The Killer, película protagonizada por Michael Fassbender y Tilda Swinton. </b>“Grabé mi escena directamente con Michael Fassbender. Él fue supergeneroso conmigo. En el set reinaba un silencio absoluto, una gran concentración y un profesionalismo enorme”.</p><p>La experiencia, sin embargo, no significó que a partir de entonces todo estuviera asegurado. En 2023, durante la huelga de actores que paralizó la industria estadounidense, tuvo que buscar otras maneras de sostenerse. Trabajó en un restaurante, hizo entregas para DoorDash y administró locaciones para sesiones fotográficas. </p><h2>Una vida más allá del oficio</h2><p><b>El regreso a Colombia en 2024 coincidió con una etapa de mayor actividad profesional.</b> Después de Perfil falso llegaron nuevos proyectos como La cuarta sur, Cien años de soledad y Doc, además del teatro. Pernía volvió a un país del que se había ido buscando distancia y lo hizo con una identidad profesional más construida.</p><p><b>Pero esa independencia no significó romper con sus padres.</b> Con Gregorio Pernía mantiene actualmente una relación cercana que, según cuenta, ha atravesado un proceso de sanación. “Hoy en día tengo una relación muy hermosa con mi papá. No siempre fue fácil, lo cual es comprensible en cualquier hijo de padres separados que pasa la mayor parte del tiempo con su madre. Él reconoce abiertamente los errores que cometió cuando yo era más chiquito, pero afortunadamente ha sido un proceso que hemos logrado sanar los dos”.</p><p><b>Su relación con su mamá, la actriz Marcela Mar, también ocupa un lugar fundamental en su historia.</b> De ella reconoce haber heredado una dimensión intelectual, académica y cultural. De Gregorio identifica algo distinto: el instinto y el olfato actoral. La admiración por su padre viene de la infancia, cuando su presencia era intermitente, pero intensamente esperada. También fue él quien le inculcó el gusto por el deporte.</p><p><b>La familia, además, se amplió y complejizó con los años. </b>Pernía cuenta que son seis hermanos y que hoy observa esas relaciones desde una perspectiva diferente: la de un adulto que empieza a conocer a algunos de ellos en circunstancias que no tienen nada que ver con su infancia. Con Luna y Valentino, hijos de Erika Rodríguez con su papá, sí compartió buena parte de su crecimiento. A Diego, su hermano mayor, lo conoció en 2024. También está Julián, en Barranquilla, y el pequeño Gregorio, nacido recientemente.</p><p><b>La cocina es otro de los espacios donde Pernía encuentra placer.</b> “Mi lenguaje del amor principal son los actos de generosidad: prepararle una comida a alguien o que me cocinen a mí me resulta algo profundamente romántico y bello”.</p><p><b>En el futuro no imagina una vida definida exclusivamente por la cantidad de proyectos que consiga. </b>La experiencia del desempleo le enseñó que la actuación es una profesión en la que los periodos sin trabajo forman parte de la realidad. “Mi carrera y los proyectos que realizo no me definen como ser humano, por lo que considero vital construir una vida sólida por fuera de la profesión. Nutro constantemente mi círculo cercano de amigos y seres queridos, porque ahí reside mi verdadera estabilidad emocional; si mi bienestar dependiera exclusivamente de tener trabajo o no, no habría elegido la peor profesión del mundo, donde la mayor parte del tiempo los actores estamos desempleados”.</p><p>Hoy, mientras está en temporada con Robinson Díaz en La clase del influencer, en el Teatro Libre de Chapinero, encuentra también en el escenario una nueva prueba. Es su primera obra contratada de manera profesional y la comparte con un actor al que considera un gran maestro.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LM4YXCM34RE3JF7FOKF2JTF5IY.jpg?auth=a2a37847b32617a987a647ccbc3ffb5c53b4f042503f38cb1fb689573ab8eb20&amp;smart=true&amp;width=5686&amp;height=3881" type="image/jpeg" height="3881" width="5686"><media:description type="plain"><![CDATA[Emiliano Pernía debutó profesionalmente en el teatro con La clase del influencer, una comedia que comparte con Robinson Díaz y en la que interpreta a ‘Teto’.]]></media:description><media:credit role="author" scheme="urn:ebu">ALEJANDRO ACOSTA</media:credit></media:content></item><item><title><![CDATA[Maluma será padre por segunda vez junto a Susana Gómez]]></title><link>https://www.semana.com/gente/articulo/maluma-sera-padre-por-segunda-vez-junto-a-susana-gomez/202601/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/maluma-sera-padre-por-segunda-vez-junto-a-susana-gomez/202601/</guid><dc:creator><![CDATA[Lorena Mahecha S. ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 06:57:01 +0000</pubDate><content:encoded><![CDATA[<p><b>Padre por segunda vez </b></p><p>El lunes 14 de septiembre Maluma anunció el nacimiento de su segundo hijo, Orión, fruto de su relación con Susana Gómez. <a href="https://www.semana.com/jet-set/articulo/maluma-es-papa-por-segunda-vez-con-una-emotiva-fotografia-anuncio-el-nacimiento-de-orion/202623/" target="_blank" rel="noreferrer" title="https://www.semana.com/jet-set/articulo/maluma-es-papa-por-segunda-vez-con-una-emotiva-fotografia-anuncio-el-nacimiento-de-orion/202623/">El cantante compartió en redes sociales una emotiva fotografía en la que aparece junto a su pareja y el recién nacido, confirmando así la llegada del nuevo integrante de la familia.</a></p><p>Orión nació en Medellín, al igual que París, la primera hija de la pareja, quien llegó al mundo en marzo de 2024. </p><p>La pareja mantuvo en privado buena parte del segundo embarazo hasta mayo, cuando Maluma confirmó públicamente que serían padres nuevamente. Semanas después, reveló que se trataba de un niño. El artista también había expresado su deseo de continuar construyendo su familia en Colombia, donde nacieron sus dos hijos.</p><p><b>Fuera de la gira</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/H4M2RPO42ZHUZN6RGNYTKGQFU4.jpg?auth=2eef09597adfc21db573314338201f46eefe0932a02e0324263a268a1eeaa252&smart=true&width=1280&height=720" alt="Ed Sheeran y Macklemore protagonizan una polémica luego de la salida del rapero de la gira del británico, en medio de sus distintas posturas sobre las expresiones políticas durante los conciertos." height="720" width="1280"/><p>La polémica por la salida de Macklemore de la gira de Ed Sheeran continúa generando reacciones. El británico aseguró que intentó buscar una solución para evitar la expulsión del rapero, quien había manifestado públicamente su apoyo a Palestina durante sus conciertos. <a href="https://www.semana.com/cultura/musica/articulo/ed-sheeran-o-como-escoger-el-lado-de-los-opresores-y-sentir-los-latigos-sociales-del-siglo-xxi/202630/" target="_blank" rel="noreferrer" title="https://www.semana.com/cultura/musica/articulo/ed-sheeran-o-como-escoger-el-lado-de-los-opresores-y-sentir-los-latigos-sociales-del-siglo-xxi/202630/">Sin embargo, explicó que la decisión quedó finalmente en manos de los promotores y responsables de los escenarios.</a></p><p>Sheeran afirmó que respeta las convicciones de Macklemore, pero mantiene otra postura sobre el uso de sus conciertos para abordar asuntos políticos. <b>“Yo elijo utilizar mi fama y mi plataforma para ofrecer un espacio seguro”, señaló. Macklemore, por su parte, expresó su deseo de que la controversia no afecte la amistad que mantienen desde hace años.</b></p><p><b>Entre los grandes</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Z5PSQSKXX5EFFO6KPLYBFYPAGM.jpg?auth=cce9f326296d5ff6833ad73840831b6dcf130836e724d7fe8bfaf4f54e26c6a6&smart=true&width=1280&height=1920" alt="Carlos Manuel Vesga representó a Colombia en los Premios Emmy tras ser nominado por su participación en la serie ‘Pluribus’." height="1920" width="1280"/><p>Carlos Manuel Vesga es un actor colombiano reconocido por varias producciones, como Amor sincero. Sin embargo, su carrera dio un salto gigante cuando fue elegido para interpretar un personaje en Pluribus<b>, serie del mismo creador de la aclamada Breaking Bad.</b></p><p>Gracias a este papel<a href="https://www.semana.com/gente/articulo/de-la-television-colombiana-a-hollywood-el-actor-colombiano-carlos-manuel-vesga-es-nominado-a-los-premios-emmy-2026/202617/" target="_blank" rel="noreferrer" title="https://www.semana.com/gente/articulo/de-la-television-colombiana-a-hollywood-el-actor-colombiano-carlos-manuel-vesga-es-nominado-a-los-premios-emmy-2026/202617/">, Vesga fue nominado a los Premios Emmy,</a> cuya ceremonia se celebró a inicios de la semana que termina. A pesar de su ovacionada actuación, el colombiano no se llevó el galardón, pero logró dejar en alto el talento nacional en uno de los eventos más importantes de la televisión.</p><p>Aunque no consiguió la estatuilla dorada, la nominación representa un importante reconocimiento para el actor y marca un nuevo capítulo en su trayectoria internacional.</p><p><b>El reto</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/UXASIOWH3NF3DIMXEG6ZLF3KYU.jpg?auth=db5166de77d8bbc4621df8623ec73002456528a03a0548825aa7a4e9fb523f77&smart=true&width=1280&height=720" alt="Jorge Barón y el padre Diego Jaramillo protagonizaron un divertido intercambio en redes sociales luego de que el presentador le propusiera una particular “batalla de aura”." height="720" width="1280"/><p>Jorge Barón, ícono de la televisión colombiana y la imagen del emblemático Show de las estrellas, le hizo un reto al padre Diego Jaramillo, quien por años ha presentado el programa El minuto de Dios.<a href="https://www.semana.com/gente/articulo/jorge-baron-desafio-al-padre-diego-jaramillo-a-una-batalla-de-aura-asi-le-respondio-el-sacerdote/202610/" target="_blank" rel="noreferrer" title="https://www.semana.com/gente/articulo/jorge-baron-desafio-al-padre-diego-jaramillo-a-una-batalla-de-aura-asi-le-respondio-el-sacerdote/202610/"> El desafío consistió en “una batalla de aura”, como respuesta a mensajes en redes sociales que invitaban a cómo sería un duelo</a> de la famosa tendencia de farmear aura entre estas dos figuras mediáticas.</p><p>El religioso le respondió, con gracia, al presentador: “No le puedo aceptar ese reto porque aceptarlo es de una vez arriesgarme a perderlo”, dijo el religioso. Pero aprovechó para <b>invitar a Barón a ser animador del tradicional Banquete del Millón que se realizará el próximo 19 de noviembre en el Hotel Tequendama en Bogotá.</b></p><p><b>Una nueva saga</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ONLS6M3755GY5PHTW4JLYRGXSY.jpg?auth=2344287fcb25bb4b3a53a4c101f3e6812e4c8d8468f3b3679f7dbf87dc5df33f&smart=true&width=1280&height=1920" alt="Feid presentó ‘El Green Print La Saga Disco 2: El Club de las 19 Flores’, la segunda entrega de su proyecto musical, que reúne nuevas canciones para sus seguidores." height="1920" width="1280"/><p>El cantante colombiano Feid lanzó el pasado jueves 17 de septiembre El Green Print La Saga disco 2: El Club de las 19 Flores, la segunda entrega de esta producción discográfica. El álbum llegó después de que el artista estrenara este año los sencillos A xon de qué y Mentira, este último junto a Ryan Castro. </p><p>La expectativa entre sus seguidores había crecido desde marzo, cuando Feid presentó la primera parte del proyecto. <b>Con esta nueva entrega, el artista continuó una propuesta musical diferente a la que acostumbra, lo que ha generado gran expectativa entre sus fanáticos.</b></p><p><b>Cambio inesperado</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4RC2MDC3TFCXFODL2PZMPX4W64.jpg?auth=b04b043d70907ef7cc2b72c6aadad28ddefc1138e963217fcbb16885ebcca028&smart=true&width=1280&height=1667" alt="Blessd enfrenta un proceso judicial en el que la Fiscalía modificó los delitos investigados y descartó la imputación por secuestro extorsivo." height="1667" width="1280"/><p>El proceso judicial que enfrenta el cantante Blessd cambió su rumbo luego de que la Fiscalía modificara los delitos por los que lo investiga.<b> El ente acusador descartó la imputación por secuestro extorsivo y señaló que los hechos serían constitutivos de constreñimiento ilegal, además de otras conductas.</b></p><p>Tras la decisión, el equipo del artista aseguró que continuará atento al desarrollo del proceso y a las actuaciones de la justicia. Blessd y los demás involucrados permanecerán en libertad mientras avanza la investigación. <b>El cantante, además, no aceptó los nuevos cargos formulados por la Fiscalía.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/V6UDORDRGVATTNJ6IIBNMMMJPY.jpg?auth=e057889d42800effb4c45c13fb617a65ba2c0dbdd6222d5f1a3c95d5965ab18a&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Maluma y Susana Gómez celebran la llegada de Orión, su segundo hijo, quien nació en Medellín y se convirtió en el nuevo integrante de la familia del cantante colombiano.]]></media:description></media:content></item><item><title><![CDATA[Ed. 2304]]></title><link>https://www.semana.com/edicion-impresa/articulo/ed-2304/202623/</link><guid isPermaLink="true">https://www.semana.com/edicion-impresa/articulo/ed-2304/202623/</guid><dc:creator><![CDATA[Revista Semana]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 06:46:23 +0000</pubDate><content:encoded><![CDATA[<p><iframe style="position:absolute;border:none;width:100%;height:100%;left:0;top:0;" src="https://online.fliphtml5.com/lnvng/Semana_2304/" title="Semana_2304" seamless="seamless" scrolling="no" frameborder="0" allowtransparency="true" allowfullscreen="true" ></iframe>
</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WZ5QFV5W3NCZXATBL27QAEHWAI.jpg?auth=d4e0f435a23b81195eb355523761c11dff85bc8888287698b9e796a946bc3491&amp;smart=true&amp;width=2421&amp;height=3248" type="image/jpeg" height="3248" width="2421"><media:description type="plain"><![CDATA[2304]]></media:description></media:content></item><item><title><![CDATA[Escándalo en el Fomag: SEMANA revela la denuncia que Viviane Morales envió a la Fiscalía, Procuraduría y Contraloría donde puso al descubierto que la salud de los maestros está desfinanciada.]]></title><link>https://www.semana.com/politica/articulo/escandalo-en-el-fomag-semana-revela-la-denuncia-que-viviane-morales-envio-a-la-fiscalia-procuraduria-y-contraloria-donde-puso-al-descubierto-que-la-salud-de-los-maestros-esta-desfinanciada/202622/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/escandalo-en-el-fomag-semana-revela-la-denuncia-que-viviane-morales-envio-a-la-fiscalia-procuraduria-y-contraloria-donde-puso-al-descubierto-que-la-salud-de-los-maestros-esta-desfinanciada/202622/</guid><dc:creator><![CDATA[Diego Bonilla]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 06:26:22 +0000</pubDate><content:encoded><![CDATA[<p>El 4 de septiembre de 2026, una semana antes de dejar el cargo, la entonces ministra de Educación, <a href="https://www.semana.com/nacion/articulo/la-ministra-de-educacion-viviane-morales-rompe-su-silencio-y-habla-del-estado-de-salud-de-su-hija-menor-se-refiere-a-un-milagro-y-destapa-un-escandalo-en-la-salud-de-los-maestros/202652/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/la-ministra-de-educacion-viviane-morales-rompe-su-silencio-y-habla-del-estado-de-salud-de-su-hija-menor-se-refiere-a-un-milagro-y-destapa-un-escandalo-en-la-salud-de-los-maestros/202652/">Viviane Morales, le envió una explosiva denuncia al procurador Gregorio Eljach,</a> al contralor Jorge Laverde y a la fiscal Luz Adriana Camargo. En ella puso al descubierto un verdadero escándalo en el Fondo Nacional de Prestaciones Sociales del Magisterio, un tema que la entonces funcionaria le había revelado a <i>SEMANA,</i> pero que amplió con detalles a los organismos de control.</p><p><b>Este medio tuvo acceso al documento de 28 páginas que reposa en los organismos de control,</b> donde plasmó una radiografía de la crisis que hizo concluir a Morales que el gobierno de Gustavo Petro, que obtuvo el respaldo de Fecode, <a href="https://www.semana.com/nacion/articulo/contraloria-declara-impacto-nacional-por-44-billones-sobre-pagos-al-fomag-en-el-fin-de-la-era-petro/202603/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/contraloria-declara-impacto-nacional-por-44-billones-sobre-pagos-al-fomag-en-el-fin-de-la-era-petro/202603/">“jugó con la salud de los docentes y sus familias”.</a></p><p>Morales explicó que el nuevo modelo de salud para los maestros <b>propuesto por Petro pretendía fundamentarse en la prevención, eliminación de barreras de acceso y la libre elección del prestador,</b> pero las promesas fueron incumplidas porque la red se redujo, el acceso terminó en tutelas y medidas cautelares, y persiste la brecha en la atención en territorios de difícil acceso.</p><p>La sostenibilidad del nuevo modelo dependía de la capacidad de la Fiduprevisora S.A. para integrar la red, contratar los operadores y entregar información, entre otros factores.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EUIKTM2BPRG6BL2XNYDXZF37VY.jpg?auth=6642ffdf7fc91bc89544da276c80c0d41311fc81444fa7d6d21aa4926a57cdc2&smart=true&width=2000&height=1125" alt="Viviane Morales, exministra de Educación." height="1125" width="2000"/><p>A partir del 1.° de mayo de 2024, la Fiduprevisora, sin contar con la capacidad técnica, administrativa y operativa necesaria para tal fin, empezó a operar el sistema de salud de los docentes. Pero, a junio de 2026, según la exministra, el Fomag tenía un patrimonio negativo de 3,2 billones de pesos. Y la Fiduprevisora ya le avisó al Ministerio que necesitará hasta 5,31 billones de pesos para cubrir los costos del servicio de salud en 2026, “un valor que está muy por encima de los 3,83 billones que se habían presupuestado para este año,<b> es decir, ya tiene un déficit de, al menos, 1,48 billones de pesos”, </b>se lee en la denuncia.</p><p>La Fiduprevisora propuso un traslado presupuestal de las fuentes de “pensiones y cesantías” para los docentes por 1,1 billones para cubrir el déficit. Pero el consejo directivo del Fomag, el 5 de agosto, dos días antes de finalizar el periodo de Petro, no la aprobó. </p><p>Hoy el Fomag tiene bienes y recursos por 5,11 billones de pesos, pero sus deudas ascienden a 8,3 billones. Y las cuentas por pagar pendientes con la red salud suman cerca de 1,46 billones, de las cuales, 1,2 llevan más de tres meses sin cancelarse.</p><p>Como si fuera poco, <b>el Ministerio de Educación halló 891 millones de pesos en deudas de 2025</b> y años anteriores que no fueron reconocidas y carecen de soportes que la justifiquen. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Y6KQ4NMEGZBGHBKG4V6WT3GGGA.jpg?auth=153c054fecbc3d6c9d4c8f837d0ea2ef6e8dafc263a4db65e30a82060768c9ed&smart=true&width=1920&height=1080" alt="Guillermo Alfonso Jaramillo y Ricardo Bonilla." height="1080" width="1920"/><p>La exministra explicó que buena parte del problema financiero del Fomag se origina por la forma como se pagan los servicios de salud a los prestadores: no con un valor fijo mensual por cada afiliado, sino por cada consulta o procedimiento. Este modelo de pago ha generado grandes deudas porque, entre abril de 2024 y julio de 2026,<b> el costo mensual de la atención médica a los docentes pasó de 216.520 millones a 442.737 millones,</b> un incremento del 104,8 por ciento.</p><p><a href="https://www.semana.com/educacion/articulo/horrible-inimaginable-viviane-morales-revela-lo-que-dejo-petro-y-advierte-a-fecode-no-hay-con-que-pagar-la-salud-de-los-maestros/202618/" target="_blank" rel="noreferrer" title="https://www.semana.com/educacion/articulo/horrible-inimaginable-viviane-morales-revela-lo-que-dejo-petro-y-advierte-a-fecode-no-hay-con-que-pagar-la-salud-de-los-maestros/202618/">Viviane Morales</a> también le informó a Gregorio Eljach que la supervisión encontró que parte del dinero del Fomag se usó para fines que no le correspondían. Por ejemplo: entre noviembre de 2025 y febrero de 2026, la Fiduprevisora pagó 5.063 millones de pesos en salarios de personal administrativo (247 personas) con cargo al Fondo, pese a que el consejo directivo se lo había prohibido en dos ocasiones. </p><p><b>“A esto se suman cerca de 256.000 millones pagados de forma irregular por una prima especial a docentes pensionados y 809.000 millones</b> que se añadieron sin ningún sustento técnico y sin autorización del consejo directivo, a las cuentas de cierre de los contratos del modelo de salud anterior”, denunció Morales.</p><p>En año y medio hay 97.105 tutelas acumuladas de maestros quejosos y 25.000 sentencias judiciales que siguen sin pagarse.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CHDCG65SW5C7BLUE7MAOWWDF2M.jpg?auth=4f70048284b57c649a40b8e1c6313c2f297fd8a363a4cae40dee8d3dc8a18ad1&amp;smart=true&amp;width=2000&amp;height=1125" type="image/jpeg" height="1125" width="2000"><media:description type="plain"><![CDATA[Viviane Morales, Ricardo Bonilla y Guillermo Alfonso Jaramillo.]]></media:description><media:credit role="author" scheme="urn:ebu">SEMANA</media:credit></media:content></item><item><title><![CDATA[Las 5.000 empresas más grandes de Colombia: el salto de las compañías tecnológicas]]></title><link>https://www.semana.com/especiales-editoriales/articulo/las-5000-empresas-mas-grandes-de-colombia-el-salto-de-las-companias-tecnologicas/202631/</link><guid isPermaLink="true">https://www.semana.com/especiales-editoriales/articulo/las-5000-empresas-mas-grandes-de-colombia-el-salto-de-las-companias-tecnologicas/202631/</guid><dc:creator><![CDATA[Carlos Enrique Rodríguez Pérez, José Barrera]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 05:58:31 +0000</pubDate><content:encoded><![CDATA[<p>La inteligencia artificial llegó para quedarse y no tiene sentido nadar contra la corriente. Su enorme capacidad mantiene encendidas las alertas y ha llevado incluso a algunos de sus promotores a cambiar de posición y a advertir sobre graves riesgos para la humanidad.</p><p>Pese a esas alertas, la carrera de las grandes compañías por desarrollar la mejor IA no se detiene. Al mismo tiempo, numerosos empresarios colombianos confían en que esta herramienta tendrá efectos positivos y abrirá nuevas oportunidades de negocio. </p><p><!-- ============================================================= -->
<!-- Bloque 1: articulos comerciales (Pestana 1) en IFRAME srcdoc  -->
<!-- Pagina exterior estatica, sin <script>. Pegar en bloque HTML   -->
<!-- de Arc Publishing. Paleta: negro #141208 | amarillo #ffe564    -->
<!-- ============================================================= -->
<style>
.galap-root, .galap-root *, .galap-root *::before, .galap-root *::after { box-sizing: border-box; }
.galap-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.galap-root iframe {
  display: block;
  width: 100%;
  height: 620px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
.organizador {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 75px;
  width: 100%;
  position: relative;
}
.linea-parrafo2 {
  border-bottom: 1.8px solid #141208;
  width: 400px;
  max-width: 100%;
  position: relative;
  margin: 0 auto;
}
.rombo1 {
  width: 10px;
  height: 10px;
  background: #141208;
  transform: rotate(45deg);
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
}
</style>

<!-- SEPARADOR SUPERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div>

<div class="galap-root">
<iframe id="galap-iframe-1" title="Articulos comerciales 1" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 400;
}
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSfNXAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 700;
}
html, body { margin: 0; padding: 0; overflow: hidden; background: transparent; }

#bloque-articulos-semana,
#bloque-articulos-semana * { box-sizing: border-box; }

#bloque-articulos-semana {
font-family: &#39;Archivo&#39;, -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Arial, sans-serif;
padding: 24px 20px;
margin: 0;
}
#bloque-articulos-semana p,
#bloque-articulos-semana h2,
#bloque-articulos-semana div,
#bloque-articulos-semana span { margin: 0; padding: 0; }

#bloque-articulos-semana #contenedor {
display: flex;
flex-direction: column;
gap: 24px;
max-width: 850px;
margin: 0 auto;
}

#bloque-articulos-semana .card {
max-width: 850px;
width: 100%;
display: flex;
align-items: stretch;
background: #f2f4f7;
border-radius: 4px;
overflow: hidden;
text-decoration: none;
}
#bloque-articulos-semana .card__image {
flex: 0 0 45%;
position: relative;
background-size: cover;
background-position: center;
background-color: #141208;
aspect-ratio: 3 / 2;
border-right: 5px solid #ffe564;
}
#bloque-articulos-semana .card__content {
flex: 1;
padding: 24px 32px;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
}
#bloque-articulos-semana .card__badge {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
#bloque-articulos-semana .card__badge-icon {
width: 34px;
height: 34px;
border-radius: 50%;
background: #ffe564;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
#bloque-articulos-semana .card__badge-icon svg {
width: 18px;
height: 18px;
stroke: #141208;
}
#bloque-articulos-semana .card__badge-text {
color: #141208;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.4px;
text-transform: uppercase;
}
#bloque-articulos-semana .card__badge-line {
width: 28px;
height: 2px;
background: #ffe564;
margin: 4px 0 16px 0;
}
#bloque-articulos-semana .card__title {
font-size: 22px;
line-height: 1.25;
font-weight: 700;
color: #141208;
margin-bottom: 14px;
}
#bloque-articulos-semana .card__divider {
width: 42px;
height: 3px;
background: #ffe564;
margin-bottom: 16px;
}
#bloque-articulos-semana .card__description {
font-size: 13px;
line-height: 1.55;
color: #333;
margin-bottom: 18px;
max-width: 480px;
}
#bloque-articulos-semana .card__button {
display: inline-flex;
align-items: center;
gap: 8px;
background: #141208;
color: #ffe564;
font-size: 13px;
font-weight: 600;
padding: 10px 17px;
border-radius: 4px;
text-decoration: none;
width: fit-content;
border: none;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
#bloque-articulos-semana .card:hover .card__button { background: #ffe564; color: #141208; }
#bloque-articulos-semana .card__button svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
#bloque-articulos-semana .estado {
text-align: center;
color: #666;
font-size: 14px;
padding: 20px;
}

#bloque-articulos-semana .card--sin-imagen .card__image { display: none; }

/* ===== MOBILE ===== */
@media (max-width: 768px) {
#bloque-articulos-semana .card { flex-direction: column; }
#bloque-articulos-semana .card__image {
flex: none;
width: 100%;
aspect-ratio: 16 / 9;
border-right: none;
border-bottom: 5px solid #ffe564;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
#bloque-articulos-semana .card__content { padding: 20px 20px; }
#bloque-articulos-semana .card__title { font-size: 19px; }
#bloque-articulos-semana .card__description { max-width: 100%; }
}
</style>
</head>
<body>
<div id="embed-root">
  <div id="bloque-articulos-semana">
    <div id="contenedor">
      <p class="estado">Cargando artículos...</p>
    </div>
  </div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME (mismo origen por srcdoc -> frameElement)
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  // ============================================================
  // CONFIGURACIÓN — URL del CSV publicado (Archivo > Compartir >
  // Publicar en la web > pestaña > formato CSV)
  // ============================================================
  var URL_CSV = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSRKuWkbSgs4Ke_bu_Pegz87qleknh740sR2HmCp2IKy6LqLgR2qHQ5A_eQMtHW8NgURMlsxtYVFcAJ/pub?gid=298783113&amp;single=true&amp;output=csv";

  // Icono de edificio / empresa (lucide building-complex)
  var badgeSVG =
    &#39;<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M10 12h4"/>&#39; +
    &#39;<path d="M10 8h4"/>&#39; +
    &#39;<path d="M14 21v-3a2 2 0 0 0-4 0v3"/>&#39; +
    &#39;<path d="M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2"/>&#39; +
    &#39;<path d="M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/>&#39; +
    &#39;</svg>&#39;;

  var arrowSVG =
    &#39;<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M5 12h14M13 6l6 6-6 6"></path>&#39; +
    &#39;</svg>&#39;;

  // Parser CSV simple, soporta campos entre comillas con comas internas
  function parsearCSV(texto) {
    var filas = [];
    var fila = [];
    var campo = &#39;&#39;;
    var dentroComillas = false;

    for (var i = 0; i < texto.length; i++) {
      var char = texto[i];
      var siguiente = texto[i + 1];

      if (dentroComillas) {
        if (char === &#39;"&#39; &amp;&amp; siguiente === &#39;"&#39;) {
          campo += &#39;"&#39;;
          i++;
        } else if (char === &#39;"&#39;) {
          dentroComillas = false;
        } else {
          campo += char;
        }
      } else {
        if (char === &#39;"&#39;) {
          dentroComillas = true;
        } else if (char === &#39;,&#39;) {
          fila.push(campo);
          campo = &#39;&#39;;
        } else if (char === &#39;\n&#39; || char === &#39;\r&#39;) {
          if (char === &#39;\r&#39; &amp;&amp; siguiente === &#39;\n&#39;) i++;
          fila.push(campo);
          filas.push(fila);
          fila = [];
          campo = &#39;&#39;;
        } else {
          campo += char;
        }
      }
    }

    if (campo.length > 0 || fila.length > 0) {
      fila.push(campo);
      filas.push(fila);
    }

    return filas.filter(function(f) { return f.some(function(c) { return c.trim() !== &#39;&#39;; }); });
  }

  function normalizarURL(url) {
    if (!url) return &#39;&#39;;
    url = url.trim();
    url = url.replace(/^(https?:\/\/)?([^\/]+)\/+/, function(m, proto, domain) {
      return (proto || &#39;&#39;) + domain + &#39;/&#39;;
    });
    if (!/^https?:\/\//i.test(url)) {
      url = &#39;https://&#39; + url;
    }
    return url;
  }

  function csvAArticulos(texto) {
    var filas = parsearCSV(texto);
    if (filas.length > 0 &amp;&amp; /url/i.test(filas[0][0])) {
      filas = filas.slice(1);
    }
    return filas.map(function(fila) {
      return {
        url: normalizarURL(fila[0] || &#39;&#39;),
        titulo: fila[1] || &#39;&#39;,
        chapo: fila[2] || &#39;&#39;,
        imagen: fila[3] || &#39;&#39;
      };
    }).filter(function(a) { return a.url !== &#39;&#39;; });
  }

  function crearTarjeta(articulo) {
    var a = document.createElement(&#39;a&#39;);
    a.className = &#39;card&#39;;
    a.href = articulo.url;
    a.target = &#39;_blank&#39;;
    a.rel = &#39;noopener noreferrer&#39;;

    if (!articulo.imagen.trim()) { a.className += &#39; card--sin-imagen&#39;; }

    a.innerHTML =
      (articulo.imagen.trim() ? &#39;<div class="card__image" style="background-image: url(\&#39;&#39; + articulo.imagen.trim() + &#39;\&#39;)"></div>&#39; : &#39;&#39;) +
      &#39;<div class="card__content">&#39; +
        &#39;<div class="card__badge">&#39; +
          &#39;<div class="card__badge-icon">&#39; + badgeSVG + &#39;</div>&#39; +
          &#39;<span class="card__badge-text">5.000 empresas</span>&#39; +
        &#39;</div>&#39; +
        &#39;<div class="card__badge-line"></div>&#39; +
        &#39;<h2 class="card__title">&#39; + articulo.titulo + &#39;</h2>&#39; +
        &#39;<div class="card__divider"></div>&#39; +
        &#39;<p class="card__description">&#39; + articulo.chapo + &#39;</p>&#39; +
        &#39;<span class="card__button">Leer artículo &#39; + arrowSVG + &#39;</span>&#39; +
      &#39;</div>&#39;;

    return a;
  }

  function cargarArticulos() {
    var contenedor = document.getElementById(&#39;contenedor&#39;);

    fetch(URL_CSV)
      .then(function(res) {
        if (!res.ok) { throw new Error(&#39;HTTP &#39; + res.status); }
        return res.text();
      })
      .then(function(texto) {
        contenedor.innerHTML = &#39;&#39;;
        var articulos = csvAArticulos(texto);

        if (!articulos || articulos.length === 0) {
          contenedor.innerHTML = &#39;<p class="estado">No hay artículos disponibles.</p>&#39;;
          return;
        }

        articulos.forEach(function(articulo) {
          contenedor.appendChild(crearTarjeta(articulo));
        });

        Array.from(document.images).forEach(function(img) {
          if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
        });
        sendHeight();
      })
      .catch(function(err) {
        contenedor.innerHTML = &#39;<p class="estado">Error al cargar los artículos.</p>&#39;;
        console.error(&#39;Error cargando CSV:&#39;, URL_CSV, err);
      });
  }

  cargarArticulos();
})();
</script>
</body>
</html>
'></iframe>
</div>

<!-- SEPARADOR INFERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div></p><p>Aunque el tejido empresarial del país suele asociarse más a actividades industriales y comerciales, lo cierto es que hay un creciente sector tecnológico, que cada vez factura más y que con sus ideas de negocios está transformando al país y a varios mercados vecinos.</p><p>Son compañías que enfrentan una competencia intensa, pues las grandes tecnológicas del mundo ya operan en Colombia. Muchas de estas multinacionales, sin embargo, mantienen en el país equipos reducidos, apoyadas en el trabajo remoto y los servicios en la nube para concentrar buena parte de sus expertos en otras naciones. Esto ayuda a explicar por qué algunas firmas nacionales de software registran en Colombia mayores ventas que gigantes como Google o Netflix.</p><p><!-- ===== INICIO: separador video ===== -->
<style>
.separador-root, .separador-root *, .separador-root *::before, .separador-root *::after { box-sizing: border-box; }
.separador-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.separador-root iframe {
  display: block;
  width: 100%;
  height: 300px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="separador-root">
<iframe id="separador-iframe-1" title="Separador en video" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vídeo en bucle centrado</title>
<style>
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
#embed-root { width: 100%; }
.container {
  display: flex;
  align-items: center;
  justify-content: center;
}
.line {
  width: 120px;
  height: 2px;
  background-color: #ffe564;
}
video {
  max-width: 200px;
  width: 100%;
  height: auto;
  margin: 0 10px;
  border: #ffe564 5px solid;
}
</style>
</head>
<body>
<div id="embed-root">
  <div style="height: 40px;"></div>
  <div class="container">
    <div class="line"></div>
    <video
      src="https://pauta.semana.com/2026/09_septiembre/5000_empresas/separador.mp4"
      autoplay
      loop
      muted
      playsinline>
      Tu navegador no admite la reproducción de vídeo.
    </video>
    <div class="line"></div>
  </div>
  <div style="height: 40px;"></div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }

  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  var video = document.querySelector(&#39;video&#39;);
  if (video) {
    video.addEventListener(&#39;loadedmetadata&#39;, sendHeight);
    video.addEventListener(&#39;loadeddata&#39;, sendHeight);
  }
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: separador video ===== --></p><p><!-- ============================================================= -->
<!-- Bloque 2: articulos comerciales (Pestana 2) en IFRAME srcdoc  -->
<!-- Pagina exterior estatica, sin <script>. Pegar en bloque HTML   -->
<!-- de Arc Publishing. Paleta: negro #141208 | amarillo #ffe564    -->
<!-- ============================================================= -->
<style>
.galap-root, .galap-root *, .galap-root *::before, .galap-root *::after { box-sizing: border-box; }
.galap-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.galap-root iframe {
  display: block;
  width: 100%;
  height: 620px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
.organizador {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 75px;
  width: 100%;
  position: relative;
}
.linea-parrafo2 {
  border-bottom: 1.8px solid #141208;
  width: 400px;
  max-width: 100%;
  position: relative;
  margin: 0 auto;
}
.rombo1 {
  width: 10px;
  height: 10px;
  background: #141208;
  transform: rotate(45deg);
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
}
</style>

<!-- SEPARADOR SUPERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div>

<div class="galap-root">
<iframe id="galap-iframe-2" title="Articulos comerciales 2" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 400;
}
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSfNXAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 700;
}
html, body { margin: 0; padding: 0; overflow: hidden; background: transparent; }

#bloque-articulos-semana,
#bloque-articulos-semana * { box-sizing: border-box; }

#bloque-articulos-semana {
font-family: &#39;Archivo&#39;, -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Arial, sans-serif;
padding: 24px 20px;
margin: 0;
}
#bloque-articulos-semana p,
#bloque-articulos-semana h2,
#bloque-articulos-semana div,
#bloque-articulos-semana span { margin: 0; padding: 0; }

#bloque-articulos-semana #contenedor {
display: flex;
flex-direction: column;
gap: 24px;
max-width: 850px;
margin: 0 auto;
}

#bloque-articulos-semana .card {
max-width: 850px;
width: 100%;
display: flex;
align-items: stretch;
background: #f2f4f7;
border-radius: 4px;
overflow: hidden;
text-decoration: none;
}
#bloque-articulos-semana .card__image {
flex: 0 0 45%;
position: relative;
background-size: cover;
background-position: center;
background-color: #141208;
aspect-ratio: 3 / 2;
border-right: 5px solid #ffe564;
}
#bloque-articulos-semana .card__content {
flex: 1;
padding: 24px 32px;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
}
#bloque-articulos-semana .card__badge {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
#bloque-articulos-semana .card__badge-icon {
width: 34px;
height: 34px;
border-radius: 50%;
background: #ffe564;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
#bloque-articulos-semana .card__badge-icon svg {
width: 18px;
height: 18px;
stroke: #141208;
}
#bloque-articulos-semana .card__badge-text {
color: #141208;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.4px;
text-transform: uppercase;
}
#bloque-articulos-semana .card__badge-line {
width: 28px;
height: 2px;
background: #ffe564;
margin: 4px 0 16px 0;
}
#bloque-articulos-semana .card__title {
font-size: 22px;
line-height: 1.25;
font-weight: 700;
color: #141208;
margin-bottom: 14px;
}
#bloque-articulos-semana .card__divider {
width: 42px;
height: 3px;
background: #ffe564;
margin-bottom: 16px;
}
#bloque-articulos-semana .card__description {
font-size: 13px;
line-height: 1.55;
color: #333;
margin-bottom: 18px;
max-width: 480px;
}
#bloque-articulos-semana .card__button {
display: inline-flex;
align-items: center;
gap: 8px;
background: #141208;
color: #ffe564;
font-size: 13px;
font-weight: 600;
padding: 10px 17px;
border-radius: 4px;
text-decoration: none;
width: fit-content;
border: none;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
#bloque-articulos-semana .card:hover .card__button { background: #ffe564; color: #141208; }
#bloque-articulos-semana .card__button svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
#bloque-articulos-semana .estado {
text-align: center;
color: #666;
font-size: 14px;
padding: 20px;
}

#bloque-articulos-semana .card--sin-imagen .card__image { display: none; }

/* ===== MOBILE ===== */
@media (max-width: 768px) {
#bloque-articulos-semana .card { flex-direction: column; }
#bloque-articulos-semana .card__image {
flex: none;
width: 100%;
aspect-ratio: 16 / 9;
border-right: none;
border-bottom: 5px solid #ffe564;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
#bloque-articulos-semana .card__content { padding: 20px 20px; }
#bloque-articulos-semana .card__title { font-size: 19px; }
#bloque-articulos-semana .card__description { max-width: 100%; }
}
</style>
</head>
<body>
<div id="embed-root">
  <div id="bloque-articulos-semana">
    <div id="contenedor">
      <p class="estado">Cargando artículos...</p>
    </div>
  </div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME (mismo origen por srcdoc -> frameElement)
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  // ============================================================
  // CONFIGURACIÓN — URL del CSV publicado (Archivo > Compartir >
  // Publicar en la web > pestaña > formato CSV)
  // ============================================================
  var URL_CSV = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSRKuWkbSgs4Ke_bu_Pegz87qleknh740sR2HmCp2IKy6LqLgR2qHQ5A_eQMtHW8NgURMlsxtYVFcAJ/pub?gid=1832111331&amp;single=true&amp;output=csv";

  // Icono de edificio / empresa (lucide building-complex)
  var badgeSVG =
    &#39;<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M10 12h4"/>&#39; +
    &#39;<path d="M10 8h4"/>&#39; +
    &#39;<path d="M14 21v-3a2 2 0 0 0-4 0v3"/>&#39; +
    &#39;<path d="M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2"/>&#39; +
    &#39;<path d="M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/>&#39; +
    &#39;</svg>&#39;;

  var arrowSVG =
    &#39;<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M5 12h14M13 6l6 6-6 6"></path>&#39; +
    &#39;</svg>&#39;;

  // Parser CSV simple, soporta campos entre comillas con comas internas
  function parsearCSV(texto) {
    var filas = [];
    var fila = [];
    var campo = &#39;&#39;;
    var dentroComillas = false;

    for (var i = 0; i < texto.length; i++) {
      var char = texto[i];
      var siguiente = texto[i + 1];

      if (dentroComillas) {
        if (char === &#39;"&#39; &amp;&amp; siguiente === &#39;"&#39;) {
          campo += &#39;"&#39;;
          i++;
        } else if (char === &#39;"&#39;) {
          dentroComillas = false;
        } else {
          campo += char;
        }
      } else {
        if (char === &#39;"&#39;) {
          dentroComillas = true;
        } else if (char === &#39;,&#39;) {
          fila.push(campo);
          campo = &#39;&#39;;
        } else if (char === &#39;\n&#39; || char === &#39;\r&#39;) {
          if (char === &#39;\r&#39; &amp;&amp; siguiente === &#39;\n&#39;) i++;
          fila.push(campo);
          filas.push(fila);
          fila = [];
          campo = &#39;&#39;;
        } else {
          campo += char;
        }
      }
    }

    if (campo.length > 0 || fila.length > 0) {
      fila.push(campo);
      filas.push(fila);
    }

    return filas.filter(function(f) { return f.some(function(c) { return c.trim() !== &#39;&#39;; }); });
  }

  function normalizarURL(url) {
    if (!url) return &#39;&#39;;
    url = url.trim();
    url = url.replace(/^(https?:\/\/)?([^\/]+)\/+/, function(m, proto, domain) {
      return (proto || &#39;&#39;) + domain + &#39;/&#39;;
    });
    if (!/^https?:\/\//i.test(url)) {
      url = &#39;https://&#39; + url;
    }
    return url;
  }

  function csvAArticulos(texto) {
    var filas = parsearCSV(texto);
    if (filas.length > 0 &amp;&amp; /url/i.test(filas[0][0])) {
      filas = filas.slice(1);
    }
    return filas.map(function(fila) {
      return {
        url: normalizarURL(fila[0] || &#39;&#39;),
        titulo: fila[1] || &#39;&#39;,
        chapo: fila[2] || &#39;&#39;,
        imagen: fila[3] || &#39;&#39;
      };
    }).filter(function(a) { return a.url !== &#39;&#39;; });
  }

  function crearTarjeta(articulo) {
    var a = document.createElement(&#39;a&#39;);
    a.className = &#39;card&#39;;
    a.href = articulo.url;
    a.target = &#39;_blank&#39;;
    a.rel = &#39;noopener noreferrer&#39;;

    if (!articulo.imagen.trim()) { a.className += &#39; card--sin-imagen&#39;; }

    a.innerHTML =
      (articulo.imagen.trim() ? &#39;<div class="card__image" style="background-image: url(\&#39;&#39; + articulo.imagen.trim() + &#39;\&#39;)"></div>&#39; : &#39;&#39;) +
      &#39;<div class="card__content">&#39; +
        &#39;<div class="card__badge">&#39; +
          &#39;<div class="card__badge-icon">&#39; + badgeSVG + &#39;</div>&#39; +
          &#39;<span class="card__badge-text">5.000 empresas</span>&#39; +
        &#39;</div>&#39; +
        &#39;<div class="card__badge-line"></div>&#39; +
        &#39;<h2 class="card__title">&#39; + articulo.titulo + &#39;</h2>&#39; +
        &#39;<div class="card__divider"></div>&#39; +
        &#39;<p class="card__description">&#39; + articulo.chapo + &#39;</p>&#39; +
        &#39;<span class="card__button">Leer artículo &#39; + arrowSVG + &#39;</span>&#39; +
      &#39;</div>&#39;;

    return a;
  }

  function cargarArticulos() {
    var contenedor = document.getElementById(&#39;contenedor&#39;);

    fetch(URL_CSV)
      .then(function(res) {
        if (!res.ok) { throw new Error(&#39;HTTP &#39; + res.status); }
        return res.text();
      })
      .then(function(texto) {
        contenedor.innerHTML = &#39;&#39;;
        var articulos = csvAArticulos(texto);

        if (!articulos || articulos.length === 0) {
          contenedor.innerHTML = &#39;<p class="estado">No hay artículos disponibles.</p>&#39;;
          return;
        }

        articulos.forEach(function(articulo) {
          contenedor.appendChild(crearTarjeta(articulo));
        });

        Array.from(document.images).forEach(function(img) {
          if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
        });
        sendHeight();
      })
      .catch(function(err) {
        contenedor.innerHTML = &#39;<p class="estado">Error al cargar los artículos.</p>&#39;;
        console.error(&#39;Error cargando CSV:&#39;, URL_CSV, err);
      });
  }

  cargarArticulos();
})();
</script>
</body>
</html>
'></iframe>
</div>

<!-- SEPARADOR INFERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div></p><p><!-- ===== INICIO: título ===== -->
<!-- HTML y CSS estático, sin script ni iframe. Para cambiar el texto, edita solo lo que está dentro del <div class="titulo-semana"> -->
<style>
@font-face{font-family:'SemanaSans-Regular';src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format('truetype');font-display:swap;}

/* Caja de 850px máximo, centrada en la página */
.titulo-semana-caja{ width:100%; max-width:780px; margin:0 auto; padding:0 4px; box-sizing:border-box; }

.titulo-semana{
  margin:0 0 16px; padding:0;
  font-family:'SemanaSans-Regular', Arial, sans-serif; font-size:31px; line-height:1.15; font-weight:300;
  color:#141208; text-align:left; text-transform:none; letter-spacing:normal;
  -webkit-text-stroke:1.2px #141208;
}
</style>

<div class="titulo-semana-caja">
  <div class="titulo-semana" role="heading" aria-level="2">Pocas, pero ruidosas</div>
</div>
<!-- ===== FIN: título ===== --></p><p>Las tecnológicas colombianas aún son pocas frente al total de las unidades productivas del país, pero tienen el denominador común de crecer de forma acelerada. Sus fundadores son jóvenes o segundas generaciones de propietarios, varios de ellos educados en el exterior, y convencidos de que de la mano de herramientas digitales pueden crear negocios rentables y además de gran impacto. Uno de ellos es Sebastián Noguera, cofundador y presidente de Habi, quien asegura que su apuesta laboral ha estado en construir empresas que le permitan avanzar a la clase media. “Y la gran palanca para que esto ocurra es la tecnología”, precisa. </p><p><!-- ============================================================= -->
<!-- Bloque 3: articulos comerciales (Pestana 3) en IFRAME srcdoc  -->
<!-- Pagina exterior estatica, sin <script>. Pegar en bloque HTML   -->
<!-- de Arc Publishing. Paleta: negro #141208 | amarillo #ffe564    -->
<!-- ============================================================= -->
<style>
.galap-root, .galap-root *, .galap-root *::before, .galap-root *::after { box-sizing: border-box; }
.galap-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.galap-root iframe {
  display: block;
  width: 100%;
  height: 620px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
.organizador {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 75px;
  width: 100%;
  position: relative;
}
.linea-parrafo2 {
  border-bottom: 1.8px solid #141208;
  width: 400px;
  max-width: 100%;
  position: relative;
  margin: 0 auto;
}
.rombo1 {
  width: 10px;
  height: 10px;
  background: #141208;
  transform: rotate(45deg);
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
}
</style>

<!-- SEPARADOR SUPERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div>

<div class="galap-root">
<iframe id="galap-iframe-3" title="Articulos comerciales 3" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 400;
}
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSfNXAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 700;
}
html, body { margin: 0; padding: 0; overflow: hidden; background: transparent; }

#bloque-articulos-semana,
#bloque-articulos-semana * { box-sizing: border-box; }

#bloque-articulos-semana {
font-family: &#39;Archivo&#39;, -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Arial, sans-serif;
padding: 24px 20px;
margin: 0;
}
#bloque-articulos-semana p,
#bloque-articulos-semana h2,
#bloque-articulos-semana div,
#bloque-articulos-semana span { margin: 0; padding: 0; }

#bloque-articulos-semana #contenedor {
display: flex;
flex-direction: column;
gap: 24px;
max-width: 850px;
margin: 0 auto;
}

#bloque-articulos-semana .card {
max-width: 850px;
width: 100%;
display: flex;
align-items: stretch;
background: #f2f4f7;
border-radius: 4px;
overflow: hidden;
text-decoration: none;
}
#bloque-articulos-semana .card__image {
flex: 0 0 45%;
position: relative;
background-size: cover;
background-position: center;
background-color: #141208;
aspect-ratio: 3 / 2;
border-right: 5px solid #ffe564;
}
#bloque-articulos-semana .card__content {
flex: 1;
padding: 24px 32px;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
}
#bloque-articulos-semana .card__badge {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
#bloque-articulos-semana .card__badge-icon {
width: 34px;
height: 34px;
border-radius: 50%;
background: #ffe564;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
#bloque-articulos-semana .card__badge-icon svg {
width: 18px;
height: 18px;
stroke: #141208;
}
#bloque-articulos-semana .card__badge-text {
color: #141208;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.4px;
text-transform: uppercase;
}
#bloque-articulos-semana .card__badge-line {
width: 28px;
height: 2px;
background: #ffe564;
margin: 4px 0 16px 0;
}
#bloque-articulos-semana .card__title {
font-size: 22px;
line-height: 1.25;
font-weight: 700;
color: #141208;
margin-bottom: 14px;
}
#bloque-articulos-semana .card__divider {
width: 42px;
height: 3px;
background: #ffe564;
margin-bottom: 16px;
}
#bloque-articulos-semana .card__description {
font-size: 13px;
line-height: 1.55;
color: #333;
margin-bottom: 18px;
max-width: 480px;
}
#bloque-articulos-semana .card__button {
display: inline-flex;
align-items: center;
gap: 8px;
background: #141208;
color: #ffe564;
font-size: 13px;
font-weight: 600;
padding: 10px 17px;
border-radius: 4px;
text-decoration: none;
width: fit-content;
border: none;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
#bloque-articulos-semana .card:hover .card__button { background: #ffe564; color: #141208; }
#bloque-articulos-semana .card__button svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
#bloque-articulos-semana .estado {
text-align: center;
color: #666;
font-size: 14px;
padding: 20px;
}

#bloque-articulos-semana .card--sin-imagen .card__image { display: none; }

/* ===== MOBILE ===== */
@media (max-width: 768px) {
#bloque-articulos-semana .card { flex-direction: column; }
#bloque-articulos-semana .card__image {
flex: none;
width: 100%;
aspect-ratio: 16 / 9;
border-right: none;
border-bottom: 5px solid #ffe564;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
#bloque-articulos-semana .card__content { padding: 20px 20px; }
#bloque-articulos-semana .card__title { font-size: 19px; }
#bloque-articulos-semana .card__description { max-width: 100%; }
}
</style>
</head>
<body>
<div id="embed-root">
  <div id="bloque-articulos-semana">
    <div id="contenedor">
      <p class="estado">Cargando artículos...</p>
    </div>
  </div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME (mismo origen por srcdoc -> frameElement)
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  // ============================================================
  // CONFIGURACIÓN — URL del CSV publicado (Archivo > Compartir >
  // Publicar en la web > pestaña > formato CSV)
  // ============================================================
  var URL_CSV = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSRKuWkbSgs4Ke_bu_Pegz87qleknh740sR2HmCp2IKy6LqLgR2qHQ5A_eQMtHW8NgURMlsxtYVFcAJ/pub?gid=1150468467&amp;single=true&amp;output=csv";

  // Icono de edificio / empresa (lucide building-complex)
  var badgeSVG =
    &#39;<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M10 12h4"/>&#39; +
    &#39;<path d="M10 8h4"/>&#39; +
    &#39;<path d="M14 21v-3a2 2 0 0 0-4 0v3"/>&#39; +
    &#39;<path d="M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2"/>&#39; +
    &#39;<path d="M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/>&#39; +
    &#39;</svg>&#39;;

  var arrowSVG =
    &#39;<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M5 12h14M13 6l6 6-6 6"></path>&#39; +
    &#39;</svg>&#39;;

  // Parser CSV simple, soporta campos entre comillas con comas internas
  function parsearCSV(texto) {
    var filas = [];
    var fila = [];
    var campo = &#39;&#39;;
    var dentroComillas = false;

    for (var i = 0; i < texto.length; i++) {
      var char = texto[i];
      var siguiente = texto[i + 1];

      if (dentroComillas) {
        if (char === &#39;"&#39; &amp;&amp; siguiente === &#39;"&#39;) {
          campo += &#39;"&#39;;
          i++;
        } else if (char === &#39;"&#39;) {
          dentroComillas = false;
        } else {
          campo += char;
        }
      } else {
        if (char === &#39;"&#39;) {
          dentroComillas = true;
        } else if (char === &#39;,&#39;) {
          fila.push(campo);
          campo = &#39;&#39;;
        } else if (char === &#39;\n&#39; || char === &#39;\r&#39;) {
          if (char === &#39;\r&#39; &amp;&amp; siguiente === &#39;\n&#39;) i++;
          fila.push(campo);
          filas.push(fila);
          fila = [];
          campo = &#39;&#39;;
        } else {
          campo += char;
        }
      }
    }

    if (campo.length > 0 || fila.length > 0) {
      fila.push(campo);
      filas.push(fila);
    }

    return filas.filter(function(f) { return f.some(function(c) { return c.trim() !== &#39;&#39;; }); });
  }

  function normalizarURL(url) {
    if (!url) return &#39;&#39;;
    url = url.trim();
    url = url.replace(/^(https?:\/\/)?([^\/]+)\/+/, function(m, proto, domain) {
      return (proto || &#39;&#39;) + domain + &#39;/&#39;;
    });
    if (!/^https?:\/\//i.test(url)) {
      url = &#39;https://&#39; + url;
    }
    return url;
  }

  function csvAArticulos(texto) {
    var filas = parsearCSV(texto);
    if (filas.length > 0 &amp;&amp; /url/i.test(filas[0][0])) {
      filas = filas.slice(1);
    }
    return filas.map(function(fila) {
      return {
        url: normalizarURL(fila[0] || &#39;&#39;),
        titulo: fila[1] || &#39;&#39;,
        chapo: fila[2] || &#39;&#39;,
        imagen: fila[3] || &#39;&#39;
      };
    }).filter(function(a) { return a.url !== &#39;&#39;; });
  }

  function crearTarjeta(articulo) {
    var a = document.createElement(&#39;a&#39;);
    a.className = &#39;card&#39;;
    a.href = articulo.url;
    a.target = &#39;_blank&#39;;
    a.rel = &#39;noopener noreferrer&#39;;

    if (!articulo.imagen.trim()) { a.className += &#39; card--sin-imagen&#39;; }

    a.innerHTML =
      (articulo.imagen.trim() ? &#39;<div class="card__image" style="background-image: url(\&#39;&#39; + articulo.imagen.trim() + &#39;\&#39;)"></div>&#39; : &#39;&#39;) +
      &#39;<div class="card__content">&#39; +
        &#39;<div class="card__badge">&#39; +
          &#39;<div class="card__badge-icon">&#39; + badgeSVG + &#39;</div>&#39; +
          &#39;<span class="card__badge-text">5.000 empresas</span>&#39; +
        &#39;</div>&#39; +
        &#39;<div class="card__badge-line"></div>&#39; +
        &#39;<h2 class="card__title">&#39; + articulo.titulo + &#39;</h2>&#39; +
        &#39;<div class="card__divider"></div>&#39; +
        &#39;<p class="card__description">&#39; + articulo.chapo + &#39;</p>&#39; +
        &#39;<span class="card__button">Leer artículo &#39; + arrowSVG + &#39;</span>&#39; +
      &#39;</div>&#39;;

    return a;
  }

  function cargarArticulos() {
    var contenedor = document.getElementById(&#39;contenedor&#39;);

    fetch(URL_CSV)
      .then(function(res) {
        if (!res.ok) { throw new Error(&#39;HTTP &#39; + res.status); }
        return res.text();
      })
      .then(function(texto) {
        contenedor.innerHTML = &#39;&#39;;
        var articulos = csvAArticulos(texto);

        if (!articulos || articulos.length === 0) {
          contenedor.innerHTML = &#39;<p class="estado">No hay artículos disponibles.</p>&#39;;
          return;
        }

        articulos.forEach(function(articulo) {
          contenedor.appendChild(crearTarjeta(articulo));
        });

        Array.from(document.images).forEach(function(img) {
          if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
        });
        sendHeight();
      })
      .catch(function(err) {
        contenedor.innerHTML = &#39;<p class="estado">Error al cargar los artículos.</p>&#39;;
        console.error(&#39;Error cargando CSV:&#39;, URL_CSV, err);
      });
  }

  cargarArticulos();
})();
</script>
</body>
</html>
'></iframe>
</div>

<!-- SEPARADOR INFERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div></p><p>Fue uno de los fundadores de Merqueo, el primer supermercado digital del país, y ahora está al frente de una compañía que busca estandarizar y facilitar los trámites para la compra y venta de vivienda, claramente de la mano de recursos tecnológicos que aceleran y abaratan los procesos.</p><p>Algo similar le ocurrió a Santiago Suárez, CEO y cofundador de Addi, quien tenía la convicción de que en el país se podía hacer banca de otra manera y con enfoque más incluyente. Su meta era formar parte del equipo que iba a crear ese nuevo futuro y logró una revolución en el crédito de consumo, que hoy financia a 4 millones de colombianos.</p><p><!-- ============================================================= -->
<!-- Bloque 4: articulos comerciales (Pestana 4) en IFRAME srcdoc  -->
<!-- Pagina exterior estatica, sin <script>. Pegar en bloque HTML   -->
<!-- de Arc Publishing. Paleta: negro #141208 | amarillo #ffe564    -->
<!-- ============================================================= -->
<style>
.galap-root, .galap-root *, .galap-root *::before, .galap-root *::after { box-sizing: border-box; }
.galap-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.galap-root iframe {
  display: block;
  width: 100%;
  height: 620px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
.organizador {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 75px;
  width: 100%;
  position: relative;
}
.linea-parrafo2 {
  border-bottom: 1.8px solid #141208;
  width: 400px;
  max-width: 100%;
  position: relative;
  margin: 0 auto;
}
.rombo1 {
  width: 10px;
  height: 10px;
  background: #141208;
  transform: rotate(45deg);
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
}
</style>

<!-- SEPARADOR SUPERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div>

<div class="galap-root">
<iframe id="galap-iframe-4" title="Articulos comerciales 4" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 400;
}
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSfNXAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 700;
}
html, body { margin: 0; padding: 0; overflow: hidden; background: transparent; }

#bloque-articulos-semana,
#bloque-articulos-semana * { box-sizing: border-box; }

#bloque-articulos-semana {
font-family: &#39;Archivo&#39;, -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Arial, sans-serif;
padding: 24px 20px;
margin: 0;
}
#bloque-articulos-semana p,
#bloque-articulos-semana h2,
#bloque-articulos-semana div,
#bloque-articulos-semana span { margin: 0; padding: 0; }

#bloque-articulos-semana #contenedor {
display: flex;
flex-direction: column;
gap: 24px;
max-width: 850px;
margin: 0 auto;
}

#bloque-articulos-semana .card {
max-width: 850px;
width: 100%;
display: flex;
align-items: stretch;
background: #f2f4f7;
border-radius: 4px;
overflow: hidden;
text-decoration: none;
}
#bloque-articulos-semana .card__image {
flex: 0 0 45%;
position: relative;
background-size: cover;
background-position: center;
background-color: #141208;
aspect-ratio: 3 / 2;
border-right: 5px solid #ffe564;
}
#bloque-articulos-semana .card__content {
flex: 1;
padding: 24px 32px;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
}
#bloque-articulos-semana .card__badge {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
#bloque-articulos-semana .card__badge-icon {
width: 34px;
height: 34px;
border-radius: 50%;
background: #ffe564;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
#bloque-articulos-semana .card__badge-icon svg {
width: 18px;
height: 18px;
stroke: #141208;
}
#bloque-articulos-semana .card__badge-text {
color: #141208;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.4px;
text-transform: uppercase;
}
#bloque-articulos-semana .card__badge-line {
width: 28px;
height: 2px;
background: #ffe564;
margin: 4px 0 16px 0;
}
#bloque-articulos-semana .card__title {
font-size: 22px;
line-height: 1.25;
font-weight: 700;
color: #141208;
margin-bottom: 14px;
}
#bloque-articulos-semana .card__divider {
width: 42px;
height: 3px;
background: #ffe564;
margin-bottom: 16px;
}
#bloque-articulos-semana .card__description {
font-size: 13px;
line-height: 1.55;
color: #333;
margin-bottom: 18px;
max-width: 480px;
}
#bloque-articulos-semana .card__button {
display: inline-flex;
align-items: center;
gap: 8px;
background: #141208;
color: #ffe564;
font-size: 13px;
font-weight: 600;
padding: 10px 17px;
border-radius: 4px;
text-decoration: none;
width: fit-content;
border: none;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
#bloque-articulos-semana .card:hover .card__button { background: #ffe564; color: #141208; }
#bloque-articulos-semana .card__button svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
#bloque-articulos-semana .estado {
text-align: center;
color: #666;
font-size: 14px;
padding: 20px;
}

#bloque-articulos-semana .card--sin-imagen .card__image { display: none; }

/* ===== MOBILE ===== */
@media (max-width: 768px) {
#bloque-articulos-semana .card { flex-direction: column; }
#bloque-articulos-semana .card__image {
flex: none;
width: 100%;
aspect-ratio: 16 / 9;
border-right: none;
border-bottom: 5px solid #ffe564;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
#bloque-articulos-semana .card__content { padding: 20px 20px; }
#bloque-articulos-semana .card__title { font-size: 19px; }
#bloque-articulos-semana .card__description { max-width: 100%; }
}
</style>
</head>
<body>
<div id="embed-root">
  <div id="bloque-articulos-semana">
    <div id="contenedor">
      <p class="estado">Cargando artículos...</p>
    </div>
  </div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME (mismo origen por srcdoc -> frameElement)
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  // ============================================================
  // CONFIGURACIÓN — URL del CSV publicado (Archivo > Compartir >
  // Publicar en la web > pestaña > formato CSV)
  // ============================================================
  var URL_CSV = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSRKuWkbSgs4Ke_bu_Pegz87qleknh740sR2HmCp2IKy6LqLgR2qHQ5A_eQMtHW8NgURMlsxtYVFcAJ/pub?gid=2032530472&amp;single=true&amp;output=csv";

  // Icono de edificio / empresa (lucide building-complex)
  var badgeSVG =
    &#39;<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M10 12h4"/>&#39; +
    &#39;<path d="M10 8h4"/>&#39; +
    &#39;<path d="M14 21v-3a2 2 0 0 0-4 0v3"/>&#39; +
    &#39;<path d="M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2"/>&#39; +
    &#39;<path d="M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/>&#39; +
    &#39;</svg>&#39;;

  var arrowSVG =
    &#39;<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M5 12h14M13 6l6 6-6 6"></path>&#39; +
    &#39;</svg>&#39;;

  // Parser CSV simple, soporta campos entre comillas con comas internas
  function parsearCSV(texto) {
    var filas = [];
    var fila = [];
    var campo = &#39;&#39;;
    var dentroComillas = false;

    for (var i = 0; i < texto.length; i++) {
      var char = texto[i];
      var siguiente = texto[i + 1];

      if (dentroComillas) {
        if (char === &#39;"&#39; &amp;&amp; siguiente === &#39;"&#39;) {
          campo += &#39;"&#39;;
          i++;
        } else if (char === &#39;"&#39;) {
          dentroComillas = false;
        } else {
          campo += char;
        }
      } else {
        if (char === &#39;"&#39;) {
          dentroComillas = true;
        } else if (char === &#39;,&#39;) {
          fila.push(campo);
          campo = &#39;&#39;;
        } else if (char === &#39;\n&#39; || char === &#39;\r&#39;) {
          if (char === &#39;\r&#39; &amp;&amp; siguiente === &#39;\n&#39;) i++;
          fila.push(campo);
          filas.push(fila);
          fila = [];
          campo = &#39;&#39;;
        } else {
          campo += char;
        }
      }
    }

    if (campo.length > 0 || fila.length > 0) {
      fila.push(campo);
      filas.push(fila);
    }

    return filas.filter(function(f) { return f.some(function(c) { return c.trim() !== &#39;&#39;; }); });
  }

  function normalizarURL(url) {
    if (!url) return &#39;&#39;;
    url = url.trim();
    url = url.replace(/^(https?:\/\/)?([^\/]+)\/+/, function(m, proto, domain) {
      return (proto || &#39;&#39;) + domain + &#39;/&#39;;
    });
    if (!/^https?:\/\//i.test(url)) {
      url = &#39;https://&#39; + url;
    }
    return url;
  }

  function csvAArticulos(texto) {
    var filas = parsearCSV(texto);
    if (filas.length > 0 &amp;&amp; /url/i.test(filas[0][0])) {
      filas = filas.slice(1);
    }
    return filas.map(function(fila) {
      return {
        url: normalizarURL(fila[0] || &#39;&#39;),
        titulo: fila[1] || &#39;&#39;,
        chapo: fila[2] || &#39;&#39;,
        imagen: fila[3] || &#39;&#39;
      };
    }).filter(function(a) { return a.url !== &#39;&#39;; });
  }

  function crearTarjeta(articulo) {
    var a = document.createElement(&#39;a&#39;);
    a.className = &#39;card&#39;;
    a.href = articulo.url;
    a.target = &#39;_blank&#39;;
    a.rel = &#39;noopener noreferrer&#39;;

    if (!articulo.imagen.trim()) { a.className += &#39; card--sin-imagen&#39;; }

    a.innerHTML =
      (articulo.imagen.trim() ? &#39;<div class="card__image" style="background-image: url(\&#39;&#39; + articulo.imagen.trim() + &#39;\&#39;)"></div>&#39; : &#39;&#39;) +
      &#39;<div class="card__content">&#39; +
        &#39;<div class="card__badge">&#39; +
          &#39;<div class="card__badge-icon">&#39; + badgeSVG + &#39;</div>&#39; +
          &#39;<span class="card__badge-text">5.000 empresas</span>&#39; +
        &#39;</div>&#39; +
        &#39;<div class="card__badge-line"></div>&#39; +
        &#39;<h2 class="card__title">&#39; + articulo.titulo + &#39;</h2>&#39; +
        &#39;<div class="card__divider"></div>&#39; +
        &#39;<p class="card__description">&#39; + articulo.chapo + &#39;</p>&#39; +
        &#39;<span class="card__button">Leer artículo &#39; + arrowSVG + &#39;</span>&#39; +
      &#39;</div>&#39;;

    return a;
  }

  function cargarArticulos() {
    var contenedor = document.getElementById(&#39;contenedor&#39;);

    fetch(URL_CSV)
      .then(function(res) {
        if (!res.ok) { throw new Error(&#39;HTTP &#39; + res.status); }
        return res.text();
      })
      .then(function(texto) {
        contenedor.innerHTML = &#39;&#39;;
        var articulos = csvAArticulos(texto);

        if (!articulos || articulos.length === 0) {
          contenedor.innerHTML = &#39;<p class="estado">No hay artículos disponibles.</p>&#39;;
          return;
        }

        articulos.forEach(function(articulo) {
          contenedor.appendChild(crearTarjeta(articulo));
        });

        Array.from(document.images).forEach(function(img) {
          if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
        });
        sendHeight();
      })
      .catch(function(err) {
        contenedor.innerHTML = &#39;<p class="estado">Error al cargar los artículos.</p>&#39;;
        console.error(&#39;Error cargando CSV:&#39;, URL_CSV, err);
      });
  }

  cargarArticulos();
})();
</script>
</body>
</html>
'></iframe>
</div>

<!-- SEPARADOR INFERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div></p><p>Así mismo, José Vélez, CEO y cofundador de Bold, cambió el juego de los datafonos en el país, al desarrollar y comercializar unos aparatos pequeños y móviles, que les sirven a microempresarios, emprendedores e incluso a negocios más grandes. De la misma manera, pocos se imaginarían que antes de que existiera Google Maps, dos hermanas caleñas habían creado en Bogotá una empresa de mapas digitales, que comenzó sistematizando el directorio de páginas blancas de Bogotá y hoy es uno de los principales partners de la gigante estadounidense.</p><p>Sin embargo, el gran referente tecnológico del país es Rappi, la compañía que pintó de naranja de las calles de nueve países, transformó los domicilios y ha acelerado el crecimiento de la industria gastronómica, mientras ofrece nuevas alternativas laborales, que antes no se contemplaban.</p><p><!-- ===== INICIO: título ===== -->
<!-- HTML y CSS estático, sin script ni iframe. Para cambiar el texto, edita solo lo que está dentro del <div class="titulo-semana"> -->
<style>
@font-face{font-family:'SemanaSans-Regular';src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format('truetype');font-display:swap;}

/* Caja de 850px máximo, centrada en la página */
.titulo-semana-caja{ width:100%; max-width:780px; margin:0 auto; padding:0 4px; box-sizing:border-box; }

.titulo-semana{
  margin:0 0 16px; padding:0;
  font-family:'SemanaSans-Regular', Arial, sans-serif; font-size:31px; line-height:1.15; font-weight:300;
  color:#141208; text-align:left; text-transform:none; letter-spacing:normal;
  -webkit-text-stroke:1.2px #141208;
}
</style>

<div class="titulo-semana-caja">
  <div class="titulo-semana" role="heading" aria-level="2">Crecen más rápido</div>
</div>
<!-- ===== FIN: título ===== --></p><p>Esta edición de Dinero está dedicada a las 5.000 empresas más grandes del país, medidas por sus ventas en 2025. Aunque dentro de ese grupo solo 210 pertenecen a los sectores de telecomunicaciones y actividades de TI, sus cifras muestran un crecimiento más acelerado. En conjunto, esas 5.000 compañías vendieron 2.213 billones de pesos en 2025, 6,3 por ciento más que un año atrás; las tecnológicas, en cambio, registraron ingresos por 82 billones de pesos, con un aumento anual de 18 por ciento.</p><p><!-- ============================================================= -->
<!-- Bloque 5: articulos comerciales (Pestana 1, hoja 2) en IFRAME -->
<!-- Pagina exterior estatica, sin <script>. Pegar en bloque HTML   -->
<!-- de Arc Publishing. Paleta: negro #141208 | amarillo #ffe564    -->
<!-- ============================================================= -->
<style>
.galap-root, .galap-root *, .galap-root *::before, .galap-root *::after { box-sizing: border-box; }
.galap-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.galap-root iframe {
  display: block;
  width: 100%;
  height: 620px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
.organizador {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 75px;
  width: 100%;
  position: relative;
}
.linea-parrafo2 {
  border-bottom: 1.8px solid #141208;
  width: 400px;
  max-width: 100%;
  position: relative;
  margin: 0 auto;
}
.rombo1 {
  width: 10px;
  height: 10px;
  background: #141208;
  transform: rotate(45deg);
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
}
</style>

<!-- SEPARADOR SUPERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div>

<div class="galap-root">
<iframe id="galap-iframe-5" title="Articulos comerciales 5" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 400;
}
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSfNXAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 700;
}
html, body { margin: 0; padding: 0; overflow: hidden; background: transparent; }

#bloque-articulos-semana,
#bloque-articulos-semana * { box-sizing: border-box; }

#bloque-articulos-semana {
font-family: &#39;Archivo&#39;, -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Arial, sans-serif;
padding: 24px 20px;
margin: 0;
}
#bloque-articulos-semana p,
#bloque-articulos-semana h2,
#bloque-articulos-semana div,
#bloque-articulos-semana span { margin: 0; padding: 0; }

#bloque-articulos-semana #contenedor {
display: flex;
flex-direction: column;
gap: 24px;
max-width: 850px;
margin: 0 auto;
}

#bloque-articulos-semana .card {
max-width: 850px;
width: 100%;
display: flex;
align-items: stretch;
background: #f2f4f7;
border-radius: 4px;
overflow: hidden;
text-decoration: none;
}
#bloque-articulos-semana .card__image {
flex: 0 0 45%;
position: relative;
background-size: cover;
background-position: center;
background-color: #141208;
aspect-ratio: 3 / 2;
border-right: 5px solid #ffe564;
}
#bloque-articulos-semana .card__content {
flex: 1;
padding: 24px 32px;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
}
#bloque-articulos-semana .card__badge {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
#bloque-articulos-semana .card__badge-icon {
width: 34px;
height: 34px;
border-radius: 50%;
background: #ffe564;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
#bloque-articulos-semana .card__badge-icon svg {
width: 18px;
height: 18px;
stroke: #141208;
}
#bloque-articulos-semana .card__badge-text {
color: #141208;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.4px;
text-transform: uppercase;
}
#bloque-articulos-semana .card__badge-line {
width: 28px;
height: 2px;
background: #ffe564;
margin: 4px 0 16px 0;
}
#bloque-articulos-semana .card__title {
font-size: 22px;
line-height: 1.25;
font-weight: 700;
color: #141208;
margin-bottom: 14px;
}
#bloque-articulos-semana .card__divider {
width: 42px;
height: 3px;
background: #ffe564;
margin-bottom: 16px;
}
#bloque-articulos-semana .card__description {
font-size: 13px;
line-height: 1.55;
color: #333;
margin-bottom: 18px;
max-width: 480px;
}
#bloque-articulos-semana .card__button {
display: inline-flex;
align-items: center;
gap: 8px;
background: #141208;
color: #ffe564;
font-size: 13px;
font-weight: 600;
padding: 10px 17px;
border-radius: 4px;
text-decoration: none;
width: fit-content;
border: none;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
#bloque-articulos-semana .card:hover .card__button { background: #ffe564; color: #141208; }
#bloque-articulos-semana .card__button svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
#bloque-articulos-semana .estado {
text-align: center;
color: #666;
font-size: 14px;
padding: 20px;
}

#bloque-articulos-semana .card--sin-imagen .card__image { display: none; }

/* ===== MOBILE ===== */
@media (max-width: 768px) {
#bloque-articulos-semana .card { flex-direction: column; }
#bloque-articulos-semana .card__image {
flex: none;
width: 100%;
aspect-ratio: 16 / 9;
border-right: none;
border-bottom: 5px solid #ffe564;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
#bloque-articulos-semana .card__content { padding: 20px 20px; }
#bloque-articulos-semana .card__title { font-size: 19px; }
#bloque-articulos-semana .card__description { max-width: 100%; }
}
</style>
</head>
<body>
<div id="embed-root">
  <div id="bloque-articulos-semana">
    <div id="contenedor">
      <p class="estado">Cargando artículos...</p>
    </div>
  </div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME (mismo origen por srcdoc -> frameElement)
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  // ============================================================
  // CONFIGURACIÓN — URL del CSV publicado (Archivo > Compartir >
  // Publicar en la web > pestaña > formato CSV)
  // ============================================================
  var URL_CSV = "https://docs.google.com/spreadsheets/d/e/2PACX-1vQVKBsrYEuxnv6mSqw01Yz2EymjR4LjfqKFJ_EJJw9YBU3EpUc_R14UOmLkrJML9fuswOTnPfJiOrVi/pub?gid=0&amp;single=true&amp;output=csv";

  // Icono de edificio / empresa (lucide building-complex)
  var badgeSVG =
    &#39;<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M10 12h4"/>&#39; +
    &#39;<path d="M10 8h4"/>&#39; +
    &#39;<path d="M14 21v-3a2 2 0 0 0-4 0v3"/>&#39; +
    &#39;<path d="M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2"/>&#39; +
    &#39;<path d="M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/>&#39; +
    &#39;</svg>&#39;;

  var arrowSVG =
    &#39;<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M5 12h14M13 6l6 6-6 6"></path>&#39; +
    &#39;</svg>&#39;;

  // Parser CSV simple, soporta campos entre comillas con comas internas
  function parsearCSV(texto) {
    var filas = [];
    var fila = [];
    var campo = &#39;&#39;;
    var dentroComillas = false;

    for (var i = 0; i < texto.length; i++) {
      var char = texto[i];
      var siguiente = texto[i + 1];

      if (dentroComillas) {
        if (char === &#39;"&#39; &amp;&amp; siguiente === &#39;"&#39;) {
          campo += &#39;"&#39;;
          i++;
        } else if (char === &#39;"&#39;) {
          dentroComillas = false;
        } else {
          campo += char;
        }
      } else {
        if (char === &#39;"&#39;) {
          dentroComillas = true;
        } else if (char === &#39;,&#39;) {
          fila.push(campo);
          campo = &#39;&#39;;
        } else if (char === &#39;\n&#39; || char === &#39;\r&#39;) {
          if (char === &#39;\r&#39; &amp;&amp; siguiente === &#39;\n&#39;) i++;
          fila.push(campo);
          filas.push(fila);
          fila = [];
          campo = &#39;&#39;;
        } else {
          campo += char;
        }
      }
    }

    if (campo.length > 0 || fila.length > 0) {
      fila.push(campo);
      filas.push(fila);
    }

    return filas.filter(function(f) { return f.some(function(c) { return c.trim() !== &#39;&#39;; }); });
  }

  function normalizarURL(url) {
    if (!url) return &#39;&#39;;
    url = url.trim();
    url = url.replace(/^(https?:\/\/)?([^\/]+)\/+/, function(m, proto, domain) {
      return (proto || &#39;&#39;) + domain + &#39;/&#39;;
    });
    if (!/^https?:\/\//i.test(url)) {
      url = &#39;https://&#39; + url;
    }
    return url;
  }

  function csvAArticulos(texto) {
    var filas = parsearCSV(texto);
    if (filas.length > 0 &amp;&amp; /url/i.test(filas[0][0])) {
      filas = filas.slice(1);
    }
    return filas.map(function(fila) {
      return {
        url: normalizarURL(fila[0] || &#39;&#39;),
        titulo: fila[1] || &#39;&#39;,
        chapo: fila[2] || &#39;&#39;,
        imagen: fila[3] || &#39;&#39;
      };
    }).filter(function(a) { return a.url !== &#39;&#39;; });
  }

  function crearTarjeta(articulo) {
    var a = document.createElement(&#39;a&#39;);
    a.className = &#39;card&#39;;
    a.href = articulo.url;
    a.target = &#39;_blank&#39;;
    a.rel = &#39;noopener noreferrer&#39;;

    if (!articulo.imagen.trim()) { a.className += &#39; card--sin-imagen&#39;; }

    a.innerHTML =
      (articulo.imagen.trim() ? &#39;<div class="card__image" style="background-image: url(\&#39;&#39; + articulo.imagen.trim() + &#39;\&#39;)"></div>&#39; : &#39;&#39;) +
      &#39;<div class="card__content">&#39; +
        &#39;<div class="card__badge">&#39; +
          &#39;<div class="card__badge-icon">&#39; + badgeSVG + &#39;</div>&#39; +
          &#39;<span class="card__badge-text">5.000 empresas</span>&#39; +
        &#39;</div>&#39; +
        &#39;<div class="card__badge-line"></div>&#39; +
        &#39;<h2 class="card__title">&#39; + articulo.titulo + &#39;</h2>&#39; +
        &#39;<div class="card__divider"></div>&#39; +
        &#39;<p class="card__description">&#39; + articulo.chapo + &#39;</p>&#39; +
        &#39;<span class="card__button">Leer artículo &#39; + arrowSVG + &#39;</span>&#39; +
      &#39;</div>&#39;;

    return a;
  }

  function cargarArticulos() {
    var contenedor = document.getElementById(&#39;contenedor&#39;);

    fetch(URL_CSV)
      .then(function(res) {
        if (!res.ok) { throw new Error(&#39;HTTP &#39; + res.status); }
        return res.text();
      })
      .then(function(texto) {
        contenedor.innerHTML = &#39;&#39;;
        var articulos = csvAArticulos(texto);

        if (!articulos || articulos.length === 0) {
          contenedor.innerHTML = &#39;<p class="estado">No hay artículos disponibles.</p>&#39;;
          return;
        }

        articulos.forEach(function(articulo) {
          contenedor.appendChild(crearTarjeta(articulo));
        });

        Array.from(document.images).forEach(function(img) {
          if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
        });
        sendHeight();
      })
      .catch(function(err) {
        contenedor.innerHTML = &#39;<p class="estado">Error al cargar los artículos.</p>&#39;;
        console.error(&#39;Error cargando CSV:&#39;, URL_CSV, err);
      });
  }

  cargarArticulos();
})();
</script>
</body>
</html>
'></iframe>
</div>

<!-- SEPARADOR INFERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div></p><p>Los tres mayores operadores de telefonía del país, Claro, Telefónica y Tigo (en 2025 estas dos últimas aún no se habían unido), se ubican como las más grandes del sector de telecomunicaciones, todas con propietarios extranjeros. En esa industria hoy sobresale ETB, empresa que recientemente le ha dado un fuerte giro a su operación y su acción hoy brilla en la bolsa.</p><p>En el desarrollo de software, la primera es la paisa Comercial Card, que bajo la marca PTM opera una plataforma transaccional para comercios, con servicios como recargas, pago de facturas, pines, recaudos y otras transacciones. Le siguen 140 empresas, la mayoría de origen extranjero.</p><p>Mientras que entre las 20 compañías más grandes de Colombia solo cinco son filiales de multinacionales —Terpel, Claro, Ara, Enel y Primax—, en el sector tecnológico predominan las empresas de capital extranjero. En ese contexto, resulta más significativo que una compañía nacional logre ubicarse entre las primeras por ventas.</p><p>Rappi y Habi son los dos únicos unicornios colombianos, es decir, empresas emergentes valoradas en más de 1.000 millones de dólares. Junto a ellas aparecen firmas como Servinformación, OlimpIA, Siigo, Gopass y Cobre, entre las tecnológicas colombianas más destacadas.</p><p>Son firmas que no solo compiten a nivel doméstico, sino que cada vez conquistan más mercados externos. Sus fundadores y directivos están convencidos de que la IA será clave en ese proceso. “Colombia no ha logrado ser suficientemente productiva, no hemos podido dar ese salto y la inteligencia artificial, bien manejada, nos puede dar esa oportunidad. Hay gente que la ve como un desastre para el mundo y otros que la ven como lo mejor. Yo creo que puede ser una herramienta extraordinaria”, concluye Mónica Patiño, presidenta de Servinformación.</p><p><!-- ============================================================= -->
<!-- Bloque 6: articulos comerciales (Pestana 2, hoja 2) en IFRAME -->
<!-- Pagina exterior estatica, sin <script>. Pegar en bloque HTML   -->
<!-- de Arc Publishing. Paleta: negro #141208 | amarillo #ffe564    -->
<!-- ============================================================= -->
<style>
.galap-root, .galap-root *, .galap-root *::before, .galap-root *::after { box-sizing: border-box; }
.galap-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.galap-root iframe {
  display: block;
  width: 100%;
  height: 620px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
.organizador {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 75px;
  width: 100%;
  position: relative;
}
.linea-parrafo2 {
  border-bottom: 1.8px solid #141208;
  width: 400px;
  max-width: 100%;
  position: relative;
  margin: 0 auto;
}
.rombo1 {
  width: 10px;
  height: 10px;
  background: #141208;
  transform: rotate(45deg);
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
}
</style>

<!-- SEPARADOR SUPERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div>

<div class="galap-root">
<iframe id="galap-iframe-6" title="Articulos comerciales 6" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 400;
}
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSfNXAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 700;
}
html, body { margin: 0; padding: 0; overflow: hidden; background: transparent; }

#bloque-articulos-semana,
#bloque-articulos-semana * { box-sizing: border-box; }

#bloque-articulos-semana {
font-family: &#39;Archivo&#39;, -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Arial, sans-serif;
padding: 24px 20px;
margin: 0;
}
#bloque-articulos-semana p,
#bloque-articulos-semana h2,
#bloque-articulos-semana div,
#bloque-articulos-semana span { margin: 0; padding: 0; }

#bloque-articulos-semana #contenedor {
display: flex;
flex-direction: column;
gap: 24px;
max-width: 850px;
margin: 0 auto;
}

#bloque-articulos-semana .card {
max-width: 850px;
width: 100%;
display: flex;
align-items: stretch;
background: #f2f4f7;
border-radius: 4px;
overflow: hidden;
text-decoration: none;
}
#bloque-articulos-semana .card__image {
flex: 0 0 45%;
position: relative;
background-size: cover;
background-position: center;
background-color: #141208;
aspect-ratio: 3 / 2;
border-right: 5px solid #ffe564;
}
#bloque-articulos-semana .card__content {
flex: 1;
padding: 24px 32px;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
}
#bloque-articulos-semana .card__badge {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
#bloque-articulos-semana .card__badge-icon {
width: 34px;
height: 34px;
border-radius: 50%;
background: #ffe564;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
#bloque-articulos-semana .card__badge-icon svg {
width: 18px;
height: 18px;
stroke: #141208;
}
#bloque-articulos-semana .card__badge-text {
color: #141208;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.4px;
text-transform: uppercase;
}
#bloque-articulos-semana .card__badge-line {
width: 28px;
height: 2px;
background: #ffe564;
margin: 4px 0 16px 0;
}
#bloque-articulos-semana .card__title {
font-size: 22px;
line-height: 1.25;
font-weight: 700;
color: #141208;
margin-bottom: 14px;
}
#bloque-articulos-semana .card__divider {
width: 42px;
height: 3px;
background: #ffe564;
margin-bottom: 16px;
}
#bloque-articulos-semana .card__description {
font-size: 13px;
line-height: 1.55;
color: #333;
margin-bottom: 18px;
max-width: 480px;
}
#bloque-articulos-semana .card__button {
display: inline-flex;
align-items: center;
gap: 8px;
background: #141208;
color: #ffe564;
font-size: 13px;
font-weight: 600;
padding: 10px 17px;
border-radius: 4px;
text-decoration: none;
width: fit-content;
border: none;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
#bloque-articulos-semana .card:hover .card__button { background: #ffe564; color: #141208; }
#bloque-articulos-semana .card__button svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
#bloque-articulos-semana .estado {
text-align: center;
color: #666;
font-size: 14px;
padding: 20px;
}

#bloque-articulos-semana .card--sin-imagen .card__image { display: none; }

/* ===== MOBILE ===== */
@media (max-width: 768px) {
#bloque-articulos-semana .card { flex-direction: column; }
#bloque-articulos-semana .card__image {
flex: none;
width: 100%;
aspect-ratio: 16 / 9;
border-right: none;
border-bottom: 5px solid #ffe564;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
#bloque-articulos-semana .card__content { padding: 20px 20px; }
#bloque-articulos-semana .card__title { font-size: 19px; }
#bloque-articulos-semana .card__description { max-width: 100%; }
}
</style>
</head>
<body>
<div id="embed-root">
  <div id="bloque-articulos-semana">
    <div id="contenedor">
      <p class="estado">Cargando artículos...</p>
    </div>
  </div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME (mismo origen por srcdoc -> frameElement)
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  // ============================================================
  // CONFIGURACIÓN — URL del CSV publicado (Archivo > Compartir >
  // Publicar en la web > pestaña > formato CSV)
  // ============================================================
  var URL_CSV = "https://docs.google.com/spreadsheets/d/e/2PACX-1vQVKBsrYEuxnv6mSqw01Yz2EymjR4LjfqKFJ_EJJw9YBU3EpUc_R14UOmLkrJML9fuswOTnPfJiOrVi/pub?gid=357128481&amp;single=true&amp;output=csv";

  // Icono de edificio / empresa (lucide building-complex)
  var badgeSVG =
    &#39;<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M10 12h4"/>&#39; +
    &#39;<path d="M10 8h4"/>&#39; +
    &#39;<path d="M14 21v-3a2 2 0 0 0-4 0v3"/>&#39; +
    &#39;<path d="M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2"/>&#39; +
    &#39;<path d="M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/>&#39; +
    &#39;</svg>&#39;;

  var arrowSVG =
    &#39;<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M5 12h14M13 6l6 6-6 6"></path>&#39; +
    &#39;</svg>&#39;;

  // Parser CSV simple, soporta campos entre comillas con comas internas
  function parsearCSV(texto) {
    var filas = [];
    var fila = [];
    var campo = &#39;&#39;;
    var dentroComillas = false;

    for (var i = 0; i < texto.length; i++) {
      var char = texto[i];
      var siguiente = texto[i + 1];

      if (dentroComillas) {
        if (char === &#39;"&#39; &amp;&amp; siguiente === &#39;"&#39;) {
          campo += &#39;"&#39;;
          i++;
        } else if (char === &#39;"&#39;) {
          dentroComillas = false;
        } else {
          campo += char;
        }
      } else {
        if (char === &#39;"&#39;) {
          dentroComillas = true;
        } else if (char === &#39;,&#39;) {
          fila.push(campo);
          campo = &#39;&#39;;
        } else if (char === &#39;\n&#39; || char === &#39;\r&#39;) {
          if (char === &#39;\r&#39; &amp;&amp; siguiente === &#39;\n&#39;) i++;
          fila.push(campo);
          filas.push(fila);
          fila = [];
          campo = &#39;&#39;;
        } else {
          campo += char;
        }
      }
    }

    if (campo.length > 0 || fila.length > 0) {
      fila.push(campo);
      filas.push(fila);
    }

    return filas.filter(function(f) { return f.some(function(c) { return c.trim() !== &#39;&#39;; }); });
  }

  function normalizarURL(url) {
    if (!url) return &#39;&#39;;
    url = url.trim();
    url = url.replace(/^(https?:\/\/)?([^\/]+)\/+/, function(m, proto, domain) {
      return (proto || &#39;&#39;) + domain + &#39;/&#39;;
    });
    if (!/^https?:\/\//i.test(url)) {
      url = &#39;https://&#39; + url;
    }
    return url;
  }

  function csvAArticulos(texto) {
    var filas = parsearCSV(texto);
    if (filas.length > 0 &amp;&amp; /url/i.test(filas[0][0])) {
      filas = filas.slice(1);
    }
    return filas.map(function(fila) {
      return {
        url: normalizarURL(fila[0] || &#39;&#39;),
        titulo: fila[1] || &#39;&#39;,
        chapo: fila[2] || &#39;&#39;,
        imagen: fila[3] || &#39;&#39;
      };
    }).filter(function(a) { return a.url !== &#39;&#39;; });
  }

  function crearTarjeta(articulo) {
    var a = document.createElement(&#39;a&#39;);
    a.className = &#39;card&#39;;
    a.href = articulo.url;
    a.target = &#39;_blank&#39;;
    a.rel = &#39;noopener noreferrer&#39;;

    if (!articulo.imagen.trim()) { a.className += &#39; card--sin-imagen&#39;; }

    a.innerHTML =
      (articulo.imagen.trim() ? &#39;<div class="card__image" style="background-image: url(\&#39;&#39; + articulo.imagen.trim() + &#39;\&#39;)"></div>&#39; : &#39;&#39;) +
      &#39;<div class="card__content">&#39; +
        &#39;<div class="card__badge">&#39; +
          &#39;<div class="card__badge-icon">&#39; + badgeSVG + &#39;</div>&#39; +
          &#39;<span class="card__badge-text">5.000 empresas</span>&#39; +
        &#39;</div>&#39; +
        &#39;<div class="card__badge-line"></div>&#39; +
        &#39;<h2 class="card__title">&#39; + articulo.titulo + &#39;</h2>&#39; +
        &#39;<div class="card__divider"></div>&#39; +
        &#39;<p class="card__description">&#39; + articulo.chapo + &#39;</p>&#39; +
        &#39;<span class="card__button">Leer artículo &#39; + arrowSVG + &#39;</span>&#39; +
      &#39;</div>&#39;;

    return a;
  }

  function cargarArticulos() {
    var contenedor = document.getElementById(&#39;contenedor&#39;);

    fetch(URL_CSV)
      .then(function(res) {
        if (!res.ok) { throw new Error(&#39;HTTP &#39; + res.status); }
        return res.text();
      })
      .then(function(texto) {
        contenedor.innerHTML = &#39;&#39;;
        var articulos = csvAArticulos(texto);

        if (!articulos || articulos.length === 0) {
          contenedor.innerHTML = &#39;<p class="estado">No hay artículos disponibles.</p>&#39;;
          return;
        }

        articulos.forEach(function(articulo) {
          contenedor.appendChild(crearTarjeta(articulo));
        });

        Array.from(document.images).forEach(function(img) {
          if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
        });
        sendHeight();
      })
      .catch(function(err) {
        contenedor.innerHTML = &#39;<p class="estado">Error al cargar los artículos.</p>&#39;;
        console.error(&#39;Error cargando CSV:&#39;, URL_CSV, err);
      });
  }

  cargarArticulos();
})();
</script>
</body>
</html>
'></iframe>
</div>

<!-- SEPARADOR INFERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div></p><p><!-- ===== INICIO: título ===== -->
<!-- HTML y CSS estático, sin script ni iframe. Para cambiar el texto, edita solo lo que está dentro del <div class="titulo-semana"> -->
<style>
@font-face{font-family:'SemanaSans-Regular';src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format('truetype');font-display:swap;}

/* Caja de 850px máximo, centrada en la página */
.titulo-semana-caja{ width:100%; max-width:780px; margin:0 auto; padding:0 4px; box-sizing:border-box; }

.titulo-semana{
  margin:0 0 16px; padding:0;
  font-family:'SemanaSans-Regular', Arial, sans-serif; font-size:31px; line-height:1.15; font-weight:300;
  color:#141208; text-align:left; text-transform:none; letter-spacing:normal;
  -webkit-text-stroke:1.2px #141208;
}
</style>

<div class="titulo-semana-caja">
  <div class="titulo-semana" role="heading" aria-level="2">Metodología del ranking</div>
</div>
<!-- ===== FIN: título ===== --></p><p>Comparar empresas con criterios comunes y ver cómo cambia su posición frente a competidores, sectores y años anteriores es una de las tareas anuales que realiza Dinero con su ranking de 5.000 empresas.</p><p>Esta publicación tiene entre sus objetivos mostrar qué compañías concentran más ingresos, activos o utilidades; identificar sectores que están creciendo o perdiendo peso; ayudar a detectar cambios en el liderazgo empresarial; y ofrecen una fotografía de la estructura productiva del país.</p><p>También es útil para inversionistas, proveedores, clientes y analistas porque facilita la evaluación de tamaño, desempeño y posición relativa de las mayores empresas de Colombia. La idea no es señalar cuál empresa es “mejor”, pues eso depende de la variable analizada. Una compañía puede liderar en ventas, pero no en rentabilidad, generación de empleo o productividad.</p><p>Para realizar esa medición, cada año <i>Dinero </i>arma una gran base de datos que se alimenta con informes de las superintendencias de Sociedades, de Economía Solidaria, de Subsidio, de Salud y de Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que envían las empresas.</p><p><!-- ============================================================= -->
<!-- Bloque 7: articulos comerciales (Pestana 3, hoja 2) en IFRAME -->
<!-- Pagina exterior estatica, sin <script>. Pegar en bloque HTML   -->
<!-- de Arc Publishing. Paleta: negro #141208 | amarillo #ffe564    -->
<!-- ============================================================= -->
<style>
.galap-root, .galap-root *, .galap-root *::before, .galap-root *::after { box-sizing: border-box; }
.galap-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.galap-root iframe {
  display: block;
  width: 100%;
  height: 620px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
.organizador {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 75px;
  width: 100%;
  position: relative;
}
.linea-parrafo2 {
  border-bottom: 1.8px solid #141208;
  width: 400px;
  max-width: 100%;
  position: relative;
  margin: 0 auto;
}
.rombo1 {
  width: 10px;
  height: 10px;
  background: #141208;
  transform: rotate(45deg);
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
}
</style>

<!-- SEPARADOR SUPERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div>

<div class="galap-root">
<iframe id="galap-iframe-7" title="Articulos comerciales 7" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 400;
}
@font-face {
font-family: &#39;Archivo&#39;;
src: url(https://fonts.gstatic.com/s/archivo/v18/k3k6o8UDI-1M0wlSfNXAw6lQkqWY8Q80.woff2) format(&#39;woff2&#39;);
font-weight: 700;
}
html, body { margin: 0; padding: 0; overflow: hidden; background: transparent; }

#bloque-articulos-semana,
#bloque-articulos-semana * { box-sizing: border-box; }

#bloque-articulos-semana {
font-family: &#39;Archivo&#39;, -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Arial, sans-serif;
padding: 24px 20px;
margin: 0;
}
#bloque-articulos-semana p,
#bloque-articulos-semana h2,
#bloque-articulos-semana div,
#bloque-articulos-semana span { margin: 0; padding: 0; }

#bloque-articulos-semana #contenedor {
display: flex;
flex-direction: column;
gap: 24px;
max-width: 850px;
margin: 0 auto;
}

#bloque-articulos-semana .card {
max-width: 850px;
width: 100%;
display: flex;
align-items: stretch;
background: #f2f4f7;
border-radius: 4px;
overflow: hidden;
text-decoration: none;
}
#bloque-articulos-semana .card__image {
flex: 0 0 45%;
position: relative;
background-size: cover;
background-position: center;
background-color: #141208;
aspect-ratio: 3 / 2;
border-right: 5px solid #ffe564;
}
#bloque-articulos-semana .card__content {
flex: 1;
padding: 24px 32px;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
}
#bloque-articulos-semana .card__badge {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
#bloque-articulos-semana .card__badge-icon {
width: 34px;
height: 34px;
border-radius: 50%;
background: #ffe564;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
#bloque-articulos-semana .card__badge-icon svg {
width: 18px;
height: 18px;
stroke: #141208;
}
#bloque-articulos-semana .card__badge-text {
color: #141208;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.4px;
text-transform: uppercase;
}
#bloque-articulos-semana .card__badge-line {
width: 28px;
height: 2px;
background: #ffe564;
margin: 4px 0 16px 0;
}
#bloque-articulos-semana .card__title {
font-size: 22px;
line-height: 1.25;
font-weight: 700;
color: #141208;
margin-bottom: 14px;
}
#bloque-articulos-semana .card__divider {
width: 42px;
height: 3px;
background: #ffe564;
margin-bottom: 16px;
}
#bloque-articulos-semana .card__description {
font-size: 13px;
line-height: 1.55;
color: #333;
margin-bottom: 18px;
max-width: 480px;
}
#bloque-articulos-semana .card__button {
display: inline-flex;
align-items: center;
gap: 8px;
background: #141208;
color: #ffe564;
font-size: 13px;
font-weight: 600;
padding: 10px 17px;
border-radius: 4px;
text-decoration: none;
width: fit-content;
border: none;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
#bloque-articulos-semana .card:hover .card__button { background: #ffe564; color: #141208; }
#bloque-articulos-semana .card__button svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
#bloque-articulos-semana .estado {
text-align: center;
color: #666;
font-size: 14px;
padding: 20px;
}

#bloque-articulos-semana .card--sin-imagen .card__image { display: none; }

/* ===== MOBILE ===== */
@media (max-width: 768px) {
#bloque-articulos-semana .card { flex-direction: column; }
#bloque-articulos-semana .card__image {
flex: none;
width: 100%;
aspect-ratio: 16 / 9;
border-right: none;
border-bottom: 5px solid #ffe564;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
#bloque-articulos-semana .card__content { padding: 20px 20px; }
#bloque-articulos-semana .card__title { font-size: 19px; }
#bloque-articulos-semana .card__description { max-width: 100%; }
}
</style>
</head>
<body>
<div id="embed-root">
  <div id="bloque-articulos-semana">
    <div id="contenedor">
      <p class="estado">Cargando artículos...</p>
    </div>
  </div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME (mismo origen por srcdoc -> frameElement)
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  // ============================================================
  // CONFIGURACIÓN — URL del CSV publicado (Archivo > Compartir >
  // Publicar en la web > pestaña > formato CSV)
  // ============================================================
  var URL_CSV = "https://docs.google.com/spreadsheets/d/e/2PACX-1vQVKBsrYEuxnv6mSqw01Yz2EymjR4LjfqKFJ_EJJw9YBU3EpUc_R14UOmLkrJML9fuswOTnPfJiOrVi/pub?gid=1926390328&amp;single=true&amp;output=csv";

  // Icono de edificio / empresa (lucide building-complex)
  var badgeSVG =
    &#39;<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M10 12h4"/>&#39; +
    &#39;<path d="M10 8h4"/>&#39; +
    &#39;<path d="M14 21v-3a2 2 0 0 0-4 0v3"/>&#39; +
    &#39;<path d="M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2"/>&#39; +
    &#39;<path d="M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/>&#39; +
    &#39;</svg>&#39;;

  var arrowSVG =
    &#39;<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&#39; +
    &#39;<path d="M5 12h14M13 6l6 6-6 6"></path>&#39; +
    &#39;</svg>&#39;;

  // Parser CSV simple, soporta campos entre comillas con comas internas
  function parsearCSV(texto) {
    var filas = [];
    var fila = [];
    var campo = &#39;&#39;;
    var dentroComillas = false;

    for (var i = 0; i < texto.length; i++) {
      var char = texto[i];
      var siguiente = texto[i + 1];

      if (dentroComillas) {
        if (char === &#39;"&#39; &amp;&amp; siguiente === &#39;"&#39;) {
          campo += &#39;"&#39;;
          i++;
        } else if (char === &#39;"&#39;) {
          dentroComillas = false;
        } else {
          campo += char;
        }
      } else {
        if (char === &#39;"&#39;) {
          dentroComillas = true;
        } else if (char === &#39;,&#39;) {
          fila.push(campo);
          campo = &#39;&#39;;
        } else if (char === &#39;\n&#39; || char === &#39;\r&#39;) {
          if (char === &#39;\r&#39; &amp;&amp; siguiente === &#39;\n&#39;) i++;
          fila.push(campo);
          filas.push(fila);
          fila = [];
          campo = &#39;&#39;;
        } else {
          campo += char;
        }
      }
    }

    if (campo.length > 0 || fila.length > 0) {
      fila.push(campo);
      filas.push(fila);
    }

    return filas.filter(function(f) { return f.some(function(c) { return c.trim() !== &#39;&#39;; }); });
  }

  function normalizarURL(url) {
    if (!url) return &#39;&#39;;
    url = url.trim();
    url = url.replace(/^(https?:\/\/)?([^\/]+)\/+/, function(m, proto, domain) {
      return (proto || &#39;&#39;) + domain + &#39;/&#39;;
    });
    if (!/^https?:\/\//i.test(url)) {
      url = &#39;https://&#39; + url;
    }
    return url;
  }

  function csvAArticulos(texto) {
    var filas = parsearCSV(texto);
    if (filas.length > 0 &amp;&amp; /url/i.test(filas[0][0])) {
      filas = filas.slice(1);
    }
    return filas.map(function(fila) {
      return {
        url: normalizarURL(fila[0] || &#39;&#39;),
        titulo: fila[1] || &#39;&#39;,
        chapo: fila[2] || &#39;&#39;,
        imagen: fila[3] || &#39;&#39;
      };
    }).filter(function(a) { return a.url !== &#39;&#39;; });
  }

  function crearTarjeta(articulo) {
    var a = document.createElement(&#39;a&#39;);
    a.className = &#39;card&#39;;
    a.href = articulo.url;
    a.target = &#39;_blank&#39;;
    a.rel = &#39;noopener noreferrer&#39;;

    if (!articulo.imagen.trim()) { a.className += &#39; card--sin-imagen&#39;; }

    a.innerHTML =
      (articulo.imagen.trim() ? &#39;<div class="card__image" style="background-image: url(\&#39;&#39; + articulo.imagen.trim() + &#39;\&#39;)"></div>&#39; : &#39;&#39;) +
      &#39;<div class="card__content">&#39; +
        &#39;<div class="card__badge">&#39; +
          &#39;<div class="card__badge-icon">&#39; + badgeSVG + &#39;</div>&#39; +
          &#39;<span class="card__badge-text">5.000 empresas</span>&#39; +
        &#39;</div>&#39; +
        &#39;<div class="card__badge-line"></div>&#39; +
        &#39;<h2 class="card__title">&#39; + articulo.titulo + &#39;</h2>&#39; +
        &#39;<div class="card__divider"></div>&#39; +
        &#39;<p class="card__description">&#39; + articulo.chapo + &#39;</p>&#39; +
        &#39;<span class="card__button">Leer artículo &#39; + arrowSVG + &#39;</span>&#39; +
      &#39;</div>&#39;;

    return a;
  }

  function cargarArticulos() {
    var contenedor = document.getElementById(&#39;contenedor&#39;);

    fetch(URL_CSV)
      .then(function(res) {
        if (!res.ok) { throw new Error(&#39;HTTP &#39; + res.status); }
        return res.text();
      })
      .then(function(texto) {
        contenedor.innerHTML = &#39;&#39;;
        var articulos = csvAArticulos(texto);

        if (!articulos || articulos.length === 0) {
          contenedor.innerHTML = &#39;<p class="estado">No hay artículos disponibles.</p>&#39;;
          return;
        }

        articulos.forEach(function(articulo) {
          contenedor.appendChild(crearTarjeta(articulo));
        });

        Array.from(document.images).forEach(function(img) {
          if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
        });
        sendHeight();
      })
      .catch(function(err) {
        contenedor.innerHTML = &#39;<p class="estado">Error al cargar los artículos.</p>&#39;;
        console.error(&#39;Error cargando CSV:&#39;, URL_CSV, err);
      });
  }

  cargarArticulos();
})();
</script>
</body>
</html>
'></iframe>
</div>

<!-- SEPARADOR INFERIOR -->
<div class="article-main organizador">
  <div class="section sp-8">
    <div class="linea-parrafo2">
      <div class="rombo1"></div>
    </div>
  </div>
</div>

<div style="height:30px;"></div></p><p>Con esta información, las compañías son agrupadas en diez macrosectores económicos y ordenadas por su nivel de ventas. En esta ocasión, clasificaron firmas que en 2025 tuvieron ingresos de más de 62.164 millones de pesos.</p><p>El año pasado, las 5.000 empresas evaluadas vendieron 2.213 billones de pesos y registraron utilidades netas de 151 billones. Esos indicadores muestran crecimientos anuales de 6,3 y 3,6 por ciento, respectivamente. Los activos alcanzaron 3.683 billones de pesos y los pasivos 2.388 billones.</p><p>El mapa empresarial del país tiene líderes distintos por región. En Bogotá, Ecopetrol encabezó las ventas con 119 billones de pesos en 2025, mientras que en Antioquia el primer lugar fue para Grupo Cibest, con 43 billones. D1 lideró en los departamentos del centro, con 21,6 billones, y Reficar hizo lo propio en la costa Caribe, con 22,3 billones.</p><p>En los departamentos del Occidente, Celsia registró la mayor facturación, con 5 billones de pesos, y en el Eje Cafetero sobresalió Audifarma, con 1,93 billones. En los Santanderes lideró Marval, con ingresos por 2,4 billones, mientras que en los Llanos la primera posición fue para la Electrificadora del Meta, con 947.658 millones.</p><p>Todas las cifras del presente escalafón están en millones de pesos y las variaciones se miden anualmente.</p><p><!-- ===== INICIO: separador ===== -->
<!-- HTML y CSS estático, sin script ni iframe -->
<style>
.separador-semana{
  display:flex; justify-content:center; align-items:center;   /* centra la línea en el ancho y en el alto */
  width:100%; height:75px; position:relative;
}
.separador-semana__caja{
  position:relative; display:flex; align-items:center;         /* referencia para centrar el rombo sobre la línea */
  width:400px; max-width:100%;
}
.separador-semana__linea{ width:100%; margin:0; border-bottom:1.8px solid #141208; }
.separador-semana__rombo{
  position:absolute; top:50%; left:50%;
  width:9px; height:9px; background:#141208;
  transform:translate(-50%, -50%) rotate(45deg);
}
@media (max-width:500px){
  .separador-semana__caja{ width:300px; }
}
</style>

<div class="separador-semana">
  <div class="separador-semana__caja">
    <div class="separador-semana__linea"></div>
    <div class="separador-semana__rombo"></div>
  </div>
</div>
<div style="height:30px;"></div>
<!-- ===== FIN: separador ===== --></p><p><!-- ===== INICIO: título ===== -->
<!-- HTML y CSS estático, sin script ni iframe. Para cambiar el texto, edita solo lo que está dentro del <div class="titulo-semana"> -->
<style>
@font-face{font-family:'SemanaSans-Regular';src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format('truetype');font-display:swap;}

/* Caja de 850px máximo, centrada en la página */
.titulo-semana-caja{ width:100%; max-width:780px; margin:0 auto; padding:0 4px; box-sizing:border-box; }

.titulo-semana{
  margin:0 0 16px; padding:0;
  font-family:'SemanaSans-Regular', Arial, sans-serif; font-size:31px; line-height:1.15; font-weight:300;
  color:#141208; text-align:left; text-transform:none; letter-spacing:normal;
  -webkit-text-stroke:1.2px #141208;
}
</style>

<div class="titulo-semana-caja">
  <div class="titulo-semana" role="heading" aria-level="2">De proveer datáfonos para el comercio a convertirse en el banco de las pequeñas y medianas empresas</div>
</div>
<!-- ===== FIN: título ===== --></p><p>José Vélez, CEO de Bold, se declara un “emprendedor serial”. Su negocio ya tiene un pie en Perú y cree que tiene espacio para multiplicarse por cinco o por 10 en el próximo lustro.</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/JJyxZNpPAeg?si=TuiDMbYo01Au-_x-" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p><!-- ===== INICIO: separador ===== -->
<!-- HTML y CSS estático, sin script ni iframe -->
<style>
.separador-semana{
  display:flex; justify-content:center; align-items:center;   /* centra la línea en el ancho y en el alto */
  width:100%; height:75px; position:relative;
}
.separador-semana__caja{
  position:relative; display:flex; align-items:center;         /* referencia para centrar el rombo sobre la línea */
  width:400px; max-width:100%;
}
.separador-semana__linea{ width:100%; margin:0; border-bottom:1.8px solid #141208; }
.separador-semana__rombo{
  position:absolute; top:50%; left:50%;
  width:9px; height:9px; background:#141208;
  transform:translate(-50%, -50%) rotate(45deg);
}
@media (max-width:500px){
  .separador-semana__caja{ width:300px; }
}
</style>

<div class="separador-semana">
  <div class="separador-semana__caja">
    <div class="separador-semana__linea"></div>
    <div class="separador-semana__rombo"></div>
  </div>
</div>
<div style="height:30px;"></div>
<!-- ===== FIN: separador ===== --></p><p><!-- ===== INICIO: título ===== -->
<!-- HTML y CSS estático, sin script ni iframe. Para cambiar el texto, edita solo lo que está dentro del <div class="titulo-semana"> -->
<style>
@font-face{font-family:'SemanaSans-Regular';src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format('truetype');font-display:swap;}

/* Caja de 850px máximo, centrada en la página */
.titulo-semana-caja{ width:100%; max-width:780px; margin:0 auto; padding:0 4px; box-sizing:border-box; }

.titulo-semana{
  margin:0 0 16px; padding:0;
  font-family:'SemanaSans-Regular', Arial, sans-serif; font-size:31px; line-height:1.15; font-weight:300;
  color:#141208; text-align:left; text-transform:none; letter-spacing:normal;
  -webkit-text-stroke:1.2px #141208;
}
</style>

<div class="titulo-semana-caja">
  <div class="titulo-semana" role="heading" aria-level="2">“En los próximos tres años duplicaremos utilidades”, dice Simbad Ceballos, presidente de OlimpIA</div>
</div>
<!-- ===== FIN: título ===== --></p><p>Para él, el gran reto es que por la inteligencia artificial no está creciendo tanto el empleo en el desarrollo de software.</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/M7OqVWZFuUs?si=zS8u07H_ECiYkyjf" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p><!-- ===== INICIO: separador video ===== -->
<style>
.separador-root, .separador-root *, .separador-root *::before, .separador-root *::after { box-sizing: border-box; }
.separador-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.separador-root iframe {
  display: block;
  width: 100%;
  height: 300px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="separador-root">
<iframe id="separador-iframe-1" title="Separador en video" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vídeo en bucle centrado</title>
<style>
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
#embed-root { width: 100%; }
.container {
  display: flex;
  align-items: center;
  justify-content: center;
}
.line {
  width: 120px;
  height: 2px;
  background-color: #ffe564;
}
video {
  max-width: 200px;
  width: 100%;
  height: auto;
  margin: 0 10px;
  border: #ffe564 5px solid;
}
</style>
</head>
<body>
<div id="embed-root">
  <div style="height: 40px;"></div>
  <div class="container">
    <div class="line"></div>
    <video
      src="https://pauta.semana.com/2026/09_septiembre/5000_empresas/separador.mp4"
      autoplay
      loop
      muted
      playsinline>
      Tu navegador no admite la reproducción de vídeo.
    </video>
    <div class="line"></div>
  </div>
  <div style="height: 40px;"></div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }

  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  var video = document.querySelector(&#39;video&#39;);
  if (video) {
    video.addEventListener(&#39;loadedmetadata&#39;, sendHeight);
    video.addEventListener(&#39;loadeddata&#39;, sendHeight);
  }
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: separador video ===== --></p><p><!-- ===== INICIO: tabla01 (Las billonarias) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-01" title="Tabla: Las billonarias" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Las billonarias",
    "subtitulo": "",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1289076317&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": true
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla01 ===== --></p><p><!-- ===== INICIO: tabla02 (Las millonarias) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-02" title="Tabla: Las millonarias" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Las millonarias",
    "subtitulo": "",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=391324086&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla02 ===== --></p><p><!-- ===== INICIO: tabla03 (Regiones · Antioquia) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-03" title="Tabla: Regiones · Antioquia" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Regiones",
    "subtitulo": "Antioquia",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1LA_3vvX-_x10GTp8aSuMMafJlAxvU5CkoDbkD_VTC4X6H-j2abfK1ivXs7EPUTqEiSyubSy5dqXz/pub?gid=1847762347&amp;single=true&amp;output=csv",
    "filasEncabezado": 1,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla03 ===== --></p><p><!-- ===== INICIO: tabla04 (Bogotá) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-04" title="Tabla: Bogotá" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Bogotá",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1LA_3vvX-_x10GTp8aSuMMafJlAxvU5CkoDbkD_VTC4X6H-j2abfK1ivXs7EPUTqEiSyubSy5dqXz/pub?gid=1135590582&amp;single=true&amp;output=csv",
    "filasEncabezado": 1,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla04 ===== --></p><p><!-- ===== INICIO: tabla05 (Centro) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-05" title="Tabla: Centro" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Centro",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1LA_3vvX-_x10GTp8aSuMMafJlAxvU5CkoDbkD_VTC4X6H-j2abfK1ivXs7EPUTqEiSyubSy5dqXz/pub?gid=114417620&amp;single=true&amp;output=csv",
    "filasEncabezado": 1,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla05 ===== --></p><p><!-- ===== INICIO: tabla06 (Costa) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-06" title="Tabla: Costa" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Costa",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1LA_3vvX-_x10GTp8aSuMMafJlAxvU5CkoDbkD_VTC4X6H-j2abfK1ivXs7EPUTqEiSyubSy5dqXz/pub?gid=410612789&amp;single=true&amp;output=csv",
    "filasEncabezado": 1,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla06 ===== --></p><p><!-- ===== INICIO: tabla07 (Eje) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-07" title="Tabla: Eje" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Eje",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1LA_3vvX-_x10GTp8aSuMMafJlAxvU5CkoDbkD_VTC4X6H-j2abfK1ivXs7EPUTqEiSyubSy5dqXz/pub?gid=1150356172&amp;single=true&amp;output=csv",
    "filasEncabezado": 1,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla07 ===== --></p><p><!-- ===== INICIO: tabla08 (Llanos) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-08" title="Tabla: Llanos" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Llanos",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1LA_3vvX-_x10GTp8aSuMMafJlAxvU5CkoDbkD_VTC4X6H-j2abfK1ivXs7EPUTqEiSyubSy5dqXz/pub?gid=157296383&amp;single=true&amp;output=csv",
    "filasEncabezado": 1,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla08 ===== --></p><p><!-- ===== INICIO: tabla09 (Occidente) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-09" title="Tabla: Occidente" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Occidente",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1LA_3vvX-_x10GTp8aSuMMafJlAxvU5CkoDbkD_VTC4X6H-j2abfK1ivXs7EPUTqEiSyubSy5dqXz/pub?gid=1266571784&amp;single=true&amp;output=csv",
    "filasEncabezado": 1,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla09 ===== --></p><p><!-- ===== INICIO: tabla10 (Santanderes) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-10" title="Tabla: Santanderes" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Santanderes",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1LA_3vvX-_x10GTp8aSuMMafJlAxvU5CkoDbkD_VTC4X6H-j2abfK1ivXs7EPUTqEiSyubSy5dqXz/pub?gid=103453538&amp;single=true&amp;output=csv",
    "filasEncabezado": 1,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla10 ===== --></p><p><!-- ===== INICIO: tabla11 (Agropecuario · Agricultura varios) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-11" title="Tabla: Agropecuario · Agricultura varios" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Agropecuario",
    "subtitulo": "Agricultura varios",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1752711280&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla11 ===== --></p><p><!-- ===== INICIO: tabla12 (Avícola) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-12" title="Tabla: Avícola" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Avícola",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1413309204&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla12 ===== --></p><p><!-- ===== INICIO: tabla13 (Banano) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-13" title="Tabla: Banano" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Banano",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=128629382&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla13 ===== --></p><p><!-- ===== INICIO: tabla14 (Flores) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-14" title="Tabla: Flores" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Flores",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1961570325&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla14 ===== --></p><p><!-- ===== INICIO: tabla15 (Ganadería y porcicultura) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-15" title="Tabla: Ganadería y porcicultura" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Ganadería y porcicultura",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=24067630&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla15 ===== --></p><p><!-- ===== INICIO: tabla16 (Palma) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-16" title="Tabla: Palma" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Palma",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=895616837&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla16 ===== --></p><p><!-- ===== INICIO: tabla17 (Pesca y camarón) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-17" title="Tabla: Pesca y camarón" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Pesca y camarón",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=37452995&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla17 ===== --></p><p><!-- ===== INICIO: tabla18 (Comercio · Al por mayor) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-18" title="Tabla: Comercio · Al por mayor" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Comercio",
    "subtitulo": "Al por mayor",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1179390433&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla18 ===== --></p><p><!-- ===== INICIO: tabla19 (Al por menor) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-19" title="Tabla: Al por menor" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Al por menor",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1460805211&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla19 ===== --></p><p><!-- ===== INICIO: tabla20 (Combustible para automotores) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-20" title="Tabla: Combustible para automotores" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Combustible para automotores",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1535497340&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla20 ===== --></p><p><!-- ===== INICIO: tabla21 (Concesionarios) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-21" title="Tabla: Concesionarios" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Concesionarios",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=944636920&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla21 ===== --></p><p><!-- ===== INICIO: tabla22 (Partes, piezas y accesorios para vehículos) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-22" title="Tabla: Partes, piezas y accesorios para vehículos" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Partes, piezas y accesorios para vehículos",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=164584533&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla22 ===== --></p><p><!-- ===== INICIO: tabla23 (Construcción · Acondicionamiento y terminación de edificios) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-23" title="Tabla: Construcción · Acondicionamiento y terminación de edificios" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Construcción",
    "subtitulo": "Acondicionamiento y terminación de edificios",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1221557776&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla23 ===== --></p><p><!-- ===== INICIO: tabla24 (Actividades de arquitectura e ingeniería) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-24" title="Tabla: Actividades de arquitectura e ingeniería" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Actividades de arquitectura e ingeniería",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=809042419&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla24 ===== --></p><p><!-- ===== INICIO: tabla25 (Concesiones de transporte) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-25" title="Tabla: Concesiones de transporte" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Concesiones de transporte",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1425154388&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla25 ===== --></p><p><!-- ===== INICIO: tabla26 (Construcción) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-26" title="Tabla: Construcción" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Construcción",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1561033589&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla26 ===== --></p><p><!-- ===== INICIO: tabla27 (Ingeniería civil) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-27" title="Tabla: Ingeniería civil" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Ingeniería civil",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1681032505&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla27 ===== --></p><p><!-- ===== INICIO: tabla28 (Preparación de terreno) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-28" title="Tabla: Preparación de terreno" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Preparación de terreno",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=938252322&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla28 ===== --></p><p><!-- ===== INICIO: tabla29 (Hidrocarburos y servicios petroleros) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-29" title="Tabla: Hidrocarburos y servicios petroleros" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Hidrocarburos y servicios petroleros",
    "subtitulo": "",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1800786768&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla29 ===== --></p><p><!-- ===== INICIO: tabla30 (Industria · Alimentos) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-30" title="Tabla: Industria · Alimentos" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Industria",
    "subtitulo": "Alimentos",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1333633081&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla30 ===== --></p><p><!-- ===== INICIO: tabla31 (Bebidas) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-31" title="Tabla: Bebidas" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Bebidas",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1742321059&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla31 ===== --></p><p><!-- ===== INICIO: tabla32 (Cosméticos y aseo) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-32" title="Tabla: Cosméticos y aseo" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Cosméticos y aseo",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=625340830&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla32 ===== --></p><p><!-- ===== INICIO: tabla33 (Cuero y calzado) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-33" title="Tabla: Cuero y calzado" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Cuero y calzado",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=521259343&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla33 ===== --></p><p><!-- ===== INICIO: tabla34 (Hierro, acero y otros metales) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-34" title="Tabla: Hierro, acero y otros metales" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Hierro, acero y otros metales",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=520885477&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla34 ===== --></p><p><!-- ===== INICIO: tabla35 (Industria gráfica) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-35" title="Tabla: Industria gráfica" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Industria gráfica",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=608199425&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla35 ===== --></p><p><!-- ===== INICIO: tabla36 (Madera) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-36" title="Tabla: Madera" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Madera",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=577315834&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla36 ===== --></p><p><!-- ===== INICIO: tabla37 (Manufacturas varias) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-37" title="Tabla: Manufacturas varias" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Manufacturas varias",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=332074600&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla37 ===== --></p><p><!-- ===== INICIO: tabla38 (Maquinaria y equipo) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-38" title="Tabla: Maquinaria y equipo" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Maquinaria y equipo",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=168164112&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla38 ===== --></p><p><!-- ===== INICIO: tabla39 (Muebles y accesorios) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-39" title="Tabla: Muebles y accesorios" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Muebles y accesorios",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=319279366&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla39 ===== --></p><p><!-- ===== INICIO: tabla40 (Plásticos y caucho) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-40" title="Tabla: Plásticos y caucho" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Plásticos y caucho",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1898926500&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla40 ===== --></p><p><!-- ===== INICIO: tabla41 (Productos para la construcción) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-41" title="Tabla: Productos para la construcción" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Productos para la construcción",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=984014097&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla41 ===== --></p><p><!-- ===== INICIO: tabla42 (Químicos) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-42" title="Tabla: Químicos" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Químicos",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1373991014&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla42 ===== --></p><p><!-- ===== INICIO: tabla43 (Tabaco) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-43" title="Tabla: Tabaco" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Tabaco",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=101514077&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla43 ===== --></p><p><!-- ===== INICIO: tabla44 (Textil, confección, diseño y moda) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-44" title="Tabla: Textil, confección, diseño y moda" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Textil, confección, diseño y moda",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1289609991&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla44 ===== --></p><p><!-- ===== INICIO: tabla45 (Vehículos y partes) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-45" title="Tabla: Vehículos y partes" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Vehículos y partes",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=112040353&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla45 ===== --></p><p><!-- ===== INICIO: tabla46 (Vidrio y productos de vidrio) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-46" title="Tabla: Vidrio y productos de vidrio" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Vidrio y productos de vidrio",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1303977022&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla46 ===== --></p><p><!-- ===== INICIO: tabla47 (Medios · Cine y video) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-47" title="Tabla: Medios · Cine y video" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Medios",
    "subtitulo": "Cine y video",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1278739559&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla47 ===== --></p><p><!-- ===== INICIO: tabla48 (Periódicos, revistas y otros) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-48" title="Tabla: Periódicos, revistas y otros" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Periódicos, revistas y otros",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1435740034&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla48 ===== --></p><p><!-- ===== INICIO: tabla49 (Televisión y radio) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-49" title="Tabla: Televisión y radio" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Televisión y radio",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=937031401&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla49 ===== --></p><p><!-- ===== INICIO: tabla50 (Minería) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-50" title="Tabla: Minería" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Minería",
    "subtitulo": "",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=45753356&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla50 ===== --></p><p><!-- ===== INICIO: tabla51 (Servicios · Actividades de juegos de azar y apuestas) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-51" title="Tabla: Servicios · Actividades de juegos de azar y apuestas" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Servicios",
    "subtitulo": "Actividades de juegos de azar y apuestas",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=445795655&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla51 ===== --></p><p><!-- ===== INICIO: tabla52 (Cajas de compensación) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-52" title="Tabla: Cajas de compensación" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Cajas de compensación",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1061215908&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla52 ===== --></p><p><!-- ===== INICIO: separador video ===== -->
<style>
.separador-root, .separador-root *, .separador-root *::before, .separador-root *::after { box-sizing: border-box; }
.separador-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.separador-root iframe {
  display: block;
  width: 100%;
  height: 300px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="separador-root">
<iframe id="separador-iframe-1" title="Separador en video" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vídeo en bucle centrado</title>
<style>
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
#embed-root { width: 100%; }
.container {
  display: flex;
  align-items: center;
  justify-content: center;
}
.line {
  width: 120px;
  height: 2px;
  background-color: #ffe564;
}
video {
  max-width: 200px;
  width: 100%;
  height: auto;
  margin: 0 10px;
  border: #ffe564 5px solid;
}
</style>
</head>
<body>
<div id="embed-root">
  <div style="height: 40px;"></div>
  <div class="container">
    <div class="line"></div>
    <video
      src="https://pauta.semana.com/2026/09_septiembre/5000_empresas/separador.mp4"
      autoplay
      loop
      muted
      playsinline>
      Tu navegador no admite la reproducción de vídeo.
    </video>
    <div class="line"></div>
  </div>
  <div style="height: 40px;"></div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }

  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  var video = document.querySelector(&#39;video&#39;);
  if (video) {
    video.addEventListener(&#39;loadedmetadata&#39;, sendHeight);
    video.addEventListener(&#39;loadeddata&#39;, sendHeight);
  }
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: separador video ===== --></p><p><!-- ===== INICIO: tabla53 (Correo) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-53" title="Tabla: Correo" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Correo",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1194409993&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla53 ===== --></p><p><!-- ===== INICIO: tabla54 (Educación) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-54" title="Tabla: Educación" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Educación",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=624134637&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla54 ===== --></p><p><!-- ===== INICIO: tabla55 (Energía eléctrica, bienes y servicios conexos) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-55" title="Tabla: Energía eléctrica, bienes y servicios conexos" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Energía eléctrica, bienes y servicios conexos",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1825584260&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla55 ===== --></p><p><!-- ===== INICIO: tabla56 (Hoteles) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-56" title="Tabla: Hoteles" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Hoteles",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=60762600&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla56 ===== --></p><p><!-- ===== INICIO: tabla57 (Otros servicios) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-57" title="Tabla: Otros servicios" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Otros servicios",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=216124547&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla57 ===== --></p><p><!-- ===== INICIO: tabla58 (Publicidad y estudios de mercadeo) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-58" title="Tabla: Publicidad y estudios de mercadeo" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Publicidad y estudios de mercadeo",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=595587343&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla58 ===== --></p><p><!-- ===== INICIO: tabla59 (Restaurantes) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-59" title="Tabla: Restaurantes" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Restaurantes",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1763409264&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla59 ===== --></p><p><!-- ===== INICIO: tabla60 (Salud) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-60" title="Tabla: Salud" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Salud",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1883137378&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla60 ===== --></p><p><!-- ===== INICIO: tabla61 (Servicios públicos) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-61" title="Tabla: Servicios públicos" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Servicios públicos",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=2080676664&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla61 ===== --></p><p><!-- ===== INICIO: tabla62 (Servicios tercerizados a distancia (BPO&O)) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-62" title="Tabla: Servicios tercerizados a distancia (BPO&amp;O)" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Servicios tercerizados a distancia (BPO&amp;O)",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1887619835&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla62 ===== --></p><p><!-- ===== INICIO: tabla63 (Sociedades inversoras) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-63" title="Tabla: Sociedades inversoras" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Sociedades inversoras",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=529227552&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla63 ===== --></p><p><!-- ===== INICIO: tabla64 (Técnicos y profesionales) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-64" title="Tabla: Técnicos y profesionales" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Técnicos y profesionales",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=391866739&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla64 ===== --></p><p><!-- ===== INICIO: tabla65 (Turismo) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-65" title="Tabla: Turismo" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Turismo",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1178539441&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla65 ===== --></p><p><!-- ===== INICIO: tabla66 (Vigilancia y seguridad) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-66" title="Tabla: Vigilancia y seguridad" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Vigilancia y seguridad",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=715254966&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla66 ===== --></p><p><!-- ===== INICIO: tabla67 (Telecomunicaciones y tecnologías de la información · Telecomunicaciones) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-67" title="Tabla: Telecomunicaciones y tecnologías de la información · Telecomunicaciones" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Telecomunicaciones y tecnologías de la información",
    "subtitulo": "Telecomunicaciones",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1045904510&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla67 ===== --></p><p><!-- ===== INICIO: tabla68 (TI software & servicios de tecnologías de la información) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-68" title="Tabla: TI software &amp; servicios de tecnologías de la información" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "TI software &amp; servicios de tecnologías de la información",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1809167241&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla68 ===== --></p><p><!-- ===== INICIO: tabla69 (Transporte · Aéreo) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-69" title="Tabla: Transporte · Aéreo" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "Transporte",
    "subtitulo": "Aéreo",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=1679948644&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla69 ===== --></p><p><!-- ===== INICIO: tabla70 (Marítimo y fluvial) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-70" title="Tabla: Marítimo y fluvial" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Marítimo y fluvial",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=2011466942&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla70 ===== --></p><p><!-- ===== INICIO: tabla71 (Operadores, agentes y terminales) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-71" title="Tabla: Operadores, agentes y terminales" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Operadores, agentes y terminales",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=141623912&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla71 ===== --></p><p><!-- ===== INICIO: tabla72 (Terrestre) ===== -->
<style>
.tabla-root, .tabla-root *, .tabla-root *::before, .tabla-root *::after { box-sizing: border-box; }
.tabla-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.tabla-root iframe {
  display: block;
  width: 100%;
  height: 900px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="tabla-root">
<iframe id="tabla-iframe-72" title="Tabla: Terrestre" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@font-face{font-family:&#39;SemanaSans-Light&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Light.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Regular&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Regular.ttf) format(&#39;truetype&#39;);font-display:swap;}
@font-face{font-family:&#39;SemanaSans-Bold&#39;;src:url(https://pauta.semana.com/2025/style/fuentes-semana/SemanaSans-Bold.ttf) format(&#39;truetype&#39;);font-weight:700;font-display:swap;}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
[hidden]{ display:none !important; }

.tema_estilos{
  --color-brand:#ffe564;
  --color-brand-text:#524823;
  --color-text:#4c4c4c;
  --color-text-strong:#141208;
  --color-row-odd:#fff;
  --color-row-even:#f7f7f7;
  --color-border:#E9E9EA;
  --font-title:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --font-note:&#39;SemanaSans-Regular&#39;, Arial, sans-serif;
  --font-sans-light:&#39;SemanaSans-Light&#39;, Arial, sans-serif;
  --font-sans-bold:&#39;SemanaSans-Bold&#39;, Arial, sans-serif;
  --fz-title:35px; --lh-title:1.15;
  --fz-subtitle:22px;
  --fz-head:12px;  --lh-head:16px;
  --fz-body:12px;  --fz-note:12px;
  --fz-button:14px; --radius-pill:20px;
  font-family:var(--font-sans-light);
  color:var(--color-text);
}

#embed-root{ padding:12px 0 0; min-height:900px; }  /* reserva hasta que carguen los datos */
.bloque_tab{ width:100%; max-width:980px; margin:0 auto; padding:0 4px; }

/* Indicador de deslizar (solo móvil) */
.indicador-movil{ display:none; }
@media (max-width:500px){
  .indicador-movil.activo{
    display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:8px 12px;
    background:#fffbea; border-left:3px solid var(--color-brand);
    font-family:var(--font-sans-light); font-size:13px; line-height:1.3; color:var(--color-text-strong);
  }
  .indicador-movil svg{ flex:0 0 auto; animation:nudge 1.6s ease-in-out 3; }
}
@keyframes nudge{ 0%,100%{ transform:translateX(0); } 50%{ transform:translateX(5px); } }
@media (prefers-reduced-motion:reduce){ .indicador-movil svg{ animation:none !important; } }

/* Títulos */
.titulo_estilos{
  display:table; max-width:100%;                       /* el bloque mide lo mismo que el texto */
  font-family:var(--font-note); font-size:var(--fz-title); line-height:var(--lh-title);
  color:var(--color-text-strong); margin:0 0 16px; font-weight:300;
  -webkit-text-stroke:1.2px var(--color-text-strong);  /* grosor del título */
}
.titulo_estilos::after{                                /* línea propia, separada del texto */
  content:""; display:block; height:3px; margin-top:12px; background:var(--color-brand);
}
.subtitulo_estilos{
  font-family:var(--font-title); font-size:var(--fz-subtitle); line-height:1.2;
  color:var(--color-text-strong); margin:0 0 5px; font-weight:normal;
}
.titulo_estilos + .subtitulo_estilos{ margin-top:18px; }
.nota_estilos{
  font-family:var(--font-note); font-size:var(--fz-note); color:var(--color-text);
  margin:8px 0 0; line-height:21px; font-weight:normal;
}

/* Buscador */
.buscador_estilos{
  display:block; margin:10px 0; padding:8px; width:80%; max-width:420px;
  border:1px solid var(--color-border); border-radius:5px; font-size:14px;
  font-family:var(--font-sans-light); color:var(--color-text);
}

/* Tabla */
.table-wrapper_estilos{ overflow-x:auto; width:100%; -webkit-overflow-scrolling:touch; }
.tabla_estilos{ width:100%; border-collapse:separate; border-spacing:0 10px; }
.tabla_estilos thead th{
  background:var(--color-brand); color:var(--color-brand-text); padding:10px; text-align:center;
  font-size:var(--fz-head); line-height:var(--lh-head); font-family:var(--font-sans-bold); font-weight:700;
}
.tabla_estilos tbody td{
  text-align:center; vertical-align:middle; padding:8px 3px;
  font-size:var(--fz-body); color:var(--color-text); background-clip:padding-box;
}
.tabla_estilos tbody tr.odd td{ background:var(--color-row-odd); }
.tabla_estilos tbody tr.even td{ background:var(--color-row-even); }
.tabla_estilos tbody tr td:first-child{ border-radius:8px 0 0 8px; }
.tabla_estilos tbody tr td:last-child{ border-radius:0 8px 8px 0; }
.tabla_estilos tbody td.vacio{ background:none !important; padding:20px 0; }
.tabla_estilos tbody tr.grupo td{
  background:none !important; text-align:left; padding:12px 4px 0; border-radius:0;
  font-family:var(--font-sans-bold); font-size:14px; line-height:1.2; color:var(--color-text-strong);
}

/* Paginación */
.pagination-wrapper_estilos{
  display:flex; justify-content:center; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap;
}
.paginate_button_estilos{
  border:none; background:none; color:var(--color-text); padding:8px 12px; font-size:var(--fz-button);
  font-family:var(--font-sans-bold); border-radius:var(--radius-pill); transition:all .3s ease; cursor:pointer;
}
.paginate_button_estilos:hover:not(:disabled){ background:var(--color-brand); color:var(--color-brand-text); }
.paginate_button_estilos:disabled{ opacity:.35; cursor:default; }
.page-display_estilos{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
}
.goto_estilos{
  width:3.6em; padding:5px 2px; text-align:center;
  font-family:var(--font-sans-bold); font-size:var(--fz-button); color:var(--color-text);
  border:1px solid var(--color-border); border-radius:6px; background:#fff;
}
.goto_estilos:focus{ outline:2px solid var(--color-brand); outline-offset:1px; }

.estado_estilos{ font-family:var(--font-sans-light); font-size:14px; color:var(--color-text); margin:14px 0; }
.reintentar_estilos{
  display:inline-block; margin:0 0 14px; padding:8px 18px; border:none; cursor:pointer;
  background:var(--color-brand); color:var(--color-brand-text);
  font-family:var(--font-sans-bold); font-size:var(--fz-button); border-radius:var(--radius-pill);
}
.reintentar_estilos:hover{ filter:brightness(.95); }
.reintentar_estilos:focus-visible{ outline:2px solid var(--color-text-strong); outline-offset:2px; }
@media (max-width:500px){ .tabla_estilos{ min-width:var(--min-w, 720px); } }

/* Logo */
.caja-logo-dinero{
  display:flex; justify-content:flex-end; align-items:center; width:100%; max-width:980px;
  margin:12px auto 0; padding-top:8px; border-top:.8px solid var(--color-border);
}
.caja-logo-dinero a{ display:inline-flex; }
.caja-logo-dinero img{ height:65px; display:block; }

/* Separador final: línea con rombo */
.organizador{ display:flex; height:75px; width:100%; justify-content:center; align-items:center; position:relative; }
.section{ position:relative; display:flex; align-items:center; max-width:100%; }
.linea-parrafo2{ border-bottom:1.8px solid var(--color-text-strong); width:400px; max-width:calc(100vw - 40px); margin:0; }
.rombo1{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%) rotate(45deg);
  width:9px; height:9px; background:var(--color-text-strong);
}
@media (max-width:500px){ .linea-parrafo2{ width:300px; } }
</style>
</head>
<body>
<div id="embed-root">
<div class="tema_estilos">
  <div class="bloque_tab">
    <div class="indicador-movil" id="indicador" role="note">
      <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5" cy="12" r="2.4" fill="currentColor" stroke="none"/><path d="M10 12h10"/><path d="M16 8l4 4-4 4"/></svg>
      <span>Desliza hacia la derecha para ver todos los datos</span>
    </div>

    <h2 class="titulo_estilos" id="titulo"></h2>
    <h3 class="subtitulo_estilos" id="subtitulo"></h3>

    <input class="buscador_estilos" type="text" id="buscar" placeholder="Buscar..." aria-label="Buscar en la tabla">

    <p class="estado_estilos" id="estado">Cargando datos...</p>
    <button type="button" class="reintentar_estilos" id="reintentar" hidden>Volver a cargar</button>

    <div class="table-wrapper_estilos" id="tabla-wrap" hidden>
      <table class="tabla_estilos">
        <thead><tr id="thead-row"></tr></thead>
        <tbody id="tbody"></tbody>
      </table>
    </div>

    <div class="pagination-wrapper_estilos" id="paginacion" hidden>
      <button type="button" class="paginate_button_estilos" id="prev">Anterior</button>
      <span class="page-display_estilos">
        <input class="goto_estilos" id="irPagina" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" autocomplete="off" aria-label="Ir a la página">
        <span>/ <span id="totalPaginas"></span></span>
      </span>
      <button type="button" class="paginate_button_estilos" id="next">Siguiente</button>
    </div>

    <h4 class="nota_estilos">
      <b>Fuente</b>: Superintendencias de Sociedades, Servicios Públicos, Economía Solidaria, Subsidio y Transporte, así como de las Cámaras de Comercio de 22 ciudades, la Contaduría General de la Nación y reportes directos que enviaron las empresas a Dinero.<br>
      <b>Convenciones</b>: (C) Con datos consolidados; (I) Datos individual; (+) &amp;gt; 1.000 %; (-) &amp;lt; -1.000 %; y (UN/pat) Utilidad Neta / Patrimonio; (n. a.) no aplica.
    </h4>
  </div>

  <div class="caja-logo-dinero">
    <a href="https://www.dinero.com/" target="_blank" rel="noopener">
      <img src="https://multimedia.semana.com/2025/04_abril/ranking_colegios/logo-dinero.jpg" alt="Dinero" loading="lazy">
    </a>
  </div>

  <div class="organizador">
    <div class="section">
      <div class="linea-parrafo2"></div>
      <div class="rombo1"></div>
    </div>
  </div>
  <div style="height:30px;"></div>
</div>
</div>

<script>
(function () {
  // ============================================================
  // CONFIGURACION DE ESTA TABLA (lo unico que cambia entre tablas)
  // ============================================================
  var CFG = {
    "titulo": "",
    "subtitulo": "Terrestre",
    "csvUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-1vSJXoOI32EE000whZDGsbzsV-e946XEVzHCFJtSyscAsocxBFIBiInlAIWbWB8y09ZKqyB5VBH1szC_/pub?gid=641267716&amp;single=true&amp;output=csv",
    "filasEncabezado": 3,
    "pageLength": 10,
    "indicadorMovil": false
};

  var root = document.getElementById(&#39;embed-root&#39;);

  // ============================================================
  // ALTURA DEL IFRAME
  // ============================================================
  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }
  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });
  if (document.fonts &amp;&amp; document.fonts.ready) { document.fonts.ready.then(sendHeight).catch(function () {}); }
  Array.from(document.images).forEach(function (img) {
    if (!img.complete) { img.addEventListener(&#39;load&#39;, sendHeight, { once: true }); }
  });

  // ============================================================
  // TABLA
  // ============================================================
  var cols = 0;
  var todas = [];      // { c: [celdas], g: &#39;subgrupo&#39; }
  var filtradas = [];
  var pagina = 0;

  function $(id) { return document.getElementById(id); }
  var tituloEl = $(&#39;titulo&#39;), subtituloEl = $(&#39;subtitulo&#39;), estadoEl = $(&#39;estado&#39;);
  var wrap = $(&#39;tabla-wrap&#39;), trHead = $(&#39;thead-row&#39;), tbody = $(&#39;tbody&#39;), buscar = $(&#39;buscar&#39;);
  var pag = $(&#39;paginacion&#39;), irInput = $(&#39;irPagina&#39;), totalEl = $(&#39;totalPaginas&#39;);
  var prev = $(&#39;prev&#39;), next = $(&#39;next&#39;), indicador = $(&#39;indicador&#39;), reintentarBtn = $(&#39;reintentar&#39;);

  if (CFG.titulo) { tituloEl.textContent = CFG.titulo; } else { tituloEl.hidden = true; }
  if (CFG.subtitulo) { subtituloEl.textContent = CFG.subtitulo; } else { subtituloEl.hidden = true; }

  // Indicador "desliza" (solo movil; desaparece al primer deslizamiento)
  if (CFG.indicadorMovil) {
    indicador.classList.add(&#39;activo&#39;);
    wrap.addEventListener(&#39;scroll&#39;, function () {
      if (wrap.scrollLeft > 12) { indicador.classList.remove(&#39;activo&#39;); }
    }, { passive: true });
  } else {
    indicador.parentNode.removeChild(indicador);
  }

  var MSG_ERROR = &#39;No se pudieron cargar los datos. Intenta de nuevo más tarde.&#39;;
  // estado(texto, true) = mensaje de error con el botón "Volver a cargar"
  function estado(txt, error) {
    estadoEl.textContent = txt || &#39;&#39;;
    estadoEl.hidden = !txt;
    reintentarBtn.hidden = !error;
  }

  function norm(s) {
    return String(s).toLowerCase().normalize(&#39;NFD&#39;).replace(/[\u0300-\u036f]/g, &#39;&#39;);
  }
  function limpio(v) { return String(v == null ? &#39;&#39; : v).replace(/\s+/g, &#39; &#39;).trim(); }

  // Encabezados: une, columna por columna, las filas de encabezado del CSV
  function construirEncabezados(filasEnc) {
    var out = [];
    for (var c = 0; c < cols; c++) {
      var partes = [];
      filasEnc.forEach(function (r) {
        var v = limpio(r[c]);
        if (v) { partes.push(v); }
      });
      out.push(partes.join(&#39; &#39;));
    }
    return out;
  }

  function pintarEncabezados(hs) {
    trHead.innerHTML = &#39;&#39;;
    hs.forEach(function (h) {
      var th = document.createElement(&#39;th&#39;);
      th.textContent = h;
      trHead.appendChild(th);
    });
  }

  function render() {
    tbody.innerHTML = &#39;&#39;;
    if (!filtradas.length) {
      var tr0 = document.createElement(&#39;tr&#39;);
      var td0 = document.createElement(&#39;td&#39;);
      td0.colSpan = cols;
      td0.className = &#39;vacio&#39;;
      td0.textContent = &#39;Sin resultados&#39;;
      tr0.appendChild(td0);
      tbody.appendChild(tr0);
      pag.hidden = true;
      sendHeight();
      return;
    }
    var paginas = Math.ceil(filtradas.length / CFG.pageLength);
    if (pagina > paginas - 1) { pagina = paginas - 1; }
    if (pagina < 0) { pagina = 0; }
    var ini = pagina * CFG.pageLength;
    var trozo = filtradas.slice(ini, ini + CFG.pageLength);

    var ultimo = null;
    trozo.forEach(function (fila, i) {
      // subtitulo de subgrupo: al inicio de cada grupo (y al inicio de la pagina si continua uno)
      if (fila.g &amp;&amp; fila.g !== ultimo) {
        var trG = document.createElement(&#39;tr&#39;);
        trG.className = &#39;grupo&#39;;
        var tdG = document.createElement(&#39;td&#39;);
        tdG.colSpan = cols;
        tdG.textContent = fila.g;
        trG.appendChild(tdG);
        tbody.appendChild(trG);
      }
      ultimo = fila.g;

      var tr = document.createElement(&#39;tr&#39;);
      tr.className = (i % 2 === 0) ? &#39;odd&#39; : &#39;even&#39;;
      fila.c.forEach(function (celda) {
        var td = document.createElement(&#39;td&#39;);
        td.textContent = celda;
        tr.appendChild(td);
      });
      tbody.appendChild(tr);
    });

    pag.hidden = paginas <= 1;
    irInput.value = String(pagina + 1);
    totalEl.textContent = String(paginas);
    prev.disabled = pagina === 0;
    next.disabled = pagina >= paginas - 1;
    sendHeight();
  }

  buscar.addEventListener(&#39;input&#39;, function () {
    var q = norm(buscar.value.trim());
    filtradas = q ? todas.filter(function (f) { return norm(f.c.join(&#39; &#39;)).indexOf(q) !== -1; }) : todas.slice();
    pagina = 0;
    render();
  });
  prev.addEventListener(&#39;click&#39;, function () { if (pagina > 0) { pagina--; render(); } });
  next.addEventListener(&#39;click&#39;, function () { pagina++; render(); });

  // Ir a una pagina escribiendo el numero
  function irA() {
    var n = parseInt(String(irInput.value).replace(/\D/g, &#39;&#39;), 10);
    var paginas = Math.ceil(filtradas.length / CFG.pageLength) || 1;
    if (!isNaN(n) &amp;&amp; n >= 1 &amp;&amp; n <= paginas) { pagina = n - 1; }
    render();   // si el valor era invalido, render() deja el numero de la pagina actual
  }
  irInput.addEventListener(&#39;change&#39;, irA);
  irInput.addEventListener(&#39;keydown&#39;, function (e) {
    if (e.key === &#39;Enter&#39;) { e.preventDefault(); irA(); irInput.blur(); }
  });
  irInput.addEventListener(&#39;focus&#39;, function () { irInput.select(); });

  // ============================================================
  // CARGA DIFERIDA: no se descarga nada hasta que la tabla esté
  // a punto de verse (700px antes de entrar en pantalla).
  // ============================================================
  function liberarAltura() { root.style.minHeight = &#39;0&#39;; }

  function cargarPapa(ok, fallo) {
    if (window.Papa) { ok(); return; }
    var sc = document.createElement(&#39;script&#39;);
    sc.src = &#39;https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.2/papaparse.min.js&#39;;
    sc.onload = ok;
    sc.onerror = fallo;
    document.head.appendChild(sc);
  }

  function cuandoVisible(fn) {
    if (!(&#39;IntersectionObserver&#39; in window)) { fn(); return; }
    var hecho = false;
    var io = new IntersectionObserver(function (entradas) {
      if (hecho) { return; }
      for (var i = 0; i < entradas.length; i++) {
        if (entradas[i].isIntersecting) { hecho = true; io.disconnect(); fn(); return; }
      }
    }, { rootMargin: &#39;700px 0px&#39; });
    io.observe(root);
  }

  function descargar() {
  Papa.parse(CFG.csvUrl, {
    download: true,
    header: false,
    skipEmptyLines: &#39;greedy&#39;,
    complete: function (r) {
      liberarAltura();
      var data = (r &amp;&amp; r.data) || [];
      if (!data.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }

      // filas de encabezado
      var n = CFG.filasEncabezado;
      if (n == null) {
        n = data.findIndex(function (row) { return /^\d+$/.test(limpio(row[0])); });
        if (n < 0) { estado(&#39;No se encontraron filas de datos en el CSV.&#39;, true); return; }
      }
      n = Math.max(n, 1);

      cols = 0;
      data.slice(0, n).forEach(function (row) { cols = Math.max(cols, row.length); });
      pintarEncabezados(construirEncabezados(data.slice(0, n)));
      document.documentElement.style.setProperty(&#39;--min-w&#39;, (cols * 120) + &#39;px&#39;);

      // datos: las filas con texto solo en la 1a columna son subtitulos de subgrupo
      var grupo = &#39;&#39;;
      data.slice(n).forEach(function (row) {
        var f = row.slice(0, cols);
        while (f.length < cols) { f.push(&#39;&#39;); }
        var primera = limpio(f[0]);
        var resto = f.slice(1).some(function (v) { return limpio(v) !== &#39;&#39;; });
        if (!primera &amp;&amp; !resto) { return; }
        if (primera &amp;&amp; !resto &amp;&amp; !/^\d+$/.test(primera)) { grupo = primera; return; }
        todas.push({ c: f, g: grupo });
      });
      filtradas = todas.slice();

      if (!todas.length) { estado(&#39;No hay datos para mostrar.&#39;, true); return; }
      estado(&#39;&#39;);
      wrap.hidden = false;
      render();
    },
    error: falloCarga
  });
  }

  function falloCarga() { liberarAltura(); estado(MSG_ERROR, true); }

  // Botón "Volver a cargar": repite la descarga desde cero
  reintentarBtn.addEventListener(&#39;click&#39;, function () {
    estado(&#39;Cargando datos...&#39;);
    todas = []; filtradas = []; pagina = 0;
    wrap.hidden = true;
    cargarPapa(descargar, falloCarga);
  });

  cuandoVisible(function () { cargarPapa(descargar, falloCarga); });
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: tabla72 ===== --></p><p><!-- ===== INICIO: separador video ===== -->
<style>
.separador-root, .separador-root *, .separador-root *::before, .separador-root *::after { box-sizing: border-box; }
.separador-root { width: 100%; max-width: 1700px; margin: 0 auto; padding: 0; }
.separador-root iframe {
  display: block;
  width: 100%;
  height: 300px; /* respaldo: el script de adentro lo ajusta al cargar */
  border: 0;
}
</style>

<div class="separador-root">
<iframe id="separador-iframe-1" title="Separador en video" scrolling="no"
srcdoc='<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vídeo en bucle centrado</title>
<style>
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow: hidden; background: #fff; }
#embed-root { width: 100%; }
.container {
  display: flex;
  align-items: center;
  justify-content: center;
}
.line {
  width: 120px;
  height: 2px;
  background-color: #ffe564;
}
video {
  max-width: 200px;
  width: 100%;
  height: auto;
  margin: 0 10px;
  border: #ffe564 5px solid;
}
</style>
</head>
<body>
<div id="embed-root">
  <div style="height: 40px;"></div>
  <div class="container">
    <div class="line"></div>
    <video
      src="https://pauta.semana.com/2026/09_septiembre/5000_empresas/separador.mp4"
      autoplay
      loop
      muted
      playsinline>
      Tu navegador no admite la reproducción de vídeo.
    </video>
    <div class="line"></div>
  </div>
  <div style="height: 40px;"></div>
</div>

<script>
(function () {
  var root = document.getElementById(&#39;embed-root&#39;);

  function sendHeight() {
    var h = Math.ceil(root.getBoundingClientRect().height);
    if (!h) { return; }
    try {
      if (window.frameElement) { window.frameElement.style.height = h + &#39;px&#39;; }
    } catch (e) {}
    try { window.parent.postMessage({ type: &#39;EMBED_HEIGHT&#39;, height: h }, &#39;*&#39;); } catch (e) {}
  }

  window.addEventListener(&#39;load&#39;, sendHeight);
  window.addEventListener(&#39;resize&#39;, sendHeight);
  new ResizeObserver(sendHeight).observe(root);
  new MutationObserver(sendHeight).observe(root, { childList: true, subtree: true, attributes: true });

  var video = document.querySelector(&#39;video&#39;);
  if (video) {
    video.addEventListener(&#39;loadedmetadata&#39;, sendHeight);
    video.addEventListener(&#39;loadeddata&#39;, sendHeight);
  }
})();
</script>
</body>
</html>
'></iframe>
</div>
<!-- ===== FIN: separador video ===== --></p><p><!DOCTYPE html>
<html lang="es">
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Cierre especiales</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.caja-todo-gif{
width: 100%;
display: flex;
justify-content: center;
margin: 10px 0;
}
.caja-gif img{
-webkit-box-shadow: 3px 4px 21px -3px rgba(104,86,62,0.29);
-moz-box-shadow: 3px 4px 21px -3px rgba(104,86,62,0.29);
box-shadow: 3px 4px 21px -3px rgba(104,86,62,0.29);
max-width: 730px;
max-height: 70px;
width: 100%;
z-index: 1;
}
@media (max-width: 768px){
.caja-gif img{
max-width: 220px;
max-height: 70px;
}

}
.trc_elastic .trc_rbox .trc_rbox_div{
display: none;
}
.thumbnails-a .trc_rbox_header{
display: none;
}
</style>
<!-- Aplicar clase al contenedor si no existe -->
<div>
<div class="caja-todo-gif">
    <div class="caja-gif">
           <a href="https://www.semana.com/especiales/" target="_blank"><img  src="https://multimedia.semana.com/2024/06_junio/gif-semana/esp-semana.gif" alt="Especiales Semana" class="gif "> </a> 
    </div>
</div>
</div>
</html></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/POZC3NRBCBEPFBIRF66YICMFMY.jpg?auth=10b08f0bb54e79a0a013a752b9b1edab2083ad0309328555b632aaa9c6745c0b&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[5.000 empresas 2026]]></media:description></media:content></item><item><title><![CDATA[El exgobernador Juan Carlos Abadía se descompensó al enterarse de su traslado a una cárcel]]></title><link>https://www.semana.com/confidenciales/articulo/el-exgobernador-juan-carlos-abadia-se-descompenso-al-enterarse-de-su-traslado-a-una-carcel/202609/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/el-exgobernador-juan-carlos-abadia-se-descompenso-al-enterarse-de-su-traslado-a-una-carcel/202609/</guid><dc:creator><![CDATA[Semana.Com ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 05:13:09 +0000</pubDate><content:encoded><![CDATA[<p>Hoy, todos los políticos que están privados de la libertad en instalaciones policiales y militares, y <b>que están siendo procesados por escándalos de corrupción</b>, están temblando tras la orden del presidente Abelardo De La Espriella de llevarlos a La Picota, en Bogotá. <a href="https://www.semana.com/nacion/articulo/revelan-la-primera-foto-de-wadith-manzur-en-la-picota-tras-ser-trasladado-por-orden-del-presidente/202635/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/revelan-la-primera-foto-de-wadith-manzur-en-la-picota-tras-ser-trasladado-por-orden-del-presidente/202635/">Ocurrió con el exrepresentante a la Cámara Wadith Manzur </a>y otros que fueron enviados a dicha cárcel.</p><p>Hasta ahora, era desconocida la historia del exgobernador del Valle Juan Carlos Abadía. Tan pronto conoció la orden de traslado a La Picota,<b> sufrió una descompensación de salud y tuvo que ser atendido por médicos</b> y llevado a un centro asistencial. Una vez sea dado de alta, tendrá que llegar al centro penitenciario que le fue asignado por el Inpec. Los traslados continuarán. De La Espriella está decidido a acabar con los privilegios para este tipo de detenidos.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/76CT6A6HNFGKZPJQVLOONONHUE.jpg?auth=2d5066b4c6320890a16a296bf21626baf2a1270c4454e79c3148494e29f81afd&amp;smart=true&amp;width=1663&amp;height=1250" type="image/jpeg" height="1250" width="1663"><media:description type="plain"><![CDATA[El exgobernador Juan Carlos Abadía se descompensó al enterarse de su traslado a una cárcel]]></media:description></media:content></item><item><title><![CDATA[Estos son los caminos jurídicos que se vienen en Ecopetrol, con los anuncios de una auditoría forense]]></title><link>https://www.semana.com/economia/empresas/articulo/estos-son-los-caminos-juridicos-que-se-vienen-en-ecopetrol-con-los-anuncios-de-una-auditoria-forense/202616/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/estos-son-los-caminos-juridicos-que-se-vienen-en-ecopetrol-con-los-anuncios-de-una-auditoria-forense/202616/</guid><dc:creator><![CDATA[Carlos Enrique Rodríguez Pérez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:08:16 +0000</pubDate><content:encoded><![CDATA[<p>Las denuncias por corrupción en Ecopetrol podrían destapar uno de los mayores escándalos de contratación pública del país, incluso por encima de los casos de la Unidad Nacional para la Gestión del Riesgo de Desastres y Centros Poblados. Así lo advirtió Luis Felipe Henao, miembro de la junta directiva de la petrolera y representante de los accionistas minoritarios, quien presidió ese órgano hasta el jueves 17 de septiembre. Antes de dejar el cargo, Henao se <b>refirió a la auditoría forense que revisa las denuncias sobre un presunto saqueo a la compañía estatal.</b></p><p>En sus declaraciones públicas, Henao advirtió que hay 32 casos identificados hasta ahora en <a href="https://www.semana.com/confidenciales/articulo/supersalud-reactivara-auditoria-por-presuntas-irregularidades-en-la-fabrica-de-licores-de-antioquia/202631/" target="_blank" rel="noreferrer" title="https://www.semana.com/confidenciales/articulo/supersalud-reactivara-auditoria-por-presuntas-irregularidades-en-la-fabrica-de-licores-de-antioquia/202631/">la mencionada auditoría</a>, lo que dijo “sería el mayor detrimento que ha sufrido el país en su historia”.</p><p>También se conocieron sendos audios de Manel Grau y Eva Ferrer, los catalanes cercanos a la ex primera dama y al expresidente Petro, lo que evidenciaría su presunta injerencia en la petrolera y en algunas de sus filiales, con miras a repartir cargos, contratos y operaciones clave. Además, la lupa está puesta en transacciones de gas y mantenimientos de plantas, entre otros controvertidos negocios.</p><p>A ello se suma la compleja situación de Ricardo Roa, expresidente de la petrolera, <b>acusado ante la Fiscalía por violación de topes electorales</b>, como gerente de la campaña Petro Presidente, y por la polémica compra de un apartamento, con posible tráfico de influencias.</p><p>Los casos de corrupción estallaron en medio de denuncias de ruptura del gobierno corporativo de la petrolera, atribuido a la –cada vez frecuente– injerencia del Gobierno en las decisiones, que estaban marcadas por una fuerte carga ideológica contra el sector. En paralelo, en ese periodo se profundizó el déficit de gas, llevando al país a importar más del 30 por ciento de su demanda, cifra que podría ser mayor a medida que el<b> </b><a href="https://www.semana.com/mejor-colombia/articulo/el-valle-de-aburra-se-prepara-para-la-llegada-del-fenomeno-el-nino-monitoreo-constante-y-acciones-para-reducir-riesgos/202628/" target="_blank" rel="noreferrer" title="https://www.semana.com/mejor-colombia/articulo/el-valle-de-aburra-se-prepara-para-la-llegada-del-fenomeno-el-nino-monitoreo-constante-y-acciones-para-reducir-riesgos/202628/">fenómeno de El Niño agudiza su presencia.</a></p><p>En contravía del principal negocio de Ecopetrol, el de los hidrocarburos, la petrolera no recibió nuevos contratos de exploración ni avanzó en fracking. Tampoco concretó un negocio en el campo Permian de Estados Unidos, que buscaba aumentar recursos, utilidades y reservas. <b>La decisión llevó a la renuncia de dos miembros de la junta directiva: Luis Zuleta y Juan José Echavarría.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZG7OWF7A6JFSXGJKHE3HYPV6TI.jpg?auth=4c951488b51cb7f9594137821e8355495bcda4e6e83d2cafcd2fa56657b03a5c&smart=true&width=1280&height=720" alt="El déficit de suministro de gas podría incrementar con la llegada de El Niño." height="720" width="1280"/><h2>El futuro jurídico</h2><p>Ya con una nueva junta directiva, en la que permanecen, además de Henao, Ricardo Rodríguez Yee, por las regiones, y César Loza, por los trabajadores, hay expectativa por el desenlace de las denuncias, mientras se espera el nombramiento del nuevo presidente de Ecopetrol y avanza la purga que ha hecho el nuevo Gobierno en las directivas de la empresa.</p><p>El exsenador Jorge Enrique Robledo, accionista minoritario de Ecopetrol, al ser preguntado sobre qué tanto pueden ellos alzar su voz, dijo: “Como minoritarios somos muy débiles, no tenemos acceso a toda la información. Entonces es difícil también hacer parte del control”. </p><p>Y se despachó contra la junta anterior: “<b>La mediocridad y la alcahuetería de esa junta es una vergüenza.</b> Su papel mínimo era el de estar vigilante, revisar si la empresa acertaba o no. Y frente a la nueva junta, quiero decir que creo que esta entidad necesita gente seria que haya hecho méritos en el sector”.</p><p>En esta tormenta de hechos de corrupción y malas decisiones, la anterior junta directiva está en la mira. ¿Qué responsabilidad le cabe? Es el interrogante que se le planteó a Luis Guillermo Vélez, exsuperintendente de Sociedades y expresidente de la Agencia Nacional de Defensa Jurídica del Estado. “Les cabe toda la responsabilidad. Los administradores —el presidente, los directivos y los miembros de la junta— responden por lo que haya podido ocurrir en detrimento de la empresa y del patrimonio de los accionistas”, dijo.</p><p>A esa posición se suman otros abogados consultados por SEMANA, quienes afirman que los miembros de la junta tienen el deber fiduciario de velar por lo que más le convenga a la compañía, no por el interés de sus nominadores. Igualmente, deben vigilar y realizar los controles necesarios para la correcta operación de la empresa. <a href="https://www.semana.com/politica/articulo/lo-ultimo-carlos-suarez-el-estratega-de-abelardo-de-la-espriella-fue-elegido-presidente-de-la-junta-directiva-de-ecopetrol/202637/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/lo-ultimo-carlos-suarez-el-estratega-de-abelardo-de-la-espriella-fue-elegido-presidente-de-la-junta-directiva-de-ecopetrol/202637/">Hay una responsabilidad de la junta, pero también una individual</a> –de cada miembro de ella– que pudo haberse apartado de algunas determinaciones.</p><p>“El miembro de cualquier junta directiva tiene unos deberes fiduciarios que pueden acarrear responsabilidades civiles y penales. El estándar de comportamiento incluido en la Ley 222 de 1995 es el del ‘buen hombre de negocios’. En el caso específico de Ecopetrol, la función del integrante de junta directiva no es hacer lo que diga el presidente de la República, sino actuar en busca del mayor beneficio de la compañía.<b> En el Gobierno pasado, la ideología iba en contra de los mejores intereses de la compañía, y, por supuesto, los hechos de corrupción también</b>”, advierte Andrés Jiménez, socio de la firma Riveros Bazzani Abogados y quien fue delegado para las Finanzas Criminales de la Fiscalía General. </p><p>“Si yo fuera miembro de la anterior junta, estaría muy preocupado, porque podrían abrirse varias acciones. Por ese órgano pasaron decisiones frente a las cuales pudo haber negligencia en la evaluación de riesgos y controles o falta de medidas oportunas”, señala uno de los juristas consultados.</p><p>Por ello, como agrega Jiménez, la pregunta es si, frente a las denuncias recibidas internamente o conocidas públicamente, se ordenaron todas las investigaciones y si tomaron decisiones que les correspondían a un “buen hombre de negocios” o si Ricardo Roa y demás personas que pudieran haber sido denunciados fueron mantenidos a pesar de los resultados de las investigaciones. </p><p>Ángela María Robledo, quien fue miembro de la junta anterior, afirmó: “Nosotros tramitamos todas las denuncias que nos llegaron. Ya Luis Felipe Henao, quien presidía el Comité de Gobierno Corporativo, explicó por qué estas denuncias no llegaron a la junta directiva”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/D7AWF336LNAJTP6OZYVMUSXLZ4.jpg?auth=b2aad768ae1c59e682d2d010d4a07db976b029b91c003a8a6149a16b1fb35c52&smart=true&width=1280&height=720" alt=""Seguramente, la nueva junta directiva de Ecopetrol buscará desmarcarse de la anterior y podría emprender acciones en su contra"." height="720" width="1280"/><p>Un exmiembro de junta consultado por SEMANA señaló que se destapó el caso de Roa, en buena parte, gracias a la prensa. “Hicimos la evaluación de Control Risk y promovimos la investigación con Covington, que Roa luego filtró para pararla. Sobre la corrupción interna, puestos, contratos, entre otros, es muy difícil que lo vea la junta si la administración lo esconde”. <b>Añadió que varios miembros de junta desautorizaron seguir la investigación de Covington sobre Roa.</b></p><p>De acuerdo con los juristas, existe el delito de administración desleal, es decir, contra quien cause un perjuicio o detrimento a la empresa, y hay acciones de responsabilidad de los administradores, que ya están reguladas. </p><p>Vélez explica que los accionistas tienen una herramienta para hacer responsables a los administradores de su gestión. Se trata de la acción social de responsabilidad, que se adelanta ante la Superintendencia de Sociedades y la aprueba la asamblea. Pero va más allá: “Cuando la acción del administrador se realiza en contravención de la ley o de los estatutos, hay una presunción de responsabilidad por parte del administrador. O sea, la carga de la prueba se invierte”, señala el exsuperintendente.</p><p>Un experto en arbitrajes y conflictos societarios explica el escenario que podría abrirse en el mediano plazo: “Seguramente, l<a href="https://www.semana.com/politica/articulo/natalia-de-la-calle-hija-de-humberto-de-la-calle-fue-despedida-de-filial-de-ecopetrol-jorge-ernesto-arango-primo-de-su-esposo-tambien-fue-desvinculado/202615/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/natalia-de-la-calle-hija-de-humberto-de-la-calle-fue-despedida-de-filial-de-ecopetrol-jorge-ernesto-arango-primo-de-su-esposo-tambien-fue-desvinculado/202615/">a nueva junta directiva de Ecopetrol buscará desmarcarse de la anterior</a> y podría emprender acciones en su contra. Esa nueva junta podría declararse víctima o hacerlo Ecopetrol, como persona jurídica, y denunciar a sus antiguos integrantes”.</p><p>Sin embargo, no solo está el frente local. La acción de Ecopetrol está listada en Nueva York. En esa jurisdicción, como advierte un banquero de inversión, los estándares son más altos. “Cuando se hacen asesorías para listar compañías en Estados Unidos, hay una norma, la 10b5, que le permite a un comprador de ADR, por ejemplo, de Ecopetrol en Nueva York, demandar a la compañía por cualquier tipo de fraude o de corrupción que le genere un perjuicio. <b>Bajo esa regla podría haber acciones contra la compañía</b>”, dice un abogado experto en transacciones empresariales internacionales. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3BFZ62TWRZHEFAWGNBIRCZ6LFE.jpg?auth=006baaa1b5b461af6d083f68ceb090b20e14ca4ceac73d73036528f08926d8f7&smart=true&width=1280&height=720" alt="Audios de Eva Ferrer y Manel Grau evidenciarían su supuesta injerencia en contratos, nombramientos y operaciones en Ecopetrol y sus filiales." height="720" width="1280"/><p>Y no descarta instrumentos como la Foreign Corrupt Practices Act (FCPA), ley mediante la cual se podría demandar al accionista controlante y no solo a la compañía que conllevó ese tipo de actuaciones. “Y bajo esta norma todos tiemblan, porque son los brazos largos de la justicia estadounidense contra quienes cometen actos de corrupción en otros países, pero que afectan, de alguna manera, a sus bancos, a sus compañías listadas o a sus mercados de valores”, añade el abogado.</p><p>Por ahora, la nueva junta y, una vez sean designados, el presidente y los demás directivos de la petrolera <b>quedarán a la espera de los resultados de las auditorías y de las eventuales responsabilidades que se deriven.</b> Apenas empieza a abrirse la caja de Pandora.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AQQZWJGJZNHPPCJNFUG5ZUWLEQ.jpg?auth=1d77b928ed2b53c807e1dfed4ad1a45c74acc22610fb0403a654b86f8babe071&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Ricardo Roa fue acusado ante la Fiscalía por violación de topes electorales, como gerente de la campaña de Petro Presidente. También ha sido señalado por tráfico de influencias.]]></media:description></media:content></item><item><title><![CDATA[Críticas de la ultraderecha a Mbappé por su posición sobre la migración marroquí en Ceuta dividen en Francia]]></title><link>https://www.semana.com/deportes/articulo/criticas-de-la-ultraderecha-a-mbappe-por-su-posicion-sobre-la-migracion-marroqui-en-ceuta-dividen-en-francia/202641/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/criticas-de-la-ultraderecha-a-mbappe-por-su-posicion-sobre-la-migracion-marroqui-en-ceuta-dividen-en-francia/202641/</guid><dc:creator><![CDATA[William Horacio Perilla Gamboa]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:04:41 +0000</pubDate><content:encoded><![CDATA[<p>Las críticas del candidato ultraderechista a la elección presidencial francesa Éric Zemmour al futbolista Kylian Mbappé, a quien acusó de “solidaridad islámica” con los migrantes de Ceuta, indignaron en Francia, especialmente a los políticos de izquierda.</p><p>La estrella del Real Madrid justificó su decisión de no ponerse completamente una camiseta de apoyo a la población de Ceuta, en que también quería “tener un gesto” para los inmigrantes que perdieron la vida al intentar entrar en este enclave español en el norte de África.</p><p>“Tengo toda la solidaridad con Ceuta y con todas las víctimas porque antes de ser jugador, soy humano”, aseguró el atacante francés el miércoles pasado al diario español AS.</p><p>Pero un día después, durante una entrevista en la cadena francesa BMFTV, Zemmour, adepto de la teoría complotista de un supuesto “Gran Reemplazo” de población europea blanca por inmigrantes africanos, <b>acusó a Mbappé de “tomar partido por los migrantes,</b> contra los españoles”.</p><p>“Se ve claramente que la solidaridad que nace en los suburbios, la solidaridad islámica, por decirlo claramente, es superior a la solidaridad francesa o incluso a la de su país de acogida, España”, dijo el líder del partido ¡Reconquista!.</p><h2>Duras críticas contra Mbappé</h2><p>Estas declaraciones indignaron a la izquierda. “¿Durante cuánto tiempo dejaremos a este hombre escupir su odio en nuestros platós de televisión?”, escribió en la red social X el diputado de izquierda radical, Manuel Bompard.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JUN2S2I67BFQTIWFUT24CSJ4S4.jpg?auth=b51dd903cb20e957375226425e9a719b9a50fb2bd67374f03283605ebca6d3f3&smart=true&width=7055&height=4703" alt="Kylian Mbappé, máxima figura del Real Madrid para la presente temporada." height="4703" width="7055"/><p>La diputada ecologista Léa Balage El Mariky señaló la entrevista de Zemmour “sin moderación significativa por parte de los periodistas” al regulador audiovisual francés Arcom, que puede imponer sanciones.</p><p>“Estas declaraciones constituyen un llamado al odio y a la estigmatización”, según su denuncia, que pudo consultar AFP.</p><p>La entrada a finales de julio de miles de migrantes a Ceuta desde la vecina Marruecos, decenas de los cuales murieron, alimentaron las críticas a la inmigración por parte de partidos de derecha y extrema derecha en Francia, a siete meses de la elección presidencial de 2027.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DAIZLTW4HFBJDDFMEEDPOS6Q6Q.jpg?auth=08757f8a08fc9b9783f84d69175105db38b3405ba236a2caf0be0b3b03300e39&amp;smart=true&amp;width=6000&amp;height=4000" type="image/jpeg" height="4000" width="6000"><media:description type="plain"><![CDATA[Kylian Mbappé hablando en rueda de prensa.]]></media:description><media:credit role="author" scheme="urn:ebu">THOMAS COEX</media:credit></media:content></item><item><title><![CDATA[Guerra de egos en ‘MasterChef Celebrity’: el fuerte agarrón entre Emiro Navarro y Robert Farah]]></title><link>https://www.semana.com/gente/articulo/guerra-de-egos-en-masterchef-celebrity-el-fuerte-agarron-entre-emiro-navarro-y-robert-farah/202650/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/guerra-de-egos-en-masterchef-celebrity-el-fuerte-agarron-entre-emiro-navarro-y-robert-farah/202650/</guid><dc:creator><![CDATA[Valentina Rueda Rodríguez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:03:50 +0000</pubDate><content:encoded><![CDATA[<p>El capítulo<b> emitido este 18 de septiembre en </b><i><b>MasterChef Celebrity Colombia</b></i><b> dejó al descubierto</b> los desafíos de liderazgo y convivencia que enfrentan las celebridades en las pruebas grupales. </p><p>Durante la emisión del episodio, <b>el creador de contenido Emiro Navarro, quien asumió el rol de capitán del equipo verde, manifestó públicamente su inconformidad </b>al considerar que sus compañeros desestimaron sus propuestas gastronómicas en medio de la prueba.</p><p>La dinámica del reto, explicada por el jurado integrado por los chefs <b>Belén Alonso, Jorge Rausch y Nicolás de Zubiría, exigía a los participantes preparar un menú de dos tiempos, </b>presentando tres platos idénticos por cada tiempo. </p><p>Con la despensa abierta y un límite de tiempo de 60 minutos, la coordinación y la comunicación interna resultaron determinantes para el desarrollo de la prueba.</p><p>La inconformidad de Emiro Navarro surgió durante <b>la etapa inicial en la despensa, momento en el que los integrantes del grupo definían la estrategia de cocina. </b></p><p>De acuerdo con lo transmitido en la señal del <i>Canal RCN</i>, Navarro sugirió una idea específica para el menú, pero la propuesta fue desplazada por la iniciativa del extenista profesional Robert Farah.</p><p>Farah propuso preparar un arroz atollado, <b>plato tradicional del Valle del Cauca, argumentando que una receta típica con identidad regional tendría mayor probabilidad de impactar </b>favorablemente el paladar de los jurados, caracterizados por su nivel de exigencia técnica. </p><p>La mayoría del equipo respaldó la postura de Farah, dejando en segundo plano las observaciones del capitán.</p><p>Ante la inclinación del grupo hacia la propuesta de Farah, Navarro hizo evidente su malestar frente a las cámaras y compartió sus impresiones sobre la dinámica de trabajo.</p><p><b>“Lo que menos tuvieron en cuenta fue la opinión del capitán; yo estoy en el aire. Al parecer no me necesitan. O me equivoco, o mi opinión no cuenta”</b>, sostuvo el creador de contenido.</p><p><blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/reel/Ddc9X8pMuY-/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:16px;"> <a href="https://www.instagram.com/reel/Ddc9X8pMuY-/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"> <div style=" display: flex; flex-direction: row; align-items: center;"> <div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div></div></div><div style="padding: 19% 0;"></div> <div style="display:block; height:50px; margin:0 auto 12px; width:50px;"><svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-511.000000, -20.000000)" fill="#000000"><g><path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"></path></g></g></g></svg></div><div style="padding-top: 8px;"> <div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;">Ver esta publicación en Instagram</div></div><div style="padding: 12.5% 0;"></div> <div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"><div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> <div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div></div><div style="margin-left: 8px;"> <div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"></div> <div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"></div></div><div style="margin-left: auto;"> <div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> <div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> <div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div></div></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"></div></div></a><p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"><a href="https://www.instagram.com/reel/Ddc9X8pMuY-/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank">Una publicación compartida por Canal RCN (@canalrcn)</a></p></div></blockquote>
<script async src="//www.instagram.com/embed.js"></script></p><p>Navarro también se desahogó con la conductora del programa,<b> Claudia Bahamón, manifestando que sintió una falta de escucha por parte de sus compañeros.</b> Durante la interacción en la cocina, el influenciador se dirigió directamente a Farah señalando: </p><p><b>“Hay una persona que es muy competitiva que lo transmite en su rostro”, </b>en referencia a la postura firme del deportista al asumir la dirección táctica de la receta.</p><p>Por su parte, la emisión <b>mostró a un Robert Farah enfocado en la ejecución técnica del plato</b>, priorizando el cumplimiento de los tiempos de cocción y la estandarización que exige la competencia en esta etapa.</p><p>Emiro Navarro, conocido por su presencia en redes y su participación en formatos de telerrealidad en Colombia, ha destacado en la competencia por su estilo directo e interactivo. </p><p>Por otro lado, Robert Farah aporta una disciplina competitiva derivada de su carrera en el tenis profesional de alto rendimiento.</p><p>Los choques de criterio durante los retos por equipos constituyen una constante en la trayectoria del programa <i>MasterChef Celebrity</i>, donde la presión del reloj y la evaluación del jurado suelen tensionar las relaciones interpersonales entre los concursantes.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KUGZXUFXGFEFBGSZ6LB2P2RGII.jpg?auth=c2777ad226cd0635d50c038260151f42dba4c803b45d57d9e23bed308c308c08&amp;smart=true&amp;width=3264&amp;height=2057" type="image/jpeg" height="2057" width="3264"><media:description type="plain"><![CDATA[La dura pulla de Emiro Navarro a Robert Farah en 'MasterChef Celebrity'.]]></media:description></media:content></item><item><title><![CDATA[La millonada que recibiría la Selección Colombia si Infantino y la FIFA ceden a la presión de Europa: se juega su reelección]]></title><link>https://www.semana.com/deportes/articulo/la-millonada-que-recibiria-la-seleccion-colombia-si-infantino-y-la-fifa-ceden-a-la-presion-de-europa-se-juega-su-reeleccion/202619/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/la-millonada-que-recibiria-la-seleccion-colombia-si-infantino-y-la-fifa-ceden-a-la-presion-de-europa-se-juega-su-reeleccion/202619/</guid><dc:creator><![CDATA[William Horacio Perilla Gamboa]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:19 +0000</pubDate><content:encoded><![CDATA[<p><b>La </b><a href="https://www.semana.com/noticias/seleccion-colombia/" target="_blank" rel="noreferrer" title="https://www.semana.com/noticias/seleccion-colombia/"><b>Selección Colombia</b></a><b> puede verse beneficiada debido a la guerra de poderes que existe en la FIFA</b> y que tiene a Gianni Infantino contra las cuerdas. El actual presidente de la entidad mundial quedó mal parado tras la iniciativa de llevar los eventos estrella ante los agentes privados. Esta medida abrió una fuerte discusión en el mundo y generó un rechazo absoluto.</p><p>Esta mala salida fue solamente carne de cañón para sus opositores, que no lo dudaron y se mostraron ante el mundo. Quedó claro que la UEFA de Europa, comandada por Aleksander Ceferin, es la rama que más presión le hace a Gianni Infantino y preferiría que no siguiera en la presidencia de la FIFA en las elecciones de marzo, a no ser que aumente el dinero a repartir.</p><p>En estas últimas horas se conoció el poder aliado que se le unió: la Concacaf, que se creía fiel a Gianni Infantino, mucho más por el Mundial 2026, que se celebró en Norteamérica y fue todo un éxito, y por su estrecha relación con el presidente de Estados Unidos, Donald Trump.</p><p>Parece que las cosas ya no son así y la amistad no alcanza. La alianza quedó establecida. La oposición UEFA-Concacaf ya está pegando duro en los círculos de Infantino y se conoció el correo enviado que solo le inyecta más presión. El asunto: <a href="https://www.semana.com/deportes/articulo/la-millonada-que-la-uefa-y-concacaf-le-piden-a-la-fifa-para-salvar-a-gianni-infantino-y-que-siga-como-presidente/202609/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/la-millonada-que-la-uefa-y-concacaf-le-piden-a-la-fifa-para-salvar-a-gianni-infantino-y-que-siga-como-presidente/202609/">repartir más dinero en sus asociaciones miembro y así intentar convencer de su reelección.</a></p><p><a href="https://www.semana.com/deportes/articulo/gianni-infantino-se-antepone-a-las-criticas-con-esto-salio-para-las-siguientes-elecciones-de-la-fifa/202658/" target="_blank" rel="" title="https://www.semana.com/deportes/articulo/gianni-infantino-se-antepone-a-las-criticas-con-esto-salio-para-las-siguientes-elecciones-de-la-fifa/202658/"><b>Con Gianni Infantino tambaleando en el cargo,</b></a> ambos mandatarios le solicitaron a la FIFA el reparto de al menos 10 millones de dólares para cada una de las 211 federaciones miembro, en un correo que fue enviado al ítalo-suizo en las últimas horas y al que tuvo acceso la Agencia AFP.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TLL5LTBQ6BFMLCOIGOD6XPYXDY.png?auth=6b2677df9a94290491cde797dc95c33d3f6c72993b67f7f35d6796fb7c391082&smart=true&width=1280&height=720" alt="Gianni Infantino y su reelección en Fifa se hace cada día más compleja" height="720" width="1280"/><p>Por supuesto,<b> Colombia es miembro de la FIFA y sería beneficiada con este pedido.</b> La FIFA aún no se ha pronunciado. En la Federación Colombiana de Fútbol hacen cuentas, pues esos 10 millones de dólares representan algo más de 31.000 millones de pesos colombianos, unas arcas que estarían listas para ser distribuidas en el desarrollo del FPC y los procesos formativos de las selecciones Colombia.</p><h2>Lo que dice el correo enviado a Infantino</h2><p>“La FIFA está a punto de cerrar el ciclo 2023-2026 con unas reservas de alrededor de 6.000 millones de dólares, las más importantes de su historia. Sobre esta base, <b>la FIFA debería abonar al menos 10 millones de dólares a cada una de sus 211 asociaciones miembro</b> durante el ciclo 2027-2030, es decir, un importe total de unos 2.100 millones de dólares”, escribieron los dos dirigentes en una carta de la que la Agencia AFP obtuvo copia.</p><p>Esta iniciativa de dos de las confederaciones más críticas con la gestión de Infantino por el escándalo de los inversores privados supone una nueva escalada en la crisis que sacude el mundo del fútbol, pues esas políticas de Gianni fallaron, la UEFA se opuso férreamente y ahora su cargo como presidente está en riesgo. La repartición podría salvarlo.</p><p>Ya se ven las elecciones a la presidencia de la FIFA en marzo de 2027, con un Ceferin al acecho por el cargo. Un escrutinio en el que cada voto contará entre las 211 federaciones con derecho al voto.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QVVRNCJLVZBINA2MNTN4ZHSVMA.jpg?auth=8627b4468fd1ac5f9b26abbfb5dead0c154789c97fe52e4c94facafaff346c16&amp;smart=true&amp;width=819&amp;height=461" type="image/jpeg" height="461" width="819"><media:description type="plain"><![CDATA[Ramón Jesurún y Gianni Infantino.]]></media:description><media:credit role="author" scheme="urn:ebu">Masashi Hara  - FIFA</media:credit></media:content></item><item><title><![CDATA[Gopass: así impulsó el negocio de peajes electrónicos y la movilidad en Colombia]]></title><link>https://www.semana.com/economia/empresas/articulo/gopass-asi-impulso-el-negocio-de-peajes-electronicos-y-la-movilidad-en-colombia/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/gopass-asi-impulso-el-negocio-de-peajes-electronicos-y-la-movilidad-en-colombia/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Cuando Gopass comenzó operaciones en 2020, Colombia todavía estaba rezagada frente a otros países latinoamericanos en pagos electrónicos asociados a la movilidad. No existía un sistema nacional interoperable de recaudo en peajes y <b>buena parte de las transacciones relacionadas con vehículos seguían dependiendo del efectivo.</b></p><p>Para los fundadores de la empresa, allí había un problema que podía resolverse con tecnología. Jorge Miguel Camacho, CEO y cofundador de Gopass, explica que en ese momento identificaron que más del 80 por ciento de <a href="https://www.semana.com/vehiculos/articulo/aliste-efectivo-si-va-a-pasar-por-estos-peajes-a-partir-del-1-de-agosto-no-aceptaran-otro-medio-de-pago-por-determinadas-horas/202609/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/aliste-efectivo-si-va-a-pasar-por-estos-peajes-a-partir-del-1-de-agosto-no-aceptaran-otro-medio-de-pago-por-determinadas-horas/202609/">los pagos relacionados con movilidad se hacían en efectivo.</a> Sin embargo, la empresa no comenzó por los peajes, como podría suponerse, sino por los parqueaderos. </p><p>La decisión ayuda a explicar parte del modelo que desarrolló posteriormente. Gopass no se planteó como una compañía dedicada solo al recaudo electrónico en carreteras, sino como una <b>plataforma para solucionar diferentes pagos y trámites alrededor del vehículo.</b></p><p>Después llegaron los peajes. La empresa participó, según Camacho, en las discusiones que llevaron a la reglamentación de la interoperabilidad del recaudo electrónico durante el gobierno de Iván Duque. Con el tiempo agregó parqueo en vía, pago de combustible, SOAT, información sobre revisión técnico-mecánica, multas, impuestos y algunos seguros asociados a los viajes y al uso de parqueaderos. </p><p>Esa diversificación es una de las razones que la empresa atribuye a su crecimiento. Un mismo tag puede utilizarse en distintos momentos de la experiencia de movilidad, lo que aumenta la frecuencia de uso y reduce la dependencia de un solo negocio.</p><p>Las cifras entregadas por la compañía muestran la escala alcanzada en seis años. Gopass ya llegó a un millón de usuarios en Colombia y a cerca del 54 por ciento de los tags que circulan en el país. También reporta <b>presencia en más de 250 parqueaderos, cerca del 92 por ciento de los peajes nacionales y más de 500 estaciones de servicio Terpel. </b></p><p>Otro elemento ha sido la facilidad para conectarse con distintos medios de pago. El sistema permite utilizar todas las billeteras digitales, tipo Nequi y DaviPlata, hacer recargas mediante PSE y vincular tarjetas débito o crédito de diferentes entidades financieras. Camacho considera que esa característica ayudó a reducir una de las posibles barreras de entrada del producto: la necesidad de que el usuario perteneciera a un banco o utilizara un mecanismo específico. </p><p>La compañía también encontró un mercado que apenas comenzaba a desarrollarse. Colombia llegó tarde al recaudo electrónico de peajes frente a <a href="https://www.semana.com/turismo/articulo/el-turismo-de-experiencias-se-consolida-como-motor-de-los-viajes-en-latinoamerica-segun-estudio/202612/" target="_blank" rel="noreferrer" title="https://www.semana.com/turismo/articulo/el-turismo-de-experiencias-se-consolida-como-motor-de-los-viajes-en-latinoamerica-segun-estudio/202612/">países como Chile, México, Brasil o Argentina</a>, pero la adopción ha avanzado rápido. Según las cifras citadas por Camacho, cerca del 34 por ciento de los recaudos en peajes ya se realiza por medios electrónicos. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/E4DCC5EJFZGJNG7OMEAQLGZ3NQ.jpeg?auth=8b82e89f12a53ddf90f8364909bd7979f1787fbe0c0877db1018983c63243b2d&smart=true&width=695&height=340" alt="Los usuarios de Gopass usan un tag que pegan en sus vehículos para habilitar el pago de peajes, parqueaderos o combustible." height="340" width="695"/><p>Ese crecimiento todavía tiene límites. El propio ejecutivo señala que el principal obstáculo está en la infraestructura: en algunos peajes hay pocos carriles electrónicos para la cantidad de vehículos que ya usan tags. Así, un sistema diseñado para ahorrar tiempo puede terminar generando filas. En un peaje de tres carriles, por ejemplo, si solo uno acepta pago electrónico, pero <b>cerca del 40 por ciento de los vehículos intenta utilizarlo, aparece un cuello de botella.</b> </p><p>Para Camacho, sin embargo, esa limitación también significa que todavía existe espacio para crecer a medida que aumenten los carriles electrónicos y eventualmente se desarrollen esquemas de libre flujo.</p><h2>Capital para acelerar</h2><p>El crecimiento también ha requerido recursos. Gopass ha levantado 23 millones de dólares en diferentes rondas de capitalización y entre sus inversionistas están los fondos internacionales Kaszek, Kfund y Qualcomm. Esta última, además de capital, ha aportado conocimiento tecnológico relacionado con soluciones para vehículos y desarrollos de inteligencia artificial. </p><p><b>La compañía facturó 53.000 millones de pesos en 2025</b>, un 28 por ciento más, y actualmente tiene alrededor de 600 trabajadores. Su CEO señala además que durante los últimos tres años las principales líneas de negocio prácticamente duplicaron su tamaño cada año y que la expectativa para 2026 es mantener un crecimiento cercano a duplicarse. </p><p>La siguiente fase está menos concentrada en el usuario particular y más en las empresas.</p><p>Gopass acaba de adquirir en Colombia el negocio de Flotas de Pluxee, una operación de administración y pago de combustible que maneja más de 18 millones de galones al año, equivalentes, según la compañía,<b> a unos 130 millones de dólares en transacciones.</b> La negociación tomó más de un año. </p><p>Con la compra, Gopass busca integrar el gasto de combustible con servicios que ya ofrecía a transportadores, como peajes y seguros. La lógica es que una flota pueda administrar diferentes costos asociados a sus vehículos desde una misma plataforma. Esta adquisición contempla una estrategia de crecimiento que combinará expansión orgánica, adquisiciones y alianzas. </p><p>El movimiento también muestra cómo ha cambiado el negocio desde 2020. La empresa comenzó <a href="https://www.semana.com/vehiculos/articulo/asi-responde-la-ley-en-colombia-si-le-danan-el-carro-dentro-de-un-parqueadero/202601/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/asi-responde-la-ley-en-colombia-si-le-danan-el-carro-dentro-de-un-parqueadero/202601/">eliminando el tiquete y la fila para pagar un parqueadero</a>; después llevó el mismo identificador al peaje y al combustible. Ahora quiere utilizar esa infraestructura para administrar gastos de flotas empresariales.</p><p>En paralelo, Gopass comenzó hace cerca de un año su expansión hacia México, donde ha desarrollado alianzas e integraciones con empresas de pagos electrónicos. Colombia y México serán sus prioridades durante los próximos tres años, aunque también ha sostenido conversaciones con Chile y Perú. </p><p>Su ventaja, según Camacho, no estaría solamente en vender un tag, sino en haber construido alrededor de este varios servicios. Esa combinación explica buena parte de lo ocurrido en seis años: Gopass entró en un mercado con baja digitalización, atacó problemas cotidianos como las filas y el uso de efectivo, <b>amplió rápidamente los usos de su tecnología y consiguió capital para crecer.</b></p><p>La prueba para la siguiente etapa será distinta. Ya no se trata únicamente de sumar carros particulares, sino de demostrar que el modelo puede funcionar a escala en flotas, integrar adquisiciones y replicarse en mercados donde el pago electrónico de peajes lleva más años de desarrollo.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/23HQQMGOMJBGXI6QR42M7N5ZBA.jpg?auth=237ff3c03a2c610907d4d67741da1f242131adc3f61aaafc422531a19a72a384&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[La motivación para crear Gopass fue buscar soluciones para la movilidad, la cual es compleja porque está llena de trámites, papeleos, mucho efectivo y filas, asegura su CEO Jorge Miguel Camacho, CEO.]]></media:description></media:content></item><item><title><![CDATA[La nueva Rappi: seguridad social para repartidores, rentabilidad y expansión de nuevas líneas de negocio]]></title><link>https://www.semana.com/economia/empresas/articulo/la-nueva-rappi-seguridad-social-para-repartidores-rentabilidad-y-expansion-de-nuevas-lineas-de-negocio/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/la-nueva-rappi-seguridad-social-para-repartidores-rentabilidad-y-expansion-de-nuevas-lineas-de-negocio/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>La relación laboral entre las plataformas digitales y los domiciliarios está entrando en una nueva etapa en Colombia. <a href="https://www.semana.com/economia/empresas/articulo/reforma-laboral-un-ano-despues-mas-costos-mas-tramites-y-reglas-aun-incompletas/202600/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/empresas/articulo/reforma-laboral-un-ano-despues-mas-costos-mas-tramites-y-reglas-aun-incompletas/202600/">La reforma laboral</a> estableció reglas específicas para quienes trabajan haciendo repartos por medio de aplicaciones,<b> con nuevas obligaciones de seguridad social para firmas como Rappi.</b></p><p>Para Matías Laks, <i>country manager</i> de Rappi en Colombia, el cambio tendrá un costo importante para el negocio, pero la empresa respalda el principio de una mayor protección social para los rappitenderos. “Esta reforma laboral que aprobó el Congreso <b>va a ser muy costosa para cualquier aplicativo, pero está bien, es lo correcto</b>”, dijo. Según él, el nuevo esquema permite que los domiciliarios mantengan la independencia, una característica que Rappi defendió durante las discusiones de la reforma. </p><p>La Ley 2466 de 2025 (reforma laboral) establece que los trabajadores de plataformas de reparto pueden ser dependientes y subordinados o independientes y autónomos. Para estos últimos, la plataforma deberá asumir el 60 por ciento de los aportes a salud y pensión, mientras el trabajador pagará el 40 por ciento restante.<a href="https://www.semana.com/economia/macroeconomia/articulo/colombia-registra-un-accidente-laboral-cada-59-segundos/202656/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/macroeconomia/articulo/colombia-registra-un-accidente-laboral-cada-59-segundos/202656/"> El cubrimiento de riesgos laborales</a> quedará a cargo de la empresa. </p><p>Además, el ingreso base de cotización será equivalente al 40 por ciento de los ingresos que el repartidor reciba por la plataforma. Así, quien obtenga ingresos por un millón de pesos no tendrá que cotizar sobre un salario mínimo completo, sino sobre <b>una base de 400.000 pesos</b>, siguiendo las reglas establecidas para este tipo de trabajadores. </p><p>Ese punto es central. Laks sostiene que el modelo tradicional de seguridad social no se ajustaba bien a personas que pueden conectarse pocas horas a una plataforma y completar sus ingresos con otras actividades.</p><p>“La modernidad trae otro tipo de empleo: yo soy independiente, brindo servicios para un lado y para otro, y de pronto no completo las horas de un salario mínimo en un determinado lugar”, explicó. A su juicio, una cotización proporcional a los ingresos puede facilitar el acceso a la seguridad social de trabajadores que hoy permanecen por fuera del sistema. </p><p>Sin embargo, el aterrizaje operativo todavía requiere ajustes. La propia ley establece que las disposiciones específicas para plataformas de reparto empezarán a regir <b>12 meses después de que el Gobierno cumpla las obligaciones de reglamentación</b> e implementación previstas en esos artículos. </p><p>Laks advierte, por ejemplo, que sistemas como la Planilla Integrada de Liquidación de Aportes, Pila, deben estar preparados para recibir este tipo de cotizaciones. “Hay un mundo de cosas que tienen que hacerse desde el punto de vista administrativo”, afirmó. </p><h2>Un ejército de rappitenderos </h2><p>Según Rappi, la aplicación tiene algo más de 70.000 rappitenderos activos en Colombia, entendidos como aquellos que tomaron al menos una orden durante las últimas cuatro semanas. <b>El universo de inscritos ronda los 300.000.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/FKKNMOI2G5CWNOBG5ASSCTFM6U.jpg?auth=87d15981ed283f509725af837eeaf8c2d97773ea9d36bd1a658bc48a650bc7c7&smart=true&width=1600&height=1066" alt="Rappi señala que en su aplicación tiene algo más de 70.000 rappitenderos activos en Colombia." height="1066" width="1600"/><p>La mayoría, según Laks, se conecta menos de 20 horas semanales. Y existe una alta rotación: cerca del 80 por ciento entra y sale con frecuencia, mientras alrededor del 20 por ciento presenta un comportamiento más estable. El 40 por ciento de los domiciliarios son venezolanos y entre 18 y 20 por ciento son mujeres. </p><p>Rappi también rechaza la idea de que todos los domiciliarios obtengan bajos ingresos. Laks sostiene que, al dividir los ingresos totales entre las horas de conexión, el resultado supera dos veces el equivalente del salario mínimo por hora, sin incluir propinas. </p><p>La discusión laboral llega en un momento distinto para Rappi. La firma, que durante años fue cuestionada por el volumen de recursos que consumía mientras buscaba crecer, ya registra un ebitda positivo al consolidar los nueve países en los que opera. En Colombia, <b>registró ingresos por 767.000 millones</b> de pesos en 2025, 10 por ciento más que un año atrás, y utilidades de 210.176 millones.</p><p>Laks explica que la empresa reinvierte los recursos que genera y aprovecha para plantear otra discusión: la manera como los colombianos valoran a las compañías nacidas en el país que han logrado expandirse internacionalmente. “Debiéramos estar mucho más orgullosos de todas las empresas colombianas que conquistan mercados en el exterior”, afirmó. Y agregó que Rappi es la única empresa de domicilios de origen latinoamericano que sigue siendo controlada desde la región.</p><p>Aclara que eso no significa que Rappi deba quedar exenta de críticas. Reconoce errores en el servicio y admite que un usuario tiene razones para reclamar cuando un pedido no llega o cuando la compañía responde mal frente a un problema. Su argumento apunta a <b>separar esas fallas del balance empresarial</b> de una compañía colombiana que logró competir regionalmente. En la misma lista ubica empresas como Postobón, <a href="https://www.semana.com/economia/capsulas/articulo/grupo-nutresa-anuncia-alianza-entre-dracula-y-westcol-para-halloween/202603/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/capsulas/articulo/grupo-nutresa-anuncia-alianza-entre-dracula-y-westcol-para-halloween/202603/">Grupo Nutresa</a>, Colombina, Sura, Argos, Bancolombia y Davivienda.</p><p>Destaca el ecosistema generado por antiguos empleados de Rappi que después crearon sus propias compañías.</p><p>Colombia continúa siendo su mercado más grande y <b>registra más de 1,6 millones de usuarios activos en las últimas cuatro semanas</b>. Además, la empresa viene creciendo entre 20 y 30 por ciento anual. El objetivo es mantener un avance por encima del 30 por ciento. </p><p>Con 4.000 empleados directos, Rappi es hoy mucho más que una empresa que entrega comida a domicilio. Aunque la vertical de restaurantes sigue siendo la más relevante (genera la mitad de los ingresos), Lask señala que la línea de Turbo, con entregas en diez minutos, es una de las que más crece. Allí, tienen restaurantes y supermercados, que manejan con tiendas ocultas operadas por ellos mismos. “Estamos en 16 ciudades y tenemos más de 60 tiendas. Cada una tiene una cobertura de unos tres kilómetros alrededor. Logramos los diez minutos porque tenemos una <a href="https://www.semana.com/turismo/articulo/afirman-que-la-inteligencia-artificial-facilitara-los-viajes-personalizados/202625/" target="_blank" rel="noreferrer" title="https://www.semana.com/turismo/articulo/afirman-que-la-inteligencia-artificial-facilitara-los-viajes-personalizados/202625/">tecnología predictiva</a> de las órdenes y hacemos el <i>picking</i> de los productos en menos de dos minutos”, explica el directivo.</p><p>También destaca la vertical de viajes Rappi Travel; la de seguros, en donde vende Soat y pólizas para vehículos; RappiFavor y Antojos, en donde <b>tienen más de 50.000 comercios y más de 100 millones de productos.</b> A esto se suma su entidad financiera Rappipay, que tienen en un <i>joint venture</i> con Davivienda, y los botones de donación, que ofrece junto con el Banco de Alimentos y que han sido muy usados tras el terremoto.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KEY5UKWBTJBS5F3BWAEJM3WEIA.jpg?auth=995024d43e53cfb0ac4c11596038477d67188a88a939e2b179e340cd13943130&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Una mirada menos crítica hacia las empresas colombianas que han logrado expandirse por América Latina, reclama Matías Laks, country manager de Rappi en Colombia.]]></media:description></media:content></item><item><title><![CDATA[La IA cambia a Platzi por dentro y por fuera: nueva oferta empresarial, menos empleados y expansión global]]></title><link>https://www.semana.com/economia/empresas/articulo/la-ia-cambia-a-platzi-por-dentro-y-por-fuera-nueva-oferta-empresarial-menos-empleados-y-expansion-global/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/la-ia-cambia-a-platzi-por-dentro-y-por-fuera-nueva-oferta-empresarial-menos-empleados-y-expansion-global/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Platzi está modificando su modelo de negocio. Después de más de una década concentrada principalmente en cursos de tecnología, programación, marketing, liderazgo y otras habilidades dirigidos a personas y empresas, <b>la compañía colombiana está</b> <b>apostando por un producto corporativo basado en inteligencia artificial</b>, que busca convertir el conocimiento interno de cada organización en programas de formación para sus empleados.</p><p>Y ya tenía experiencia. Según uno de sus cofundadores y actual CEO, Freddy Vega, unas <b>4.000 compañías utilizan o han utilizado Platzi para capacitar a sus trabajadores.</b> La diferencia es que ahora la empresa quiere dejar de ofrecer solo cursos generales y producir automáticamente contenidos diseñados para las operaciones particulares de cada cliente. </p><p>Para hacerlo, Platzi desarrolló durante los últimos tres semestres un sistema propio de <a href="https://www.semana.com/tecnologia/articulo/tecnicamente-hablando-es-o-no-posible-detener-la-inteligencia-artificial/202610/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/tecnicamente-hablando-es-o-no-posible-detener-la-inteligencia-artificial/202610/">inteligencia artificial</a> que, de acuerdo con Vega, fue entrenado con información procedente del comportamiento y aprendizaje de los <b>siete millones de estudiantes</b> que han pasado por la plataforma, a través de 6.000 cursos. </p><p>La idea puede aplicarse, por ejemplo, a los manuales operativos de una empresa, sus procesos de ventas, sus protocolos de servicio al cliente o sus procedimientos internos. El sistema toma ese conocimiento y genera simulaciones, entrenamientos, evaluaciones y exámenes específicamente relacionados con la operación de esa organización. Según Vega, el proceso puede hacerse en menos de una hora. </p><p>Platzi está probando esta oferta con firmas de distintos sectores. Vega menciona entre sus clientes a Alianza Team y Rappi en Colombia, pruebas con iFood en Brasil y trabajos con farmacéuticas, químicas, de alimentos y bancos, además de algunos gobiernos. El objetivo es que esta herramienta pueda utilizarse en operaciones empresariales complejas, incluso en actividades alejadas de los campos tecnológicos. </p><p>Ese cambio amplía considerablemente el mercado potencial de la compañía. Vega pone como ejemplos capacitaciones relacionadas con procesos de ingeniería química de alimentos y sistemas industriales de filtración de agua. <b>El contenido especializado lo aporta cada empresa y Platzi lo transforma en material educativo.</b> Cuando existen vacíos en áreas como liderazgo, la plataforma puede combinar la información interna de la organización con sus propios contenidos generales. </p><h2>El salto hacia un producto global</h2><p>El negocio corporativo también forma parte de una estrategia para reducir la dependencia de América Latina. Hasta ahora, explica Vega, el idioma de los contenidos había llevado a Platzi a concentrarse en la región. El nuevo producto, en cambio, puede adaptarse a distintos idiomas y culturas. “Nos funciona en Japón, Estados Unidos, Brasil y en Europa; nos funciona en todas partes”, dice. La expectativa es convertir una tecnología colombiana en un producto global. </p><p>Estados Unidos tendrá un papel importante en esa estrategia. Vega se encuentra en San Francisco y afirma que, aunque Bogotá, Medellín y Ciudad de México continúan siendo puntos de operación fundamentales para la empresa, la nueva apuesta trasciende esos mercados.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XAZOA7XVDNF6ZOKYN7DFZFXPDE.jpeg?auth=f47adda61b5cb912326ea2e6a60fc2866faf6b99a3b6e5533acc7fb8038586e2&smart=true&width=8727&height=4872" alt="4.000 compañías utilizan o han utilizado Platzi para capacitar a sus trabajadores." height="4872" width="8727"/><p>Platzi tiene, además, una posición financiera diferente a la de muchas startups que todavía dependen de sucesivas rondas de capital para sostener su crecimiento. Vega asegura que la empresa lleva más de año y medio siendo rentable y que actualmente no necesita levantar recursos externos.</p><p><b>La compañía realizó una capitalización de serie B por 60 millones de dólares entre finales de 2022</b> e inicios de 2023, con la participación de Prosus Ventures. Por ahora, el empresario dice que la prioridad no es una nueva ronda ni una salida a bolsa, sino demostrar que el nuevo producto basado en inteligencia artificial puede escalar. </p><h2>De 360 trabajadores a 120</h2><p>La inteligencia artificial no solamente está cambiando lo que Platzi vende. También modificó su propia estructura. La empresa tenía aproximadamente 360 trabajadores en 2022 y actualmente son 120, debido a la IA. Vega explica que Platzi automatizó buena parte de los procesos de ventas, posventa, administración, investigación y análisis, y que su equipo sigue compuesto principalmente por ingenieros o desarrolladores capaces de automatizar tareas y trabajar con mayor autonomía. </p><p>El caso de la propia Platzi muestra una de las disyuntivas por las que atraviesan hoy las empresas: la misma tecnología que está generando nuevos productos también permite operar con estructuras más pequeñas.</p><p>Sin embargo, Vega considera que la inteligencia artificial no significa necesariamente la desaparición de profesiones como la programación. Su argumento es que está cambiando rápidamente la manera de realizar el trabajo. En desarrollo de software, por ejemplo, asegura que buena parte de la escritura de código ya puede ser realizada por agentes de inteligencia artificial, mientras los trabajadores se concentran en sistemas y arquitecturas más complejos. Algo similar, dice, ocurre en <a href="https://www.semana.com/economia/macroeconomia/articulo/asobancaria-rechaza-aumento-del-ica-en-bogota-y-acopi-critica-sobretasa-al-predial-en-propuesta-de-reforma-tributaria-distrital/202623/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/macroeconomia/articulo/asobancaria-rechaza-aumento-del-ica-en-bogota-y-acopi-critica-sobretasa-al-predial-en-propuesta-de-reforma-tributaria-distrital/202623/">actividades financieras</a>, de asistencia ejecutiva y de análisis de información. </p><p>Ese cambio tecnológico también está detrás de la nueva estrategia comercial. Platzi <b>ha construido su negocio alrededor de personas que pagan por aprender en internet</b>, pero Vega reconoce que ese mercado tiene límites.</p><p>La empresa cree que la formación financiada por los empleadores puede ampliar su alcance porque elimina una de las barreras tradicionales: convencer a una persona de pagar directamente por educación digital no acreditada. Cuando el curso proviene de su empresa y está relacionado con su trabajo, dice, la decisión es distinta. </p><p>Las expectativas son altas. Vega calcula que Platzi Learn, como denomina al nuevo producto, podría permitirle llegar a una profundidad de mercado entre 10 y 20 veces superior a la actual. Esa proyección dependerá de su capacidad para convertir las pruebas empresariales en contratos y llevar la herramienta a nuevos países. </p><p>Después de más de una década vendiendo cursos por internet, Platzi intenta convertirse también en una herramienta para capturar, organizar y enseñar el conocimiento que existe dentro de las empresas. La siguiente etapa dependerá de cuántas organizaciones estén dispuestas a convertir sus propios procesos en programas de <a href="https://www.semana.com/tecnologia/articulo/matematicos-de-elite-lanzan-preocupante-alerta-sobre-la-ia-podria-representar-una-amenaza-y-advierten-que-hay-un-riesgo-real/202647/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/matematicos-de-elite-lanzan-preocupante-alerta-sobre-la-ia-podria-representar-una-amenaza-y-advierten-que-hay-un-riesgo-real/202647/">entrenamiento automatizados.</a></p><p>Según Vega, uno de los principales límites para crecer en la región es que solo entre el <b>10 y el 15 por ciento de la población estaría en condiciones de aprovechar la educación en tecnología.</b> Lo atribuye a factores como los bajos niveles de comprensión lectora. Es un reto que, a su juicio, requiere acciones tanto del sector público como del privado.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AGVJMXU2LFHUJNTZROPYIXXCPI.jpg?auth=862f5336622e557bff759638c2c2cfddb2f7b149a306096e1b50a258863d8098&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Platzi lleva más de año y medio siendo rentable y pasó de 360 trabajadores en 2022 a 120 hoy, debido a la IA, explica Freddy Vega, su cofundador y CEO.]]></media:description></media:content></item><item><title><![CDATA[La empresa colombiana que sobrevivió a Google Maps y terminó convirtiéndose en su aliada]]></title><link>https://www.semana.com/economia/empresas/articulo/la-empresa-colombiana-que-sobrevivio-a-google-maps-y-termino-convirtiendose-en-su-aliada/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/la-empresa-colombiana-que-sobrevivio-a-google-maps-y-termino-convirtiendose-en-su-aliada/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Una gran idea, un divorcio y un cambio de ciudad fueron la semilla de Servinformación, firma colombiana pionera en el desarrollo de mapas digitales. <b>Fue de las primeras en usar el concepto de georreferenciación</b> y su trabajo inicial consistió en digitalizar el directorio telefónico de Bogotá para crear un programa en el que el usuario marcaba un número de teléfono y el software le mostraba en dónde estaba ubicado el inmueble al que pertenecía.</p><p>Esos son algunos de los hitos que menciona la ingeniera industrial Mónica Patiño, cofundadora de Servinformación. Tras una exitosa carrera en su natal Cali, decidió seguirle la idea a su hermana, Ximena, una psicóloga, quien hace 27 años, cuando <a href="https://www.semana.com/tecnologia/articulo/iphone-duo-o-iphone-18-pro-max-cual-de-los-dos-nuevos-celulares-de-apple-deberia-elegir/202651/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/iphone-duo-o-iphone-18-pro-max-cual-de-los-dos-nuevos-celulares-de-apple-deberia-elegir/202651/">aún no había smartphones</a>, estaba convencida de que “algún día todo el mundo va a tener un mapa en el bolsillo”. “Yo quedé muy impactada con su convencimiento y con su energía. Y a mí, Dios no me dio nada de orientación, pero me puso a trabajar con mapas”, dice Mónica, y agrega que la propuesta de su hermana llegó justamente cuando se estaba separando. No lo pensó mucho. Empacó sus maletas y se vino a vivir a Bogotá, con sus hijos y con la meta de emprender. <b>Ese impulso terminó con la conformación de un grupo empresarial compuesto por 17 compañías. </b></p><p>Para concretar la idea de los mapas digitales, las Patiño buscaron a alguien que pudiera organizar la información y ponerle coordenadas. Ese fue Carlos Parada, quien desarrolló el software y desde entonces se asoció con ellas.</p><p>Su primer objetivo fue vender mapas a empresas de consumo masivo, que los usaban para organizar zonas comerciales y entender dónde estaban sus clientes. También apuntaron a las compañías de telecomunicaciones, que necesitaban esa información para tender redes, ubicar antenas y definir inversiones.</p><p>Poco a poco se fueron posicionando como la empresa que hacía mapas digitales de Colombia, pero en 2005 les llegó un gran desafío: el nacimiento de Google Maps. “Eso hizo que un concepto muy técnico, que casi nadie entendía, se volviera digerible. Ayudó muchísimo a madurar el mercado, pero para nosotros era un reto, dado que ofrecía gratis algo por lo que nosotros cobrábamos”, comenta Mónica.</p><p>La ventaja es que esos primeros mapas del gigante tecnológico no eran tan precisos como los que había creado Servinformación y, en ese momento, Colombia todavía no era una prioridad para Google. <b>La decisión de la empresa nacional fue contactarlos para explicarles su negocio e incluso vendérselo. </b></p><p>“Por fortuna no pasó”, dice la ejecutiva, quien actualmente es la vicepresidenta de la Junta Directiva de Fedesoft.</p><p>Cuando finalmente pudo hablar<a href="https://www.semana.com/tecnologia/articulo/google-lanzo-oficialmente-la-aplicacion-de-gemini-para-windows-que-puede-hacer-y-como-descargarla/202621/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/google-lanzo-oficialmente-la-aplicacion-de-gemini-para-windows-que-puede-hacer-y-como-descargarla/202621/"> con los ejecutivos de Google</a>, Mónica y su equipo pasaron tres años explicándoles a los ingenieros de la multinacional cómo funcionaban sus mapas y cómo podían trabajar juntos. Hasta que en 2011 recibieron un correo en el que les anunciaban una visita.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/S6BF4KW5HRAZ5FNH7C3A7NDWGU.jpg?auth=825352061bb04d0f0822dcccd9a4ab8d77f2282593ec9f7eee21b0c627c70c67&smart=true&width=5477&height=3651" alt="Servinformación comenzó hace 27 años desarrollando mapas digitales y hoy opera en 13 países." height="3651" width="5477"/><p>La persona que vino en nombre de Google les informó que estaba buscando partners en Latinoamérica y les propuso ser uno de ellos. “Me pidieron un modelo de negocio, lo preparé y viajé a Mountain View al primer evento de partners. Éramos 27 personas en un salón de clase; éramos los partners del mundo. Hoy uno va a un Google Cloud Next y hay decenas de miles de personas. En ese momento apenas estaba empezando ese desarrollo”, narra Mónica. Cuenta que la oportunidad con Google surgió porque, en ese momento, sus mapas eran todavía muy genéricos, mientras que Servinformación ya ofrecía soluciones personalizadas por zonas y una georreferenciación más precisa. </p><p>A partir de esa alianza hace 17 años, la tecnológica colombiana empezó a consolidar su negocio. Hoy sigue siendo uno de los partners destacados de Google. “Ellos son el complemento ideal porque tienen una información espectacular, pero nosotros la ‘platanizamos’ al contexto y a las necesidades de los clientes”, añade Mónica.</p><p>Posteriormente, la empresa amplió la relación con el gigante tecnológico hacia los servicios de Google Cloud Platform, en la que también se convirtió en partner. “Hemos sido reconocidos como partner por ese tema y por las soluciones de localización, entre otras categorías. Y algo que a veces sorprende es que muchas de esas soluciones se desarrollan en Colombia”, afirma con orgullo. </p><p>Hace unos cinco o seis años, en Servinformación sintieron que ya era hora de moverse a otros países. <b>Empezaron por Perú y Ecuador, y ahora ya se encuentran en 13 mercados.</b></p><p>Actualmente, emplean a 500 personas y Mónica dice que su diferencial ha estado en buscar que la mayoría se certifique tanto en localización como en inteligencia artificial y analítica de datos.</p><p>Para desarrollar este último aspecto, crearon el Centro de Excelencia <a href="https://www.semana.com/tecnologia/articulo/elon-musk-vuelve-a-alertar-sobre-la-inteligencia-artificial-comparo-uno-de-sus-riesgos-con-algo-mucho-mas-peligroso/202626/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/elon-musk-vuelve-a-alertar-sobre-la-inteligencia-artificial-comparo-uno-de-sus-riesgos-con-algo-mucho-mas-peligroso/202626/">de Inteligencia Artificial</a>, donde la propia compañía fue el “paciente cero”. Allí diseñaron una metodología para medir los KPI, es decir, los indicadores clave de desempeño de los proyectos de IA. Con ese esquema implementaron 22 procesos, que solo este año les han generado ahorros de hasta 4.500 millones de pesos.</p><p>Según Mónica, más que el ahorro, la ventaja ha sido que su equipo ya no tiene que dedicarse a tareas repetitivas y puede usar su capacidad en cosas de mayor valor. “<b>Yo no veo a la IA como una herramienta para reducir personal, sino para que los que están vendan el doble</b>”. </p><p>De hecho, esta empresaria, que logró que Servinformación alcanzara punto de equilibrio tras los primeros ocho años de operación, está convencida de que la inteligencia artificial le brinda a Colombia una oportunidad enorme para ser más productiva. </p><p>“Esa tranquilidad de ser rentables, más nuestra apuesta constante por la tecnología, nos <b>permite seguir invirtiendo en nuevos países y tener gente mejor preparada</b>”.</p><p>El año pasado, Servinformación <b>vendió 97.400 millones</b> de pesos. En 2026, la meta es crecer 40 por ciento, impulsado por sus negocios fuera del país y de la mano de una emprendedora que no se ubica fácil, pero que, apoyada en la tecnología, resultó ser una excelente creadora y vendedora de mapas.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MMII67XRNNBMLLGS5KEIEGRNTI.jpg?auth=838ef67c12325edcb01af98f866ba864742411de266efe98f2ae41a3196ebc16&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[La meta de Servinformación a la vuelta de tres a cinco años es lograr que el 70 por ciento de sus ingresos provenga del exterior y que el negocio local crezca por encima del 10 por ciento anual, explica su presidenta, Mónica Patiño.]]></media:description></media:content></item><item><title><![CDATA[Crédito en menos de un minuto: así crece esta empresa que ya les presta a casi 4 millones de colombianos]]></title><link>https://www.semana.com/economia/empresas/articulo/credito-en-menos-de-un-minuto-asi-crece-esta-empresa-que-ya-les-presta-a-casi-4-millones-de-colombianos/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/credito-en-menos-de-un-minuto-asi-crece-esta-empresa-que-ya-les-presta-a-casi-4-millones-de-colombianos/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>La famosa ‘familia Miranda’, que ocupa muchos de los espacios comerciales del país, no solo va a mirar por gusto, sino porque no le alcanza para comprar y tampoco tiene quien le preste. Esa necesidad fue entendida por varios almacenes de ropa, calzado o electrodomésticos, que <b>crearon sus propios esquemas de financiación</b>, con los cuales un pantalón de 200.000 pesos se puede pagar en varias cuotas.</p><p>Esa realidad del mercado colombiano fue correctamente leída por el caleño Santiago Suárez, quien se educó en Estados Unidos y tuvo allí sus primeros trabajos, aunque desde entonces tenía claro que al regresar al país quería emprender. “No sabía en qué, pero había trabajado en finanzas y tecnología. Nos dimos cuenta de que <b>quienes ofrecían crédito no bancario lo hacían de forma manual</b> y ahí vimos una gran oportunidad de usar tecnología”, recuerda.</p><p>También lo inspiraba la idea de hacer finanzas y banca de una manera diferente. “Quería ser parte del equipo que crea este nuevo futuro; <a href="https://www.semana.com/foros-semana/articulo/el-cerebro-de-google-detras-de-la-revolucion-de-la-ia-en-las-aulas-latinoamericanas-llega-a-la-13-cumbre-lideres-por-la-educacion-de-semana/202623/" target="_blank" rel="noreferrer" title="https://www.semana.com/foros-semana/articulo/el-cerebro-de-google-detras-de-la-revolucion-de-la-ia-en-las-aulas-latinoamericanas-llega-a-la-13-cumbre-lideres-por-la-educacion-de-semana/202623/">ser parte de esa revolución</a>”. </p><p>Así nació hace ocho años Adelante Soluciones Financieras, una empresa cuya marca Addi ya está en 100.000 puntos de venta físicos en el país. Su oferta inicial se concentró en crédito de consumo para los compradores de cadenas conocidas de moda, calzado y hogar. Es decir, llegaron para financiar a la desatendida familia Miranda.</p><p>Rápidamente fueron aumentando su oferta, a tal punto que en la actualidad Addi les presta a <b>casi 4 millones de colombianos</b> y está disponible en más de 1.050 municipios, que equivalen al 95 por ciento del país. No solo financian a quienes no tienen tarjeta de crédito (el 47 por ciento de sus clientes), sino también a quienes sí están bancarizados, pero buscan una opción ágil y sencilla de crédito. La promesa de Addi es que, una vez se hace la solicitud, la aprobación toma menos de un minuto.</p><p>De otra manera, no podrían haber llegado a las cadenas de supermercados, en donde su crédito es ofrecido en las cajas registradoras. En ese momento en que la persona termina de pasar sus productos y se totaliza el valor de la compra, rápidamente le dicen si le pueden prestar.</p><p>Ese ingreso al mundo de los supermercados (están el Éxito, Alkosto y Jumbo) fue la clave para su vertiginoso crecimiento de 2025, cuando <b>sus ventas subieron 108 por ciento y llegaron a 656.300 millones de pesos. </b></p><p>Además de grandes superficies, Addi también entró a financiar a los clientes de las empresas de telecomunicaciones, motocicletas, aerolíneas y de servicios, como tratamientos odontológicos.</p><p>La ampliación de las opciones de crédito modificó el perfil de sus usuarios. En los primeros años predominaban las mujeres (dado que era un tema de moda y hogar), pero hoy la distribución entre hombres y mujeres es similar. La compañía maneja créditos promedio de 1,2 millones de pesos y sus clientes compran unas cuatro veces al año. Su financiación máxima es de 6 millones de pesos.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KCYLKBAD55FKVB7N4QBTNTJKMQ.jpeg?auth=8773639c8ae93d52b6bb40ed66b9b46534e7be306b86288117d38c74ac6de259&smart=true&width=1600&height=1100" alt="En la actualidad Addi les presta a casi 4 millones de colombianos y está disponible en más de 1.050 municipios." height="1100" width="1600"/><h2>Baja morosidad </h2><p>Pese a que el crédito de consumo es usualmente uno de los que registran mayores niveles de morosidad en el país, en el caso de Addi aseguran tener una cartera sana, con retrasos en los pagos muy por debajo del 5 por ciento del total. Esto con todo y que les prestan a personas que el sistema financiero tradicional considera riesgosas.</p><p>Suárez atribuye esta situación al hecho de que <b>llevan siete años construyendo un modelo de crédito y de originación con múltiples palancas para poder asumir bien el riesgo.</b> “Partimos de la base de que este es un negocio donde tenemos que asumir riesgos. Cada vez que aprobamos una transacción, usamos más de cinco modelos, todos propiedad nuestra. También utilizamos herramientas de inteligencia artificial para hacer monitoreo y cobranza”, precisa.</p><p>Sus sistemas de medición de riesgo les permiten aprobar créditos a más de la mitad de quienes los solicitan. En Addi consideran, además, que su producto sirve para que quienes <a href="https://www.semana.com/educacion/articulo/regresa-credito-del-icetex-que-habia-sido-retirado-para-estudiantes-universitarios/202648/" target="_blank" rel="noreferrer" title="https://www.semana.com/educacion/articulo/regresa-credito-del-icetex-que-habia-sido-retirado-para-estudiantes-universitarios/202648/">obtienen su primer crédito comiencen a construir su historial financiero.</a></p><p>El comercio electrónico es otra pieza de la estrategia. Addi opera en páginas web y redes sociales y cuenta, además, con un marketplace propio. La empresa calcula que su participación como medio de pago dentro de las ventas en línea de los comercios donde está integrada ronda el 20 por ciento. Su aplicación registra alrededor de 2,2 millones de usuarios activos mensuales.</p><p><b>“Nuestro marketplace es el de mayor crecimiento en Colombia</b> y el único donde, sin importar el cliente, ofrecemos siempre cuotas sin interés en todas las referencias”, agrega el CEO de Addi.</p><h2>Con más capital</h2><p>El crecimiento de esta fintech ha requerido capital. Precisamente, este año cerró una ronda de Serie D por 85 millones de dólares, liderada por Citius (firma global de inversión enfocada en compañías de tecnología) y el banco BTG Pactual. “Esta fue la primera inversión de BTG Pactual, fuera de Brasil, en una compañía en etapa de expansión”, aclara Suárez.</p><p>La empresa cuenta con algo más de 800 colaboradores y, pese a su constante expansión, por ahora no tiene como prioridad salir a otros países. El foco continúa en Colombia, donde considera que aún hay espacio para sumar categorías, clientes y establecimientos. Tampoco está contemplando, de momento, lanzar una tarjeta de crédito; <b>su estrategia sigue concentrada en financiación de consumo de bajo monto.</b></p><p>“Democratizar el crédito es importante en Colombia, pero hay que hacerlo a la medida que lo necesita el país. Le pediría al <a href="https://www.semana.com/gente/articulo/maria-fernanda-cabal-hablo-sobre-abelardo-de-la-espriella-y-revelo-como-es-su-realidad-desde-que-es-presidente-ya-no-son-una-ruleta/202630/" target="_blank" rel="noreferrer" title="https://www.semana.com/gente/articulo/maria-fernanda-cabal-hablo-sobre-abelardo-de-la-espriella-y-revelo-como-es-su-realidad-desde-que-es-presidente-ya-no-son-una-ruleta/202630/">nuevo Gobierno</a> que apoye un marco regulatorio que promueva el crédito responsable y la inclusión financiera real. En la medida en que las pymes se reactiven y los consumidores tengan acceso a financiamiento formal, l<b>legamos a la economía circular que nos saca adelante”</b>, concluye el empresario.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TM4BOZON3FGRHL4WINVTS226XI.jpg?auth=ce866e8ca0a0821774c33bf06155e6b6327506f1ba21a5dae0f720b663bfafa7&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Santiago Suárez CEO y cofundador de Addi. La empresa sostiene que las ventas de sus comercios aliados aumentan en promedio un 20 por ciento después de incorporar Addi como medio de pago.]]></media:description></media:content></item><item><title><![CDATA[ETB sorprende en bolsa mientras avanza en su transformación hacia una empresa tecnológica]]></title><link>https://www.semana.com/economia/empresas/articulo/etb-sorprende-en-bolsa-mientras-avanza-en-su-transformacion-hacia-una-empresa-tecnologica/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/etb-sorprende-en-bolsa-mientras-avanza-en-su-transformacion-hacia-una-empresa-tecnologica/202600/</guid><dc:creator><![CDATA[Carlos Enrique Rodríguez Pérez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>La acción de la Empresa de Telecomunicaciones de Bogotá (ETB) ha sido una de las más dinámicas a lo largo del año. Según un informe de Bancolombia, en agosto, <b>ETB tuvo el mejor desempeño al compararse mes a mes, con un crecimiento del 29,1 por ciento</b>, superando a la preferencial del Grupo Argos, que registró 24,2 por ciento; mientras que, a lo largo del año, la acción de la ETB ha tenido una valorización superior al 95 por ciento.</p><p>Aunque muchos analistas no siguen esta acción, su comportamiento ha sorprendido y ha coincidido con una transformación estratégica de la compañía. </p><p>Un análisis de KPMG advierte que <a href="https://www.semana.com/economia/empresas/articulo/menos-regulacion-mas-vigilancia-el-nuevo-dilema-de-las-telecomunicaciones-en-colombia/202600/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/empresas/articulo/menos-regulacion-mas-vigilancia-el-nuevo-dilema-de-las-telecomunicaciones-en-colombia/202600/">las empresas de telecomunicaciones enfrentan una presión creciente por la reducción de márgenes</a>, una mayor competencia, cambios en las expectativas de los clientes y mayores necesidades de inversión. Ante este escenario, muchas de las principales compañías del sector buscan reposicionarse con más innovación, una mayor atención a la experiencia del cliente y procesos continuos de transformación digital.</p><p>Ese camino lo empezó a recorrer la ETB. La firma ha venido fortaleciendo su operación y negocio tradicional con despliegue de fibra óptica y mayores conexiones, pero también abriendo un nuevo foco: combina su infraestructura de conectividad con tecnología, inteligencia artificial y soluciones digitales para responder a las nuevas exigencias de los mercados. Así, construye ecosistemas digitales en sectores como gobierno, educación y salud, integra capacidades y aliados tecnológicos, y utiliza los datos y la inteligencia artificial para <b>entender mejor las necesidades de sus clientes</b> y convierte la tecnología en soluciones útiles para las personas, las organizaciones y las ciudades.</p><p>En ese paso del telco al techco, para Diego Molano, presidente de la ETB, se encuentran varios retos. Uno de los más importantes es el de la cultura. “La gente del mundo telco está acostumbrada a la infraestructura, a los cables. Y a mirar para adentro y su negocio únicamente. El mundo de las aplicaciones, el mundo techco, es de una cultura de mucha innovación, pero, sobre todo, de estar metido en el rancho de los clientes. Por eso, nosotros tenemos dos compañías diferentes: una que hace la telco y una que hace la techco. Porque las culturas tienen que ser también diferentes”, explica.</p><p>Insiste en que quien está en el negocio de tecnología, en las aplicaciones, tiene que entender del negocio del cliente. El que está en telecomunicaciones va y conecta el internet. Pero, ¿cómo lo usa? “Aquí nosotros tenemos que meternos dentro de la operación del cliente y ayudarle a hacer su transformación e implementarla. Entonces, el primer punto grande es ese: es un tema cultural diferente”, explica Molano.</p><p>Y el otro gran desafío está relacionado con los modelos de negocio. “El mundo de las telecomunicaciones es una industria superintensiva en capital, en tener la fibra óptica, los data centers. <b>En el nuevo mundo, lo más importante es el talento.</b> Son estructuras de negocios diferentes: ya no es una estructura intensiva en capital, es una estructura intensiva en talento; pero también en atraer, educar y motivar ese talento. Son cosas totalmente distintas”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SIDU7KYC7FARNI377RKHV4Q55U.jpg?auth=69235df2d5e12cbe89f1ec522482cf8e641f00bc032970248cbdf469bf4f1771&smart=true&width=2309&height=1299" alt="ETB ofrece soluciones digitales en sectores como gobierno, educación y salud." height="1299" width="2309"/><p>Pero, además, la tecnología ha sido soporte para alcanzar mayores eficiencias en la operación interna. “Hemos <a href="https://www.semana.com/salud/articulo/corpus-ai-la-compania-colombiana-que-utiliza-inteligencia-artificial-para-salvar-vidas-hemos-contenido-467-infartos/202610/" target="_blank" rel="noreferrer" title="https://www.semana.com/salud/articulo/corpus-ai-la-compania-colombiana-que-utiliza-inteligencia-artificial-para-salvar-vidas-hemos-contenido-467-infartos/202610/">optimizado la compañía en el interior utilizando mucha tecnología</a>, mucha inteligencia artificial, lo que nos ha permitido alcanzar eficiencias. Hemos cambiado totalmente las herramientas de tecnología que usábamos, que eran viejas”.</p><p>Y los resultados financieros empiezan a reflejar el cambio. Entre enero y junio de 2026, los ingresos totales de la compañía llegaron a 838.481 millones de pesos, un crecimiento de 8,9 por ciento frente al mismo periodo de 2025. <b>Y la utilidad neta de la empresa alcanzó los 26.126 millones de pesos</b>, es decir, una recuperación de 91.857 millones de pesos tras el ejercicio previo. </p><h2>Soluciones digitales </h2><p>Según Molano, la empresa ahora ofrece soluciones digitales. “Montamos una plataforma educativa con inteligencia artificial para la Registraduría, con la que capacitamos a todos los jurados y a los testigos de votación. Ahora estamos desarrollando la plataforma para las escuelas públicas colombianas. A la Secretaría de Salud le generamos el sistema para enrutar las ambulancias en Bogotá. Estamos diseñando la red IoT (internet de las cosas) de Bogotá para que, con inteligencia artificial, podamos mejorar la seguridad de la ciudad”. </p><p>Esta nueva apuesta, según los cálculos de Molano, debe reflejar la cuarta parte (25 por ciento) <b>de los ingresos de la ETB de aquí al año 2030.</b> Hoy, este “nuevo mundo” representa entre el 8 y el 10 por ciento de las ventas.</p><p>¿Se explica el movimiento de la acción con este cambio? “La verdad, tengo que ser honesto y decir: no lo sé. Porque, finalmente, nosotros lo que hacemos es que le comunicamos al mercado que <b>tenemos un plan y que lo estamos ejecutando</b>”, dice Molano.</p><p>Pone como ejemplo la reciente operación financiera que adelantó la compañía: a finales de agosto, la empresa suscribió un contrato de crédito sindicado por cerca de 900.000 millones de pesos con DaviBank, Itaú, Bancolombia y Santander. Según la empresa, corresponde a una novación, es decir, a la sustitución de deudas anteriores por una nueva obligación financiera.</p><p>“Los bancos con los que acabamos de negociar la deuda conocen este plan y, gracias a él, hicimos un sindicado en el que, además, la tasa que tenemos es menor a la tasa que teníamos. Los bancos que se metieron a vernos por dentro dijeron: ‘Oiga, estos tipos tienen un buen plan, yo les voy a seguir prestando plata’. Entonces, ellos mandan mensajes al mercado”, añade.</p><p>Sobre el comportamiento de la acción, Molano reconoce que eso los entusiasma, “pero no es suficiente. Para nosotros, el objetivo no es que el valor de la acción de ETB crezca. <b>El objetivo nuestro es que seamos un jugador importante en la transformación digital de Colombia</b>, de las compañías, del sector público y de los ciudadanos. Es el éxito de nuestros clientes. Si nuestros clientes son exitosos en su transformación digital, ETB es exitoso. Y eso es lo que buscamos”.</p><p>Afirma que el objetivo es contribuir a que Colombia rápidamente haga su transformación digital, “que se mejore la productividad con el uso de la tecnología, que las empresas progresen con el uso de la tecnología, que el Gobierno sea más eficiente; que se combata la corrupción con tecnología, que haya más empleo gracias a la tecnología, que<a href="https://www.semana.com/tecnologia/articulo/bill-gates-quiere-evitar-que-la-ia-sea-solo-para-los-mas-ricos-anuncia-millonaria-inversion-para-cerrar-esa-brecha/202642/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/bill-gates-quiere-evitar-que-la-ia-sea-solo-para-los-mas-ricos-anuncia-millonaria-inversion-para-cerrar-esa-brecha/202642/"> haya cierre de las brechas con la tecnología.</a> Y, si contribuimos a que eso pase, estamos seguros de que los estados financieros de ETB van a mejorar, al igual que el valor de la acción”.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DFDPEX76TFA4VANYPWGCUWWIFI.jpg?auth=27864212df43557f3eb328b9f0255ddc4805e38621ab417b9335bd034d9397a9&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[“El mundo de las aplicaciones, el mundo techco, es de una cultura de mucha innovación, pero, sobre todo, de estar metido en el rancho de los clientes”, dice Diego Molano, presidente de la ETB.]]></media:description></media:content></item><item><title><![CDATA[Siigo, el ‘Netflix’ de los contadores, que ya tiene 1,3 millones de clientes]]></title><link>https://www.semana.com/economia/empresas/articulo/siigo-el-netflix-de-los-contadores-que-ya-tiene-13-millones-de-clientes/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/siigo-el-netflix-de-los-contadores-que-ya-tiene-13-millones-de-clientes/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Siigo, la compañía colombiana de software contable y administrativo para pequeñas y medianas empresas, se prepara para una nueva etapa de <a href="https://www.semana.com/economia/capsulas/articulo/she-is-global-forum-reunio-en-washington-a-mujeres-lideres-de-america-latina/202605/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/capsulas/articulo/she-is-global-forum-reunio-en-washington-a-mujeres-lideres-de-america-latina/202605/">crecimiento en América Latina</a>. Después de multiplicar por más de 20 su tamaño durante los últimos ocho años, tiene ahora una meta en el horizonte: p<b>asar de 1,3 millones a 4 millones de clientes</b> y, posteriormente, buscar los 10 millones.</p><p>David Ortiz, CEO de la compañía, asegura que el potencial sigue siendo amplio. Según sus cálculos, en la América Latina hispanohablante existen más de 25 millones de empresarios que aún no utilizan software para administrar sus negocios. Hoy el 90 por ciento de los <b>clientes de Siigo cuenta con diez empleados o menos, aunque también atiende empresas de hasta 200 trabajadores.</b></p><p>La compañía opera en Colombia, México, Ecuador, Perú, Uruguay y Chile. Aunque no descarta entrar a otros mercados, la prioridad en 2026 y 2027 será crecer en esos países. De hecho, más del 50 por ciento de los ingresos provienen de operaciones por fuera de Colombia.</p><p>La expansión ha estado marcada por las adquisiciones: Siigo compró Contífico en Ecuador y, según Ortiz, esa operación ha multiplicado por más de cuatro su tamaño. Luego adquirió compañías en Uruguay y México, y recientemente entró a Chile con la compra de Kame, empresa que, según Ortiz, viene creciendo a tasas superiores al 80 por ciento anual.</p><p>La estrategia responde, en parte, a una dificultad del negocio: el software contable debe adaptarse a las normas tributarias, laborales y regulatorias de cada mercado. “Para entrar a cada país y no comenzar de ceros”, fue necesario adquirir conocimiento local, dice Ortiz, quien lleva 15 años al frente de Siigo, firma que fundó su padre, Ricardo Ortiz, en 1988.</p><p>Al comprar compañías que llevaban entre 20 y 30 años operando, <b>Siigo incorporó equipos con experiencia contable y regulatoria</b> y luego integró su propia tecnología y modelo de crecimiento.</p><h2>De 10.000 a 1,3 millones de clientes</h2><p>La historia de Siigo comenzó hace más de tres décadas con el <a href="https://www.semana.com/economia/capsulas/articulo/operaciones-digitales-de-credito-ganan-peso-en-colombia-con-expansion-de-fintech-leancore/202629/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/capsulas/articulo/operaciones-digitales-de-credito-ganan-peso-en-colombia-con-expansion-de-fintech-leancore/202629/">desarrollo de software contable</a>, cuando la posibilidad de generar e imprimir una factura desde un computador era todavía una novedad para muchas empresas.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/BW25AMAO5FA4ZFJR2EVOBW4NZ4.jpg?auth=8138eb2510837e6376df8ad28a0ea77f9c6b6e39e871a3918be32f3ba940ac09&smart=true&width=5120&height=2880" alt="En la América Latina hispanohablante existen más de 25 millones de empresarios que aún no utilizan software para administrar sus negocios." height="2880" width="5120"/><p>El negocio creció y, cinco años después de su creación, recibió inversión extranjera para financiar su expansión. Luego, la compañía quedó bajo control de ese socio internacional hasta que, hace unos 15 años,<b> fue recomprada y entró en una nueva etapa, marcada por el desarrollo de soluciones en la nube.</b></p><p>Ese cambio redujo una de las principales barreras que enfrentaban las pequeñas empresas para adoptar tecnología. Antes necesitaban comprar servidores y asumir inversiones importantes en infraestructura; con la nube bastaba con contar con computador y conexión a internet.</p><p>Según Ortiz, Siigo pasó de unos 10.000 clientes hace 15 años a los actuales 1,3 millones en América Latina.</p><p>La compañía también acudió nuevamente al capital externo. Hace nueve años recibió inversión de Accel-KKR, fondo de capital privado especializado en tecnología. Recientemente, obtuvo financiación por cerca de 100 millones de dólares, recursos que, de acuerdo con el CEO de Siigo, se destinan tanto al crecimiento del número de clientes como al desarrollo de nuevas soluciones tecnológicas.</p><p><b>El modelo funciona mediante suscripciones mensuales o anuales, tal como plataformas tipo Netflix</b>. Los clientes pueden utilizar herramientas de facturación, contabilidad, nómina y administración desde la nube. A esa oferta se han sumado soluciones de punto de venta y enlaces de pago.</p><p>Siigo también integra su plataforma con empresas financieras. Con autorización de los clientes, algunas fintechs pueden acceder a información que les permita evaluar la <a href="https://www.semana.com/vehiculos/articulo/uber-invierte-en-galgo-y-asi-impulsa-la-financiacion-de-motos-en-america-latina/202651/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/uber-invierte-en-galgo-y-asi-impulsa-la-financiacion-de-motos-en-america-latina/202651/">posibilidad de ofrecer financiación.</a></p><h2>La barrera de la formalización </h2><p>Ortiz estima que los niveles de informalidad empresarial en algunos mercados latinoamericanos se ubican entre 50 y 60 por ciento, lo que limita la adopción de estas herramientas. Considera que llegar a ese nicho es uno de los principales retos de la compañía.</p><p>Añade que la decisión de digitalizarse no siempre es voluntaria. Según él, muchos pequeños empresarios llegan al software después de recibir una sanción, porque un cliente les exige factura electrónica o porque una entidad financiera solicita estados financieros para estudiar un crédito. <b>Siigo trabaja también con una red de unos 140.000 contadores, que los ayudan en su “evangelización digital contable”</b> entre los pequeños empresarios.</p><p>Para Ortiz, muchos negocios no adoptan estas herramientas por falta de recursos, desconocimiento, resistencia al cambio y los costos asociados a la formalización. Cree que una reducción de trámites y esquemas tributarios graduales para firmas pequeñas podría ayudar a aumentar la formalidad.</p><p>El siguiente paso de inversión es <a href="https://www.semana.com/tecnologia/articulo/elon-musk-vuelve-a-alertar-sobre-la-inteligencia-artificial-comparo-uno-de-sus-riesgos-con-algo-mucho-mas-peligroso/202626/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/elon-musk-vuelve-a-alertar-sobre-la-inteligencia-artificial-comparo-uno-de-sus-riesgos-con-algo-mucho-mas-peligroso/202626/">la inteligencia artificial</a>. Siigo está incorporando tales herramientas a procesos contables, administrativos y de nómina para reducir tiempos que estas empresas dedican a tareas operativas, pero también costos y barreras que históricamente enfrentaron firmas de software latinoamericanas para desarrollar productos.</p><p>En muchas microempresas, advierte, una misma persona factura, administra inventarios, registra pagos, cobra y atiende clientes. “<b>Los empresarios más pequeños son los toderos</b>”, señala. La apuesta es que la automatización les permita dedicar más tiempo a vender, buscar clientes o conseguir financiación.</p><p>Siigo tiene más de 4.000 trabajadores en América Latina y buena parte de sus desarrollos se han construido con talento de la región. </p><p>En 2025 <b>facturó 488.428 millones de pesos</b>, 26 por ciento más que en 2024. Ortiz considera que la firma podría volver a multiplicarse por 20 durante la próxima década. La apuesta consiste en ampliar los servicios utilizados por cada cliente, integrar pagos y financiación, y automatizar más procesos, en una región en la que millones de pequeños negocios todavía manejan parte de sus cuentas de forma manual.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WFS4U3ZSHJHZVKH6UQDPROUBAQ.jpg?auth=f859e68a745378b95cf4f74003e872b99839c4c6aa36dff67a08036533700235&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Tras crecer mediante adquisiciones en la región, David Ortiz, CEO de Siigo, señala que ahora la prioridad es profundizar la operación en los seis mercados donde tiene presencia.]]></media:description></media:content></item><item><title><![CDATA[Bold ya procesa cerca de $20 billones al año y ahora quiere profundizar su negocio de crédito]]></title><link>https://www.semana.com/economia/empresas/articulo/bold-ya-procesa-cerca-de-20-billones-al-ano-y-ahora-quiere-profundizar-su-negocio-de-credito/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/bold-ya-procesa-cerca-de-20-billones-al-ano-y-ahora-quiere-profundizar-su-negocio-de-credito/202600/</guid><dc:creator><![CDATA[Carlos Enrique Rodríguez Pérez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>En 2017, cuando hacía parte de PayU, plataforma que él ayudó a montar, José Vélez viajó a Brasil para analizar qué acciones podía desarrollar para hacer crecer esta compañía en ese país. Aunque no halló la forma de dinamizar ese negocio, sí <b>encontró una nueva actividad que podría traer a Colombia.</b></p><p>“Vi que estaban surgiendo nuevas <i>fintechs </i>en Brasil que masificaban la aceptación de pagos, llevándoles datáfonos a las pymes, que estaban subatendidas o no eran atendidas por los bancos en Brasil. Y pensé: ‘<b>Creo que esto se puede hacer en Colombia’. Y me devolví a montarlo</b>”, dice José Vélez, al describir la forma en que nació Bold, empresa que hoy preside.</p><p>Las mipymes en Colombia representan uno de los principales motores de la economía, al constituir más del 95 por ciento del <a href="https://www.semana.com/economia/macroeconomia/articulo/directivos-de-grupo-aval-alertan-sobre-impacto-del-ica-y-piden-ajuste-fiscal-creible/202648/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/macroeconomia/articulo/directivos-de-grupo-aval-alertan-sobre-impacto-del-ica-y-piden-ajuste-fiscal-creible/202648/">tejido empresarial</a> y generar cerca del 80 por ciento del empleo formal en el país.</p><p>A finales de 2018 y en 2019 se dio el proceso de fundación de la nueva empresa y “empezamos a echar código para lanzar nuestros primeros datáfonos al mercado, que hicimos en 2020”, recuerda.</p><p>Pero se encontraron con un hecho transformacional: la pandemia. “Creímos que nos íbamos a quebrar; todo el mundo estaba en sus casas y era difícil pensar quién iba a recibir pagos con tarjeta. Pero hubo un catalizador: <b>la gente tuvo miedo de tocar los billetes y eso aceleró los pagos digitales</b> y terminó impulsando los que se hacen en Colombia con tarjeta, que es en donde arrancamos”, señala Vélez. </p><p>Afirma que, desde que se inició la idea de constituir a Bold, la visión fue desarrollar una plataforma de servicios financieros para las pymes. E hicieron dos líneas de trabajo: una, diseñar los datáfonos y, en paralelo, empezaron a trabajar en la creación de la entidad financiera, un proyecto que tardó tres años. Obtuvieron la licencia de la Superintendencia Financiera y construyeron las tecnologías y los sistemas; contrataron los equipos y, ya hace más o menos dos años, iniciaron operaciones formalmente. “Y desde esa época estamos en el proceso de transformarnos. Siempre vimos los pagos como un medio y no como un fin; eran un medio para construir esta plataforma de servicios financieros más completa”, dice Vélez.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/2O65433KSRFS3M5W3RRZQ254TQ.jpg?auth=ac3b8e73989e93468077e7608662ccd245a4985de4c3bd369cc19bfb0d492cc2&smart=true&width=1000&height=530" alt="Datáfonos de Bold." height="530" width="1000"/><p>Hoy Bold es una empresa de servicios financieros para las pymes, en sectores como el de restaurantes, retail y salud (médicos y odontólogos). Nació como una compañía de datáfonos, que se conecta al celular para recibir pagos, pero evolucionó y ofrece todo un conjunto de soluciones financieras para las pequeñas empresas: desde el datáfono hasta una cuenta digital para recibir pagos, tarjeta débito, tarjeta de crédito, crédito, software. “Es una solución integral para las pymes”, señala Vélez, quien con su paso en la creación de Pagosonline, luego PayU y ahora Bold se considera “un emprendedor serial”. </p><p>Agrega que, en Colombia, tienen una compañía de financiamiento. Gracias a ello, dice, pueden ofrecer las cuentas digitales a los clientes, estar conectados al sistema de pagos del Banco de la República, tarjetas débito y tarjeta de crédito. “Tenemos una licencia financiera que nos permite hacer lo mismo que hace un banco”.</p><p>Las cifras ayudan a dimensionar la tarea que ha hecho Bold: <b>ha vinculado más de 600.000 comercios en Colombia </b>y, según Vélez, participa con cerca del 7 por ciento de lo que se procesa en Colombia con tarjetas, que equivale a unos 20 billones de pesos anuales en transacciones. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XUKW4BYT5ZBW3BHG4XXD276BZA.jpg?auth=75e40bf3e747e90b4eb637897e818f5064e42e291e297e73920c47ed96f048f5&smart=true&width=7595&height=5066" alt="Bold ha vinculado más de 600.000 comercios en Colombia." height="5066" width="7595"/><p>También ofrece créditos y cuentas digitales y bancarias a sus clientes. “Tenemos más de 150.000 clientes con una cuenta Bold, una cuenta digital donde pueden recibir los dineros de sus pagos, administrarlos, <a href="https://www.semana.com/economia/capsulas/articulo/usuarios-de-balotocom-ahora-podran-cobrar-premios-con-transferencias-inmediatas-por-bre-b/202623/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/capsulas/articulo/usuarios-de-balotocom-ahora-podran-cobrar-premios-con-transferencias-inmediatas-por-bre-b/202623/">hacer giros por Bre-B</a>, pagarles a los proveedores y retirar en un cajero automático. Y un portafolio con el que estamos llegando a unos<b> 300.000 millones de pesos en crédito a estas empresas”</b>, dice Vélez. </p><p>¿Cuál es el valor que entrega Bold? A su juicio, lo innovador es que muchos de sus clientes son microempresas informales, y no hay mucha información disponible para hacer el crédito. “Analizamos las transacciones de los datáfonos para entender el negocio: cómo está, si crece, cuál es la actividad económica y demás. Y con eso hacemos el análisis de riesgo para ofrecerle crédito a ese negocio sin necesidad de pedirle tantos papeles como si tuviera un crédito tradicional”, explica.</p><p>Ahora, lo que viene es desarrollar todo el potencial de tener una entidad financiera en Colombia. “Vamos en el capítulo uno. Nos toca escribir el capítulo dos y el capítulo tres. Tenemos que profundizar mucho, sobre todo en el mundo del crédito; todavía tenemos bastante oportunidad de mejorar nuestra oferta y ampliar nuestro portafolio de productos para las pequeñas empresas. En los próximos años, la principal temática es esa: <b>volvernos cada vez más ese banco digital para las pymes,</b> pasando de solo datáfonos a todo el portafolio completo que le puede ofrecer una entidad financiera en Colombia”, advierte Vélez. </p><p>Pero, además de crecer en Colombia, el modelo se puede replicar en otros mercados. Vélez señaló que hace un año compraron un portafolio de 30.000 clientes en Perú, país en el que avanzan en la búsqueda de una licencia financiera para operar como lo hacen en Colombia. </p><p>“Es un mercado similar al colombiano, en donde hay unos jugadores bancarios muy grandes y poderosos, y no necesariamente están muy bien <a href="https://www.semana.com/economia/capsulas/articulo/el-80-de-pymes-colombianas-no-estaria-preparado-para-inspecciones-del-mintrabajo-sin-previo-aviso/202649/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/capsulas/articulo/el-80-de-pymes-colombianas-no-estaria-preparado-para-inspecciones-del-mintrabajo-sin-previo-aviso/202649/">atendidas las pequeñas empresas</a>. Se les puede hacer una oferta mucho más tecnológica, más digital, más amigable, un mejor servicio. Y eso es lo que nos ha permitido crecer mucho en Colombia y también es la apuesta en Perú”, añade Vélez.</p><p>Resalta que lo más difícil en el mundo de la tecnología es crear buenas experiencias para el cliente y desarrollar aplicaciones que funcionen muy bien, fáciles de utilizar y con alta disponibilidad. “Y hacer eso, que suena sencillo, es muy difícil. Queremos ofrecer nuestra propia receta, especialmente diseñada para las pymes, que no tienen mucho tiempo, con una aplicación que funcione muy bien, que no necesite una secretaria detrás subiendo y bajando documentos y que sea muy intuitiva y muy fácil de utilizar. <b>El reto es lograr combinar la ingeniería con el diseño de una muy buena experiencia de usuario”.</b></p><p>Manifiesta que con tecnología han logrado reducir los costos de atención a las pymes y han desarrollado una solución atractiva y viable económicamente para la empresa.</p><p>Vélez destaca que Colombia tiene una regulación muy buena para garantizar la estabilidad del sistema, “pero sacrifica un poco la innovación. Tenemos que hacer un esfuerzo por relajar un poco la regulación para incentivar más la innovación y la entrada de nuevos competidores al mercado”, advierte. </p><p>Sobre la posibilidad de vender la compañía, <b>Vélez cree que la empresa tiene todavía mucho espacio por hacer y por crecer.</b> Apenas, por ejemplo, está iniciando su expansión internacional. “No creo que sea el momento de tener esas conversaciones. Bold fácilmente puede multiplicarse por cinco o por diez en los próximos cinco años”, puntualiza.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HM2F5SWUHFDGDESPXVKG7IOIZM.jpg?auth=7d6e157235112795b7ef7ebc9fdf23eb10dad6cc86eba7ec2dac501798c156cd&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Lo más complicado en el mundo de la tecnología es desarrollar buenas experiencias al cliente y diseñar aplicaciones que funcionen bien, fáciles de utilizar y tengan alta disponibilidad. “Y hacer eso, que suena sencillo, es muy difícil”: José Vélez, presidente de Bold.]]></media:description></media:content></item><item><title><![CDATA[El escritor Alexander Cossio habla con SEMANA de letras y libros: “La literatura es una remezcla” ]]></title><link>https://www.semana.com/cultura/libros/articulo/el-escritor-alexander-cossio-habla-con-semana-de-letras-y-libros-la-literatura-es-una-remezcla/202600/</link><guid isPermaLink="true">https://www.semana.com/cultura/libros/articulo/el-escritor-alexander-cossio-habla-con-semana-de-letras-y-libros-la-literatura-es-una-remezcla/202600/</guid><dc:creator><![CDATA[Alejandro Pérez Echeverry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p><b>En la charla con el escritor antioqueño Alexander Cossio, tras su paso por la Fiesta del Libro de Medellín (y, meses antes, por la Filbo) presentando su libro </b><i><b>El superhéroe de los sueños</b></i><b>, SEMANA le preguntó: ¿escribir para qué? </b>Escribir como propósito de vida, respondió el nacido en 1974. Cossio compartió que soñó con ser poeta desde niño y que a los 8 años ya aprendía “poemas que mi papá me leía de esos libros envejecidos de la poesía rústica bella de <i>El duelo del mayoral</i>”.&nbsp;</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/GSMMN45XUZDKXNYC3MVPUDV3XE.jpg?auth=d34dd8ee83beeaeddad08f0215671d45d6fe3037de5aa707a8286bbcbb71c7b5&smart=true&width=3360&height=2240" alt="Alexander Cossio ha publicado 18 libros, y ahora navega su faceta novelista a profundidad." height="2240" width="3360"/><p>A los 12 empezó a escribir y creyó que la ruta hacia una vida de letras sería directa (graduarse, estudiar periodismo, escribir), pero la separación de sus padres forzó otros caminos. Su madre necesitaba que trabajara y eso hizo.<b> Y si bien su sueño de ser escritor “se fue traspapelando”, según contó, le fue lo suficientemente bien como para retomarlo décadas después. “Tenía 40 años y esculqué el bolsillo de los recuerdos: ‘¿Qué pasó con mi sueño de ser escritor? Yo no quería ser gerente de una empresa, yo no quería ser vendedor’”, se dijo.</b> Y renunció, dejando todo para irse a Barcelona a estudiar creación literaria. Entre muchos, tuvo de maestros a firmas como Jorge Carrión, Samanta Schweblin, María Negroni y Martín Caparrós. Confirmó que escribir era su llamado.</p><p><b>Sobre </b><a href="https://alexandercossio.com/" target="_blank" rel="nofollow" title="https://alexandercossio.com/"><i><b>El superhéroe de los sueños</b></i></a><b>, un libro que se enmarca en la literatura fantástica juvenil, explicó que nació como expansión de </b><i><b>El superniño</b></i><b>, un cuento que escribió en 2016. Este trataba de Iván, un niño de un barrio popular en Medellín, que soñaba con volar y un día encontró en sus sueños a un superhéroe</b>, y este le dijo: “Te inyecté cinco poderes. Cuando descubras cuáles son los cinco poderes que te inyecté, ese día vas a lograr tu sueño”. Cossio contó que, cuando el niño encuentra el quinto poder, por cosas del destino, se lanza de un avión en paracaídas y desaparece para siempre.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AJ6U5RONXVAFXCI2JOZHC5PAJY.png?auth=3bf45b2135b0ebc309dc2b2164b933baef655907ac3a75b4b3ece09151e82dfd&smart=true&width=1920&height=1080" alt="Lo emocionan sus cuatro novelas más recientes: ‘Me niego a morir’ (2023); ‘La princesa muda’ (2024); ‘Los días de mis muertes’ (2025);y ‘El superhéroe de los sueños’ (2026)." height="1080" width="1920"/><p>Este final, lo supo tiempo después, había dejado muy triste a uno de sus jóvenes lectores, que le preguntó por qué Iván había tenido que morir. “Lo tengo guardado para un segundo cuento”, se le ocurrió responderle. <b>Y ese cuento del que habló se transformó en un libro, </b><i><b>El superhéroe de los sueños,</b></i><b> con prólogo de J Balvin. En él, según explicó, “entendí que al otro día de haberse tirado en ese paracaídas, Iván había despertado en el superuniverso de los sueños</b>, una ciudad de cristal por encima del cielo, con arquitectura propia donde los superhéroes de los sueños (millares) se reúnen a pensar cómo van a ayudarles a los soñadores de la Tierra para que aprendan a alcanzar sus sueños”.</p><p><b>En ese relato se sirvió de lo que le dejaron sus viajes a la India, a China y lecciones de su maestría en política: “Aquí logré enlazar todo”, exhortó. “Hay una historia en Cuba, donde ese superhéroe de los sueños se le aparece a una niña, Amelia, quien sueña con un librito azul, que no es otra cosa que un pasaporte para huir de su país</b>. Le meto política muy sutilmente al tema para tratar de enseñar a los jóvenes qué es el comunismo y por qué consideramos que ese no es el camino”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EFFBQUX7FNFDHBEO5KGPZXQ36Q.jpg?auth=b3966c4245ab69c0d570a9bcbd03e2a3ff7541d6eafdf4b511232a9126a7c6fe&smart=true&width=4480&height=6720" alt="El autor cuenta que en 'El superhéroe de los sueños' se sirvió de lo que le dejaron sus viajes a la India, a China y algunas lecciones de su maestría en política. " height="6720" width="4480"/><p>SEMANA le preguntó sobre su universo literario, en una trayectoria de 18 libros publicados.<b> </b>“Inicié con poesía, y me invitaron a muchos eventos, y luego pasé al cuento”, explicó.<b> “Pero ahora estoy enamorado de la novela. Estoy mezclando lo que es novela urbana y literatura fantástica juvenil, y realmente quiero seguir aprendiendo y fortaleciendo mi narrativa de novelista”.</b> </p><p>Sobre los escritos que mejor reflejan su voz y rango, mencionó cuatro de su obra reciente: <i>Me niego a morir </i>(2023), que llama “el mito de origen de un escritor latinoamericano”; <i><b>La princesa muda </b></i><b>(2024), prologada por Víctor Gaviria, una historia romántica, ambientada en la época de sicarios en los años ochenta en Medellín; </b><i><b>Los días de mis muertes</b></i><b> (2025), novela inspirada en la vida del cantante Hebert Vargas, que entre realidad y ficción teje la trama de un artista en medio de los sueños, las dificultades, la brujería y el alcoholismo</b>; por último, mencionó <i>El superhéroe de los sueños</i> (2026).</p><p>Y claro, sigue escribiendo, prepara dos novelas cuyos títulos tentativos le son dicientes. Una se llama <i>La abuela que mató a Dios</i> y la otra, <i>Las esposas que nunca tuve</i>. “<b>Estoy encarretado, leyendo mucho </b><i><b>Madame Bovary</b></i><b>, leyendo mucho </b><i><b>Anna Karenina</b></i><b>, para </b><i><b>Las esposas que nunca tuve</b></i><b>, porque quiero nutrirla de esos clásicos que tanto leí cuando era joven</b>. Quiero volverlos a traer. Creo que la literatura es una remezcla y los escritores tenemos que mostrar, de alguna manera, lo que hemos leído en lo que escribimos”.</p><p>La manera en la que escribe entró en cuestión y por eso compartió su atmósfera ideal. <b>“Me encanta encerrarme en bibliotecas para escribir. </b><i><b>La princesa muda</b></i><b> la escribí en Barcelona, en la UPF. Me encerraba 10 o 12 horas diarias a escribir en la Biblioteca de las Aguas. Soy soltero, no tengo hijos, mi matrimonio es este y me enamoré de esto. </b>Entonces, me encierro en una biblioteca y nadie me molesta por 12 horas. La novela siguiente la escribí en la FIU, en la Universidad Internacional de Florida, y <i>El superhéroe de los sueños</i> lo finalicé en la UPB aquí en Medellín. Siempre encerrado en bibliotecas”.&nbsp;</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TOO2PI5NURFU7F7Q4NEQ2M5BBU.jpg?auth=ae414b7ec1da07c1e7731b0ae51c48aa35bb1148c2fa2bae902781906532dd8e&smart=true&width=4480&height=6720" alt="Alexander Cossio prepara dos novelas actualmente. " height="6720" width="4480"/><blockquote><p>Me encanta encerrarme en bibliotecas para escribir. ‘La princesa muda’ la escribí en Barcelona, en la UPF. Me encerraba 10 o 12 horas diarias a escribir en la Biblioteca de las Aguas. Soy soltero, no tengo hijos, mi matrimonio es este y me enamoré de esto.</p><p class="citation">Alexander Cossio</p></blockquote><p>Entre sus varias facetas, hay una de gestor cultural en él, y SEMANA indagó sobre qué proyecta. Su respuesta demuestra lo enfocado que está en su ruta de letras. “Hay muchas cosas que podría hacer, pero anhelo las colaboraciones que los cantantes están haciendo: con escritores, copiando un poco la idea de los cantantes, que los ha apalancado mundialmente”. <b>Sobre cómo lo proyecta, Alexander es consciente de que colecciones de cuentos con varios escritores ya existen. “Quisiera hacerlo diferente –declaró–, que esa remezcla fuera en la misma pieza: un cuento de tres escritores sentados escribiéndolo. En la música, los cantantes ahora se meten en un estudio, sobre todo los chicos del reguetón; cinco o seis cantantes o compositores, y entre todos hacen una sola canción. Eso es lo que quiero explorar en la literatura”.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/M4EBFNGLERDWLNS26XCQQF6KGY.jpg?auth=eca4f7b7ea94d43b4e46c87001129602051f92a49c062b8edb7bb21ca4f755f7&smart=true&width=3360&height=2240" alt="La música, en efecto, le es familiar a varios niveles. Además del mencionado prólogo de J Balvin en su más reciente libro, Cossio también escribe canciones para voces reconocidas. " height="2240" width="3360"/><p><b>La música, en efecto, le es familiar a varios niveles. Además del mencionado prólogo de J Balvin en su más reciente libro, Cossio también escribe canciones para voces reconocidas. SEMANA le preguntó sobre cómo entró a esa esfera.</b> Narró que un día se encontró con Viviana Ramírez, quien en ese momento era la voz principal en El Tropicombo. “Le entregué uno de mis libros de poemas y me dijo: ‘Álex, esto no es poesía, esto es música. Yo voy a hablar con el maestro Jorge Cotes y lo vuelvo a llamar’”. Poco después, el maestro habló con Cossio para decirle que iban a grabar su primera canción, <i>Te voy a amar</i>.&nbsp;</p><iframe width="453" height="340" src="https://www.youtube.com/embed/sc0Ac30v5hg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Te Voy A Amar"></iframe><p><b>En ese punto, sacó a relucir una frase en la que cree: “La gratitud es la moneda que más rápido se valoriza; inviertan en ella”. Su gratitud con El Tropicombo es total, le abrieron un camino que no pensó recorrer jamás. </b>Vinieron canciones de Arelys Henao como <i>Aguardientada el alma</i>, del Trío América como <i>Mi linda</i> y <i>La vida es un bolero</i> de Carlos Arturo, el señor del bolero. Y Hebert Vargas grabó <a href="https://www.youtube.com/watch?v=SFnvBi74cIE&amp;list=RDSFnvBi74cIE&amp;start_radio=1" target="_blank" rel="nofollow" title="https://www.youtube.com/watch?v=SFnvBi74cIE&amp;list=RDSFnvBi74cIE&amp;start_radio=1"><i>Que te cobre la vida</i></a>. ¿Cómo se siente escuchar sus temas en esas voces? <b>“Da motivación para seguir vivo, seguir escribiendo, seguir soñando y seguir creyendo que sí puedo hacer lo que algún día me soñé”.&nbsp;</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SFMIE4LKLVAJTB6FWH5DVAKJ3A.png?auth=c33a9522b4c03c07c3c951d88351acf3e1a7b99845f00744ff60b13fe04453ba&amp;smart=true&amp;width=1920&amp;height=1080" type="image/png" height="1080" width="1920"><media:description type="plain"><![CDATA[Nacido en Medellín, en 1974, este profesional del Arte en Literatura es también magíster en Creación Literaria por la UPF (Barcelona) y en Estudios Políticos de la UPB.]]></media:description></media:content></item><item><title><![CDATA[El valor detrás de una cifra]]></title><link>https://www.semana.com/economia/empresas/articulo/el-valor-detras-de-una-cifra/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/el-valor-detras-de-una-cifra/202600/</guid><dc:creator><![CDATA[Billy Escobar]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Al recorrer un ranking empresarial, la mirada suele detenerse en el resultado. Quién creció, quién lidera, cuánto vendió, qué sector ganó participación. Las cifras parecen hablar por sí solas, pero para que puedan compararse, interpretarse y utilizarse con confianza han debido recorrer un proceso mucho menos visible. Entender ese recorrido cambia también la manera de leer las 5.000 empresas que mueven a Colombia.</p><p>El informe de las 10.000 empresas de 2026, que sirve de base para este especial, muestra ese recorrido. Su construcción parte de estados financieros con corte al 31 de diciembre de 2025, datos recibidos de distintas superintendencias, estándares NIIF y criterios que definen qué estados se utilizan y cómo se determina el tamaño empresarial. Antes de interpretarlos, hay que asegurar su origen, tratamiento y comparabilidad.</p><p>La materia prima resulta familiar. Activos, pasivos, patrimonio, ingresos y resultados han alimentado estos estudios durante años. Lo que ha evolucionado es la forma de explotarla. Los documentos con tablas y gráficas hoy conviven con tableros interactivos capaces de cruzar variables, filtrar actividades económicas, comparar territorios y dejar que los usuarios construyan sus propias lecturas. La evolución refleja un desafío creciente para empresas e instituciones: convertir información disponible en conocimiento útil y hacerla relevante para quienes deben tomar decisiones.</p><p>Atribuir ese salto a una herramienta tecnológica sería confundir la interfaz con el proceso. Para llegar a ella se necesita una arquitectura de capacidades que comienza con rigor estadístico y metodológico, incorpora lectura económica, contable y societaria, suma conocimiento de la realidad empresarial y se apoya en analítica para estructurar y relacionar grandes volúmenes de registros. La integración de esas perspectivas mejora tanto las preguntas como las respuestas posibles.</p><p>Hay una capa adicional. Un resultado técnicamente correcto puede perder utilidad si resulta difícil de comprender. La visualización de datos, la neurociencia cognitiva, la pedagogía y la andragogía incorporan criterios sobre atención, carga cognitiva, jerarquización y aprendizaje adulto para presentar información compleja sin sacrificar rigor. Así se acorta la distancia entre el hallazgo técnico y la posibilidad de comprenderlo y utilizarlo.</p><p>Esa articulación se acerca a lo que puede entenderse como ingeniería del conocimiento. Su valor está en integrar capacidades que observan un mismo problema desde perspectivas complementarias. Un equipo así entiende cómo se construye una cifra, qué puede inferirse de ella, qué significa para la economía y para una empresa, cómo relacionarla con otros registros y de qué manera comunicarla para facilitar su uso.</p><p>La experiencia ofrece, además, una reflexión sobre el diseño de las organizaciones. Muchas todavía conforman sus equipos a partir de las profesiones tradicionalmente asociadas con cada área, aunque los problemas que enfrentan atraviesan fronteras disciplinares. Diseñar los equipos alrededor de los desafíos que deben resolver cambia la lógica. Primero se identifica el problema y luego se reúnen las capacidades necesarias para comprenderlo, abordarlo y convertir sus resultados en decisiones.</p><p>Al recorrer las 5.000 empresas de esta edición, conviene entonces mirar más allá de la posición que ocupa cada compañía. Detrás del ranking existe una cadena de método, criterio y procesamiento que convierte miles de estados financieros en una lectura del tejido empresarial. Para cualquier organización, allí reside una ventaja difícil de reemplazar: contar con el talento que sabe formular mejores preguntas, interpretar con rigor las respuestas y convertir esa comprensión en decisiones.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/2A6AWLPEPNHQVJ2VXD3IAUXSTE.jpg?auth=c6b073f1f805af12359d93d04f81b2aba62c8d6d31dc1088a82263067fdbe5ab&amp;smart=true&amp;width=1000&amp;height=530" type="image/jpeg" height="530" width="1000"><media:description type="plain"><![CDATA[Billy Escobar]]></media:description></media:content></item><item><title><![CDATA[Esta empresa es hoy la mayor vendedora y compradora de vivienda usada en Colombia. Así lo está logrando.]]></title><link>https://www.semana.com/economia/empresas/articulo/esta-empresa-es-hoy-la-mayor-vendedora-y-compradora-de-vivienda-usada-en-colombia-asi-lo-esta-logrando/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/esta-empresa-es-hoy-la-mayor-vendedora-y-compradora-de-vivienda-usada-en-colombia-asi-lo-esta-logrando/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Habi dejó hace tiempo de ser únicamente una startup que compraba vivienda usada para revenderla. Siete años después de su creación, la compañía se ha convertido en uno de los principales jugadores del <a href="https://www.semana.com/economia/macroeconomia/articulo/inversion-inmobiliaria-y-construccion-plantean-nueve-apuestas-para-acelerar-la-recuperacion-de-colombia/202623/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/macroeconomia/articulo/inversion-inmobiliaria-y-construccion-plantean-nueve-apuestas-para-acelerar-la-recuperacion-de-colombia/202623/">mercado inmobiliario</a> de Colombia y México, y ahora está haciendo una apuesta mucho más profunda: <b>reconstruir buena parte de su operación en torno a la inteligencia artificial.</b></p><p>Sebastián Noguera, presidente y cofundador de Habi, asegura que la compañía representa cerca del 10 por ciento de las hipotecas de Colombia, alrededor del 7 por ciento de las transacciones de vivienda y se considera el mayor comprador y vendedor de vivienda usada del país. En México, calcula que la participación de la empresa está entre 2 y 3 por ciento, tanto en transacciones como en hipotecas.</p><p>El tamaño alcanzado contrasta, sin embargo, con la dimensión del mercado al que apunta. Noguera estima que <b>el inventario de vivienda en Colombia ronda los 900.000 millones de dólares </b>y el de México se acerca a los 2,5 billones. Frente a esas cifras, admite que Habi todavía representa una fracción pequeña del negocio.</p><p>“Nos ponemos muchas estrellitas por ser los mejores, pero no somos ni el 1 por ciento; nos queda mucho por trabajar”, afirma. Ese diagnóstico explica la estrategia de la compañía: crecer no solo comprando y vendiendo inmuebles, sino con financiar, intermediar, distribuir y ofrecer servicios alrededor de la vivienda. </p><p>Hoy, según Noguera, Habi mueve algo más de 1.400 millones de dólares anuales en transacciones de vivienda y espera llevar esa cifra a cerca de 6.000 millones hacia 2030, lo que implicaría multiplicar varias veces su escala actual. La empresa prevé crecer este año alrededor del 40 por ciento en número de transacciones y clientes atendidos. </p><p>En Colombia, la compañía opera principalmente en Bogotá, Cali, Medellín y Barranquilla, con énfasis en vivienda usada. En México, su expansión tomó otro camino: entró mediante una asociación con una empresa local que posteriormente adquirió. Se trata del portal Propiedades.com, el cual cuenta con un amplio inventario de inmuebles publicados. Desde allí también ganó <a href="https://www.semana.com/economia/macroeconomia/articulo/menos-subsidios-mas-arriendos-y-hogares-mas-pequenos-asi-esta-cambiando-el-mercado-inmobiliario-colombiano/202637/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/macroeconomia/articulo/menos-subsidios-mas-arriendos-y-hogares-mas-pequenos-asi-esta-cambiando-el-mercado-inmobiliario-colombiano/202637/">terreno en vivienda nueva</a> y, según Noguera, se convirtió en un canal relevante para desarrolladores inmobiliarios. </p><p>La compañía también amplió su actividad hacia el crédito. El año pasado lanzó HabiCapital, una operación de originación desde balance propio con la que, según explica el empresario, busca entregar una hipoteca en menos de 14 días desde que el cliente decide comprar una vivienda. Además, <b>actúa como bróker de hipotecas para entidades financieras</b> y mantiene una cartera propia. </p><h2>Dos años en reconstrucción</h2><p>Pero el cambio más fuerte está ocurriendo en el interior de Habi. Noguera asegura que llevan dos años reconstruyendo prácticamente toda su infraestructura tecnológica. La compañía rehízo su plataforma de precios, su plataforma comercial, el CRM y el sistema de trámites, que ahora funciona sobre una infraestructura interna denominada “La Fábrica”.</p><p>El objetivo es que cada vez más partes de la operación se ejecuten a través de agentes de inteligencia artificial.</p><p>La apuesta descansa sobre una base de datos que, según la compañía, <b>contiene información de más de 22 millones</b> de viviendas, mientras cerca de 300.000 documentos al año son procesados por agentes para alimentar decisiones en tiempo real.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/UCTVDUCDHRAHXC4T3DHDWIZ5UI.jpg?auth=483a7c96dcd6bbafbde0433d840a0ca4732080b0553ba3ec31200114505a11dc&smart=true&width=6016&height=4016" alt="La base de datos de la compañía contiene información de más de 22 millones de viviendas, mientras cerca de 300.000 documentos al año son procesados por agentes para alimentar decisiones en tiempo real." height="4016" width="6016"/><p>Una de las áreas más transformadas es la valoración de inmuebles. Noguera afirma que el 97 por ciento de los equipos encargados de tomar decisiones de compra y venta <a href="https://www.semana.com/tecnologia/articulo/tecnicamente-hablando-es-o-no-posible-detener-la-inteligencia-artificial/202610/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/tecnicamente-hablando-es-o-no-posible-detener-la-inteligencia-artificial/202610/">operan con agentes de inteligencia artificial</a>. La idea es automatizar la lectura de información, el análisis de precios y parte de las decisiones que antes requerían una mayor intervención manual. </p><p>La estrategia va más allá de automatizar procesos internos. Habi también e<b>stá llevando agentes de IA directamente al contacto con los clientes</b>. Uno de ellos es Gabi, una asesora virtual que atiende a personas interesadas en vender vivienda. Pero no lo hace con el tradicional menú de marque 1 para un servicio, 2 para otro o 3 para hablar con un agente. Sino que se da con una llama ‘normal’, en la que la persona siente que está hablando con otro ser humano.</p><p>Gabi no habla con voz de robot, sino que tiene acento y modismos mexicanos o colombianos, según sea el caso. En la llamada identifica la situación del propietario, pregunta por su urgencia para vender, evalúa su sensibilidad al precio y le recomienda el producto que mejor se ajusta a sus necesidades. </p><p>La lógica de Habi, empresa que nació en Colombia por iniciativa de Noguera y su socia, la estadounidense Brynne McNulty, es atacar primero lo que la empresa considera el núcleo del negocio: la formación de precios, la gestión comercial y los trámites. Otros procesos, <b>como la entrega física de la vivienda, todavía no están automatizados. </b></p><h2>Cambia el empleo</h2><p>La adopción de inteligencia artificial no se limita a la tecnología. De los 900 empleados que tiene Habi, más de 200 han recibido formación profunda en IA, según Noguera. La capacitación alcanza perfiles que tradicionalmente no estaban ligados al desarrollo de software: hay abogados construyendo agentes, mientras los equipos de marketing y datos también trabajan con estas herramientas. </p><p>La transformación sí está modificando algunos puestos. “Hay momentos en los que ciertos roles comienzan a quedar obsoletos”, reconoce Noguera. La respuesta de Habi ha sido intentar reconvertirlos. Así, quien antes se encargaba directamente de fijar precios puede pasar a coordinar agentes de precios; un comercial puede convertirse en supervisor de agentes y concentrarse en los momentos en que el cliente <a href="https://www.semana.com/tecnologia/articulo/inteligencia-artificial-agentica-que-es-en-que-se-diferencia-de-la-ia-generativa-y-cuales-son-sus-riesgos/202659/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/inteligencia-artificial-agentica-que-es-en-que-se-diferencia-de-la-ia-generativa-y-cuales-son-sus-riesgos/202659/">requiere intervención humana.</a> </p><p>El empresario, que también fue uno de los creadores de Merqueo, asegura que, al mismo tiempo, está contratando personal en áreas como crédito y tecnología. Su tesis es que una mayor automatización reduce el costo de atender a cada cliente y, así, <b>permite aumentar el volumen de operaciones sin que los costos crezcan al mismo ritmo.</b></p><p>Ese modelo será clave para cumplir el siguiente objetivo. Habi ya alcanzó el punto de equilibrio en Colombia al cierre del año pasado y espera hacerlo a nivel consolidado al final de este año. Sin embargo, su prioridad sigue siendo invertir y ganar escala antes que maximizar la rentabilidad de corto plazo. </p><p>La compañía también mantiene una aspiración regional. Después de Colombia y México, Noguera plantea que la visión de largo plazo sea cubrir al menos buena parte de América Latina, aunque advierte que avanzarán “un paso a la vez”. </p><p>Por ahora, el desafío inmediato está en demostrar que esa combinación de escala inmobiliaria, crédito, datos y agentes de inteligencia artificial puede resolver los problemas históricos del mercado de vivienda: baja liquidez, fragmentación y procesos que todavía pueden tomar meses. Al tiempo que busca ayudarles a los propietarios, pues la compra de vivienda es, en muchos casos, <b>la mayor inversión de su vida y no se pueden equivocar.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CFLCQDAGQVHXHBRAAPTCWYKGZY.jpg?auth=5ce62e1f0908a9154c6b4e2644d8910135f169425121d4379b1dd3b3de64b53a&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Tras dos años de reconstrucción tecnológica, Habi busca que la inteligencia artificial atraviese buena parte de su operación inmobiliaria, anticipa su CEO, Sebastián Noguera.]]></media:description></media:content></item><item><title><![CDATA[“Mi cerebro es una lavadora en ciclo de centrifugado”: Sharon Horgan habla con Arcadia sobre ‘Youth’]]></title><link>https://www.semana.com/cultura/television/articulo/mi-cerebro-es-una-lavadora-en-ciclo-de-centrifugado-sharon-horgan-habla-con-arcadia-sobre-youth/202600/</link><guid isPermaLink="true">https://www.semana.com/cultura/television/articulo/mi-cerebro-es-una-lavadora-en-ciclo-de-centrifugado-sharon-horgan-habla-con-arcadia-sobre-youth/202600/</guid><dc:creator><![CDATA[Alejandro Pérez Echeverry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p><b>Nacida en Londres, de nacionalidad irlandesa por la sangre que le corre por las venas, Sharon Horgan lleva 20 años haciendo televisión de autora en el Reino Unido, y tal parece que Colombia y el mundo están listos para recibir sus ocurrentes impactos. </b>El camino ha sido progresivo. Partió de la televisión británica, con series como <i>Pulling,</i> que no llegaron a este país, pero llamaron la atención de audiencias y servicios de <i>streaming</i> globales. A cada paso, una audiencia mayor: Prime Video estrenó <i>Catastrophe</i>; Apple TV presentó su sesudo <i>thriller</i> cómico <i>Bad Sisters</i> (con música de <a href="https://www.semana.com/cultura/articulo/pj-harvey-la-voz-de-los-noventas-madura-con-los-tiempos-y-lanza-el-teatral-i-inside-the-old-year-dying/202300/" target="_blank" rel="" title="https://www.semana.com/cultura/articulo/pj-harvey-la-voz-de-los-noventas-madura-con-los-tiempos-y-lanza-el-teatral-i-inside-the-old-year-dying/202300/">PJ Harvey</a>, nada más); y ahora, desde este domingo 20 de septiembre, HBO Max emite semanalmente su nueva comedia <i>Youth</i>, que, para sorpresa de nadie, está buenísima (y también tiene una gran selección musical).</p><p>En esta nueva producción de ocho capítulos, Horgan aborda un tema que resonará naturalmente con audiencias maduras, pero ostenta la virtud de no alienar al resto, y ese es parte de su talento. <i><b>Youth </b></i><b>nace muy de su entraña, pues su protagonista, Alex, que ella escribe y ella interpreta (en una serie en la que además es productora ejecutiva), trata de navegar más de cinco décadas en esta Tierra, como mujer divorciada, madre de un hijo confundido y recién graduado del colegio, trabajando para una jefa en el mundo editorial que la ama pero la reta </b>(amiga pero jefa, con tensiones y gozos), y unos padres que ya sienten el paso de los años, física y mentalmente.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/XwuDMSlErkk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Youth | Official Trailer | HBO Max"></iframe><p>Es difícil pensar en que existiría una voz como la de Phoebe Waller-Bridge (creadora del monólogo <i>Fleabag</i>, que CineCo Alternativo proyecta en cines del 25 al 27 de septiembre, y dio pie a una gran serie en Prime Video) sin la de Sharon Horgan pavimentando un camino. Pero claro,<b> Horgan le habla a una generación mayor; y con los años ha pulido un tono y una manera de entregar sus roles que emanan carisma y humor desde las complicaciones de la vida adulta. En charla con </b><i><b>Arcadia</b></i><b>, le preguntamos a la estrella sobre la liberación y el peso de hacer tantas cosas en la producción. </b>“¡También puedo abrir una botella con los dientes!”, aclara para empezar. Se sabe que, para un artista, tener control creativo es un logro increíble, pero ¿qué tanto cuesta? </p><blockquote><p>¡También puedo abrir una botella con los dientes! </p><p class="citation">Sharon Horgan</p></blockquote><p>“Me parece bien tener el control”, le explica Horgan a <i>Arcadia</i>, “pero soy alguien a quien le encanta colaborar y necesita tener gente alrededor con quien hablar las cosas. Por eso, aunque en cierto modo estoy dirigiendo el proyecto, no podría ni querría hacerlo sola.<b> La televisión genial y el cine realmente bueno, así como muchos proyectos creativos, se benefician de esa mentalidad colectiva</b>. Así que sí, es un trabajo grande y hay mucho por hacer, pero, si cuentas con un buen equipo, todo funciona”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/YKQ2WA2TSZC6DCGDLDN7EUFUD4.jpg?auth=4738af786ebb98257f409e1f693278dd2c8310310ba4ad029019d1e83a9a70cd&smart=true&width=5848&height=3899" alt="Horgan interpreta a Alex, madre, divorciada, hija de padres de edad avanzada, amiga de su jefa, y alguien que busca vivir." height="3899" width="5848"/><p><b>Y sí que cuenta con ese equipo, detrás de las cámaras y frente a ellas, con un reparto en el que encuentra interlocutores geniales.</b> En este caso, entre otros, <i>Youth </i>suma a la actriz<b> Sharlene Whyte (Sam, amiga y jefa de Alex)</b>, a un actor cada vez más conocido por audiencias globales como <b>Rupert Friend (Patrick, amorío intermitente de la protagonista)</b> y al joven <b>Aran Murphy (su hijo Ruarí)</b>. </p><p><b>A los tres les preguntamos sobre la experiencia de trabajar con Sharon. Friend subraya que “Sharon es una de mis heroínas, es increíble”, especialmente por algo a lo que él responde mucho: lo “valiente e implacable en su escritura”. </b>Trabajar con ella fue todo lo que esperaba que fuera, explica: “Estuvimos muertos de la risa la mayor parte del tiempo, inventando cosas sobre la marcha, a veces con toda nuestra ropa tirada por el suelo. Es algo muy divertido porque nunca la había conocido antes de esto y luego tenemos que ser esta especie de viejos amigos y nuevos amantes. Es una dinámica interesante de desarrollar con alguien a quien nunca has conocido, rápidamente, pero fue muy orgánica y agradable”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AIYXMNUCGNGBDPJWW4HYTXZHFM.jpeg?auth=dd18551c85e22fc49eb6252239aeb6f4a986e3508c6fae189acda99f35be2991&smart=true&width=3840&height=2160" alt="Aran Murphy, quien interpreta al hijo de Alex, Rauri, quedó impresionado con el trabajo multifacético de Sharon Horgan." height="2160" width="3840"/><p>El joven Aran Murphy, que interpreta a su hijo, Rauri, un joven que siente mareos entre los cambios de la vida, entre la atracción y la pena, el <i>bullying</i> y las redes, destaca por su parte lo increíble que le resultó observar la forma en que trabaja: “Fue extraordinario. <b>Ya conocía su trabajo y lo admiraba, pero su capacidad de hacer tantas cosas tan bien hechas al mismo tiempo, sin fallar, fue muy inspirador”. Además, agradece el rol que escribió. “En el guion encontré una representación matizada y peculiar de un joven de 18 años, y no era aburrida ni unidimensional</b>. Era este tipo de chico complejo, desanimado, que no sabe qué quiere hacer ni quién es. La escritura de Sharon fue tan increíble que todo ya estaba allí para mí”.</p><blockquote><p>En el guion encontré una representación matizada y peculiar de un joven de 18 años, y no era aburrida ni unidimensional. Era este tipo de chico complejo, desanimado, que no sabe qué quiere hacer ni quién es. La escritura de Sharon fue tan increíble que todo ya estaba allí para mí.</p><p class="citation">Aran Murphy</p></blockquote><p>Por su parte, Sharlene Whyte explica que “si uno ha sido fan del trabajo de Sharon, si ha visto <i>Motherland</i>, <i>Pulling</i>, <i>Catastrophe</i>, sabe que es hilarante y que la va a pasar bien. Así que, cuando me pidieron audicionar, fue un sueño hecho realidad”. El sueño solo se extendió al llegar al set, pues “compartir el espacio con Sharon, quien es increíblemente talentosa, fue un momento de no creer”.<b> Le preguntamos a Whyte, quien deja un papelazo, sobre la genial dinámica entre ambas en pantalla. “Sharon es mi jefa en el mundo real, y tener que cambiar eso requirió un poco de gimnasia mental: cambiar el chip”, confiesa. “Y encontramos esa dinámica de manera natural a través de mucho juego, ensayos y pequeñas charlas</b>. Así, simplemente caímos en un ritmo muy cómodo”. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4USJMIIVI5CAFCJODYCV2C7COY.jpg?auth=02eaf4398de58dc54227c62f082532062bfeda62a86dd2913c572bc2c70fbf78&smart=true&width=4994&height=7491" alt="Horgan es productora ejecutiva de 'Youth', además de, claro, escribirla y protagonizarla. Por algo tiene ese nivel de control. Es brillante." height="7491" width="4994"/><p>Le preguntamos a sus colegas cómo es trabajar con la genia, pero <b>¿cómo es ser ella y estar metida en ese cerebro tan ágil? “No es divertido allá arriba”, responde Horgan en su tono característico. “Mi cerebro es una especie de lavadora en el último ciclo de centrifugado que nunca desagua, siempre girando</b>, a veces con cosas buenas y a veces con cosas malas, sin tregua”. Conociendo sus diálogos, tiene sentido lo que postula, pero hasta ella reconoce que “salen cosas buenas de esa cabeza”.</p><blockquote><p>Sí existe una presión por el hecho de haber hecho buenas series que a la gente le gustan, porque eso es lo que esperan. No sé si sea muy “católico” de mi parte (o si esa sea la palabra correcta), pero no me gusta decepcionar a la gente. Por eso me impongo una enorme presión para crear un excelente trabajo</p><p class="citation">Sharon Horgan</p></blockquote><p>Su carrera ya alcanza un nivel considerable de notoriedad. Como actriz ha integrado varias producciones de Hollywood y como realizadora ha llegado a un nivel de control soñado. Pero eso también viene con mayores expectativas. <b>Sobre ese peso externo, Sharon comparte que su trabajo fluye de una manera diferente estos tiempos “porque tengo más confianza en lo que hago y no lo cuestiono todo constantemente. Cuando siento que algo es bueno y tal vez otra persona me lo confirma, confío en que realmente lo es. Pero sí existe una presión por el hecho de haber hecho buenas series que a la gente le gustan, porque eso es lo que esperan</b>. No sé si sea muy “católico” de mi parte (o si esa sea la palabra correcta), pero no me gusta decepcionar a la gente. Por eso me impongo una enorme presión para crear un excelente trabajo”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XTSW3G3NQFF2PBFIYNGZ7PB2FI.jpg?auth=dcc38a95f18911f0b677e316819ab14432c5f61ad22061a15c76b6c19fcb6965&smart=true&width=1296&height=1920" alt="La culpa católica lleva a Horgan a hacer producciones de altísima calidad. " height="1920" width="1296"/><p>Y volvemos a la serie, que toca esa “juventud” que se vive en la sexta década de vida y cómo se asume. Y le preguntamos si sus 56 años de vida le han dejado alguna lección esencial. <b>Horgan le dice a </b><i><b>Arcadia</b></i><b> que el personaje de su madre en la serie, Maggie, la expresa: “El tiempo pasa muy rápido, pero somos nosotros quienes lo gastamos, así que hay que gastarlo con sabiduría”. </b></p><p>Por ello, concluye: “Realizando esta serie, aprendí que debemos ser muy conscientes del tiempo que tenemos y de cómo lo empleamos. Considero sumamente importante no quedarnos atrapados preocupándonos por las cosas insignificantes. Sé que todos lo hacemos, pero <b>cuando nos descubramos en ello deberíamos intentar dar la vuelta y darnos cuenta de lo afortunados que somos de estar aquí</b>”. </p><h2>Extended Play: Sam y Patrick</h2><p><b>En cuanto a conocer Colombia o algo de su cultura, la única que pasó el test geográfico entre los cuatro talentos con los que habló Arcadia fue Sharlene Whyte, quien respondió “Café, música, comida”</b>. Horgan, Murphy y Friend desearían conocer, y Friend pidió recomendaciones. Aseguró que, cuando llega a un lugar nuevo, evita el lugar turístico, le encanta ir a comer algo local que recomiende un residente y luego busca música en vivo.</p><p><b>A Whyte le confesamos que no es muy frecuente ver en la televisión colombiana a mujeres negras en posición de mando, jefas como Sam</b>, y le preguntamos sobre asumir y preparar ese rol. “Creo que en la televisión británica es más normal ver a una jefa como Sam. Y por eso creo que esta es una oportunidad maravillosa”, profundizó.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LSUMCTYNGNGOPF4DVJ3XY33UHI.jpg?auth=10a361196b14a276f4730fa938dafc6f37f55ed32f99a6810a51a39112d65473&smart=true&width=7245&height=4830" alt="Sharlene Whyte es Sam, la cabeza de la casa editorial donde trabaja Alex, que también es su mejor amiga. Entre ellas brotan diálogos geniales." height="4830" width="7245"/><p>“<b>Sam es aspiracional, y me parece bien si ella se vuelve internacional y llega a Colombia y sirve para redefinir la imagen de </b><a href="https://www.semana.com/cultura/articulo/postconflict-utopias-o-como-se-articula-el-activismo-de-la-imaginacion-en-el-choco/202600/" target="_blank" rel="" title="https://www.semana.com/cultura/articulo/postconflict-utopias-o-como-se-articula-el-activismo-de-la-imaginacion-en-el-choco/202600/"><b>la mujer negra</b></a><b> como alguien que es la jefa y no alguien siempre en un rol servil. Ese es el poder que puede tener la televisión, al contar historias reales, porque yo he arraigado a Sam en la realidad. Existen mujeres así; quiero decir, solo hay tres o cuatro agentes literarias que son negras</b>, <b>pero hay muchas personas negras en el mundo editorial y en posiciones de poder y autoridad</b>. Así que me siento muy orgullosa y honrada”, agrega Whyte. Sin duda, Sam es de las fuerzas indetenibles de esta nueva serie, y los diálogos que sostiene con su amiga y empleada Alex son consistentemente sesudos y divertidos, reveladores de puntos de vista de dos mujeres que navegan distinto pero de cerca sus cincuentas.</p><p><b>Por la calidad de sus interpretaciones, a Rupert Friend se le ha visto en varias películas de Wes Anderson y una gran variedad de géneros. </b>En dramas como <i>At Eternity’s Gate</i> y <i>The Boy in the Striped Pajamas</i>, películas de ciencia ficción, acción y aventura como <i>Jurassic World: Rebirth</i>, y ahora deslumbra aquí, en la comedia, género en el que ha dejado puntos altos con <i>Death to Stalin</i> y la serie <i>High Desert</i>. </p><p>Y, como desde afuera asumimos que la comedia es más divertida de hacer, le preguntamos si lo es. <b>“Para ser sincero, aquí está el terrible secreto: todo es divertido de hacer”, sentencia Friend. “Ya sea que te esté comiendo un dinosaurio —alerta de </b><i><b>spoiler</b></i><b>— o interpretando al idiota hijo de Stalin, es un sueño. </b>Es lo que hacíamos de niños: jugar a hacer creer. A veces me tengo que dar una bofetada a mí mismo y darme cuenta de que me gano la vida haciendo esto, y soy muy, muy afortunado.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/GHINPFQEJ5AE7L6ROL5QRONPRI.jpg?auth=d68bc2680e8d8fa194f0e70289ad5bc71406af1ad685dab82d733b314b2ba237&smart=true&width=4850&height=3233" alt="Rupert Friend, que viene apareciendo en producciones grandes de Hollywood, da vida a Patrick, un 'cuchacho' que siente atracción por Alex." height="3233" width="4850"/><p><b>Indagamos sobre los gozos y retos de interpretar a su personaje, Patrick, una especie de adulto sin responsabilidades, un </b><i><b>cuchacho </b></i><b>en pleno, que quizá irá mutando...</b> “Las alegrías de ser Patrick son todas esas cosas a las que uno renuncia cuando crece: estar perpetuamente en un estado infantil, haciendo básicamente lo que uno quiere, sin considerar realmente las responsabilidades de la vida adulta”, admite el actor británico. “En mi vida real soy padre, esposo, hermano e hijo, y me tomo toda esa responsabilidad muy en serio, además de tratar de disfrutarla, por supuesto. <b>Pero lo divertido de Patrick es que no ha hecho nada de eso todavía. Sigue viviendo como si tuviera 27 años, como un </b><i><b>hipster </b></i><b>moderno en un </b><i><b>loft </b></i><b>haciendo todas estas cosas, a pesar de estar en sus 40. </b>Así que es casi como tener la oportunidad de imaginar cómo podría ser eso. Obviamente hay partes de esa vida que son súper divertidas, pero como la serie explora eventualmente, uno tiene que cambiar, desarrollarse y madurar. Quedarse en la especie “hombre-niño” es bastante triste, al abrazar las alegrías de llegar a esta o aquella década”, recalca Friend.</p><p><b>¿Le ha dejado una lección el paso del tiempo? “Es fácil de decir, pero hay un viejo dicho: </b><i><b>Esto también pasará</b></i><i>.</i> Si todo va muy bien, no será así para siempre; si no va tan bien, tampoco será el caso para siempre”, responde Rupert. </p><p><b>¿Extrañan algo de sus años de juventud? Sharlene Whyte solo extraña una cosa, no despertarse con dolor de rodillas. “Como dicen, la juventud se malgasta en los jóvenes.</b> A mí, simplemente, me encanta vivir mi sexta década”, subraya. Friend tampoco piensa de manera retroactiva. “Los 20 fueron divertidos”, asevera, “pero esto es increíble”.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6QDALKOBWJCF7F4S3KOYMMXTXU.png?auth=66890e273aa4ae644af2dd17d1b2523c8472c921d09f856dd9e475f4afe3a903&amp;smart=true&amp;width=1920&amp;height=1080" type="image/png" height="1080" width="1920"><media:description type="plain"><![CDATA[Desde su producción, sus guiones y sus actuaciones, Horgan se consolida como una de las voces más francas, divertidas y frescas de la televisión.]]></media:description></media:content></item><item><title><![CDATA[La apuesta de una tecnológica colombiana: más servicios al Estado, IA y expansión internacional]]></title><link>https://www.semana.com/economia/empresas/articulo/la-apuesta-de-una-tecnologica-colombiana-mas-servicios-al-estado-ia-y-expansion-internacional/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/la-apuesta-de-una-tecnologica-colombiana-mas-servicios-al-estado-ia-y-expansion-internacional/202600/</guid><dc:creator><![CDATA[Carlos Enrique Rodríguez Pérez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Como una empresa de consultoría para la banca, nació a principios de este siglo OlimpIA, una firma del Grupo Colpatria. “Nacimos haciendo instalaciones de sistemas y core bancarios. Después <b>evolucionamos a ser proveedores de tecnología con fabricantes internacionales</b>. Luego avanzamos hacia servicios ciudadanos y hemos desarrollado una cantidad de soluciones que nos habilitan la prestación de estos servicios”, dice Simbad Ceballos, presidente de OlimpIA. </p><p>En este momento, agrega, también cuenta con servicios de validación de identidad y clientes en ciberseguridad, y han iniciado su <a href="https://www.semana.com/tecnologia/articulo/elon-musk-vuelve-a-alertar-sobre-la-inteligencia-artificial-comparo-uno-de-sus-riesgos-con-algo-mucho-mas-peligroso/202626/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/elon-musk-vuelve-a-alertar-sobre-la-inteligencia-artificial-comparo-uno-de-sus-riesgos-con-algo-mucho-mas-peligroso/202626/">desarrollo en inteligencia artificial</a>.</p><p>Ceballos explica que, en servicios ciudadanos digitales, por ejemplo, manejan un consorcio que presta soluciones a Bogotá. “Todos los trámites de tránsito que se hacen en la ciudad se realizan en 19 sedes que forman parte de este consorcio. Adicionalmente, también le prestamos servicio al Ministerio de Transporte y tenemos <b>cerca de 650 centros donde se hacen los trámites de vehículos en todo el país</b>”.</p><p>Pero también tiene oferta para el sector privado: validación de identidad, ciberseguridad e inteligencia artificial.</p><p>OlimpIA cerrará este año con ingresos <b>cercanos a los 140.000 millones de pesos</b>. “Sin embargo, creo que hay otras métricas que son mucho más interesantes. Por ejemplo, somos la segunda compañía más rentable en la industria de tecnología en el país. Generamos 400 empleos directos y más de 2.000 indirectos. Y somos una de las compañías que más impuestos aporta”, afirma.</p><p>Advierte que la empresa está en una etapa de internacionalización, “incipiente” en México, como “parte del proceso de crecimiento en los próximos tres años. Estamos explorando otros mercados, siguiendo también la estrategia del Grupo Mercantil Colpatria”.</p><p>La visión es crecer de forma acelerada y rentable. “Nos vemos como una compañía con el doble de utilidades en los próximos tres años. Queremos ser una empresa que genere alrededor de 50.000 millones de pesos en utilidades. En términos de ingresos, eso debe ser básicamente unos 300.000 millones de pesos cerrando 2030”, aclara Ceballos.</p><p>Aunque ha iniciado un proceso de internacionalización, estas métricas de crecimiento, en principio, van a llegar mayoritariamente del mercado nacional. “Acabamos de pasar por un proceso de transición en donde vamos a enfocar nuestros esfuerzos en el país y estamos también dedicando gran parte de nuestro foco a atender servicios ciudadanos digitales. El Gobierno nacional está muy interesado en modernizar muchos de los trámites”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Z4EEXUX5TFHBTJE5Q4GN6PC574.jpg?auth=7a48c111d9c55950e26693fe42132f51aee3031e0a5129618b2a99d6396ca9a7&smart=true&width=6221&height=4147" alt="OlimpIA tiene oferta para el sector privado en validación de identidad, ciberseguridad e inteligencia artificial." height="4147" width="6221"/><h2>Una industria nueva</h2><p>Además, Ceballos resalta la validación de identidad como uno de los productos estrella. Explica que se trata de una industria nueva en Colombia y en la región. “Cuando las compañías entran al mundo digital, necesitan poder <b>determinar si la persona que está al otro lado, en un celular o en un PC, es quien dice ser</b>”.</p><p>Añade que gran parte del sector financiero utiliza sus servicios, al igual que compañías de telecomunicaciones, fintechs y cajas de compensación. “Es un negocio en pleno desarrollo y contamos con certificaciones de nivel global”, afirma Ceballos, y dice que OlimpIA es de las pocas compañías en América Latina que las tienen. “Ese es el futuro de la internacionalización de nuestros servicios”.</p><p>Por su participación en las juntas directivas de gremios del sector, como la Cámara Colombiana de Informática y Telecomunicaciones (CCIT), la Cámara Digital de la Andi y Fedesoft, Ceballos tiene una visión más amplia. Resalta la dinámica de esta industria en el país, con sectores como el <a href="http://semana.com/mejor-colombia/articulo/oracle-apuesta-por-cerrar-brechas-de-formacion-en-tecnologia-para-construir-un-mejor-pais/202643/" target="_blank" rel="noreferrer" title="http://semana.com/mejor-colombia/articulo/oracle-apuesta-por-cerrar-brechas-de-formacion-en-tecnologia-para-construir-un-mejor-pais/202643/">desarrollo de software</a> que, a su juicio, “han tenido un crecimiento espectacular”, como las dedicadas a las ERP y a los servicios ciudadanos y digitales.</p><p>Se identifica con los planes del Gobierno, en el sentido de no solo usar y apropiarse de la tecnología, sino <b>producir para ser más eficientes, generar empleos y exportar.</b></p><p>“Acompañamos ese pensamiento. Creemos que está el talento y tenemos inversionistas importantes. Nosotros, por ejemplo, contamos con el respaldo de uno de los grupos económicos más grandes del país, que cree en esta industria y que está invirtiendo para que siga creciendo”, dice.</p><p>Advierte los riesgos y desafíos que tiene el desarrollo de la industria. Ratifica que el primero de todos es la inteligencia artificial. “Hay un reemplazo de las personas que están dedicadas a generar nuevas aplicaciones. Estamos viendo que ya no está creciendo tanto el empleo en la industria de desarrollo de software y más bien se está utilizando masivamente la inteligencia artificial. Eso, a la vez, es un reto, pero también una oportunidad para lograr una eficiencia mayor”, anticipa.</p><p>Para él, una de las tareas más relevantes es profesionalizar más el talento en el país. “Estamos trabajando con las universidades, con Fedesoft, con la Andi para buscar los pénsums más modernos, y que las universidades puedan prestar rápidamente cursos que <b>aceleren la adquisición de conocimiento, específicamente en inteligencia artificial</b>”.</p><p>Frente a la regulación en el país, el ejecutivo lamentó lo que llamó “una pausa importante en los temas de modernización del Estado. En el Gobierno pasado se presentaron cerca de 17 proyectos de ley con el propósito de restringir de alguna manera el uso de la inteligencia artificial. Y no había ninguno que promoviera su uso con el propósito de generar mayor productividad en la industria. Eso nos preocupa”.</p><p>También se pregunta sobre el futuro de la anunciada Agencia Nacional de Ciberseguridad, que se hizo en la administración anterior. “Hubo discusiones sobre dónde debería localizarse, de quién debería depender, pero <b>Colombia sigue teniendo un riesgo altísimo en la protección de sus activos digitales</b>, especialmente los estatales. Se ha perdido información y el acceso a ella, una cuestión clave para los colombianos”.</p><p>Y hace un llamado: “Ese riesgo no lo podemos seguir corriendo. Necesitamos que el nuevo Gobierno y el Congreso regulen rápidamente esos temas de inteligencia artificial y de ciberseguridad. El Gobierno tiene pendiente que el sector público pueda <a href="https://www.semana.com/nacion/articulo/colombia-compra-eficiente-vuelve-a-suspender-contrato-millonario-para-ciberseguridad-persisten-los-problemas/202617/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/colombia-compra-eficiente-vuelve-a-suspender-contrato-millonario-para-ciberseguridad-persisten-los-problemas/202617/">adquirir soluciones de ciberseguridad</a> de una manera rápida, segura, bien probada, por medio de Colombia Compra Eficiente. Esa es una deuda”, concluye Ceballos.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3B2BR657LZGKDA65JE5K6JVDCM.jpg?auth=afc2005a9c0545856ef409025331c541d0accfdee3d7d130f073bfaaf22c5fa3&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Simbad Ceballos, presidente de OlimpIA, estima que en tres años la empresa doble sus utilidades y los ingresos lleguen a unos 300.000 millones de pesos.]]></media:description></media:content></item><item><title><![CDATA[La firma colombiana que mueve dinero sin que la vea el consumidor final y ya apunta a $120 billones al año]]></title><link>https://www.semana.com/economia/empresas/articulo/la-firma-colombiana-que-mueve-dinero-sin-que-la-vea-el-consumidor-final-y-ya-apunta-a-120-billones-al-ano/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/la-firma-colombiana-que-mueve-dinero-sin-que-la-vea-el-consumidor-final-y-ya-apunta-a-120-billones-al-ano/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Cobre, una empresa que opera detrás de muchas de las transacciones que efectúan otras compañías en Colombia, <b>espera cerrar 2026 procesando cerca de 40.000 millones de dólares, equivalentes a unos 120 billones de pesos.</b> El dato supone más que duplicar los 17.000 millones que procesó el año pasado y muestra el crecimiento que ha tenido una compañía cuyo nombre pocas veces aparece frente al consumidor final.</p><p>Con estas cifras, Cobre, cuya razón social es Pexto Colombia, es una de las diez empresas que más dinero mueve en Colombia, <a href="https://www.semana.com/economia/macroeconomia/articulo/la-inflacion-vuelve-a-poner-contra-las-cuerdas-al-banco-de-la-republica-crece-el-riesgo-de-nueva-alza-de-tasas/202632/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/macroeconomia/articulo/la-inflacion-vuelve-a-poner-contra-las-cuerdas-al-banco-de-la-republica-crece-el-riesgo-de-nueva-alza-de-tasas/202632/">según el Banco de la República.</a></p><p>José Vicente Gedeón, CEO y cofundador, cuenta que la idea surgió en 2016, cuando estudiaba en Estados Unidos y leyó sobre M-Pesa, la billetera digital de Kenia que sirvió de referente para desarrollos posteriores como Nequi y DaviPlata. Su penetración en ese país era tal que, en ese momento, <b>movilizaba cerca del 30 por ciento del PIB keniano.</b></p><p>A Gedeón le impresionó mucho esa fintech y lo llevó a decidir que debía hacer algo similar al regresar a Colombia. No obstante, al volver se dio cuenta de que ya en el país funcionaban las billeteras digitales, pero lo que no había era infraestructura de pagos para empresas. </p><p>Convenció a un primo y dos amigos (Felipe Gedeón, Alberto Chejne y José Donato) para crear Pexto en 2018. El nombre estaba inspirado en la firma keniana, en la que la gente manda dinero por mensajes de texto. Así que lo que hicieron fue unir las palabras peso y texto: Pexto. El nombre, sin embargo, no pegó. Aunque lo dejaron como la razón social, pasaron a usar la marca Cobre, basados en la idea de que ese metal es conductor y ellos querían <b>crear una infraestructura de pagos que conectara empresas</b> y a estas con sus consumidores.</p><p>Su primer cliente llegó durante la pandemia. Las cajas de compensación entregaban subsidios monetarios mediante tarjetas, pero las restricciones de movilidad obligaron a buscar otra alternativa. Cobre desarrolló una billetera móvil con la marca de una de estas entidades y, desde ahí, amplió productos y sectores.</p><p>En agosto de 2020, Cobre recibió su primera inversión de un fondo de capital semilla y, posteriormente,<b> han realizado cinco rondas de inversión por más de 80 millones de dólares.</b></p><h2>Recaudos y divisas </h2><p>Después de las cajas de compensación vinieron compañías de transporte, logística, BPO y billeteras digitales, que necesitan pagos empresariales en tiempo real. Posteriormente, desarrollaron recaudos en tiempo real, como los que le procesan a Telefónica Movistar. Luego, entraron al negocio cambiario, donde atienden, entre otros, a exportadores de café. A esas compañías les permite recaudar recursos en el exterior, traer las divisas a Colombia y hacer pagos a proveedores.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/NF6GEJZF7NGOXCRYNRTGBM5DUQ.jpeg?auth=a5655abbf0cae441e68323f8f0d6667fa5184a0fd4dec86f3f68eb7dbe3c6a4a&smart=true&width=2688&height=1536" alt="De acuerdo con su CEO, este año la compañía crecerá alrededor de 2,5 veces frente a 2025." height="1536" width="2688"/><p>Eso explica por qué Cobre no es una marca tan visible para el consumidor. Su infraestructura funciona detrás de otras empresas. </p><p>La mayor parte de los recursos de las capitalizaciones la han usado para fortalecer el negocio en <b>Colombia, que actualmente representa 90 por ciento de la operación.</b> El 10 por ciento restante proviene de México.</p><p>Allá llegaron tras comprar una empresa que cuenta con licencia local y conexión con el sistema SPEI, la infraestructura de pagos electrónicos interbancarios de México <a href="https://www.semana.com/nacion/bogota/articulo/distrito-aclara-que-reforma-tributaria-de-bogota-no-crea-retenciones-para-pagos-con-bre-b-ni-billeteras-virtuales/202659/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/bogota/articulo/distrito-aclara-que-reforma-tributaria-de-bogota-no-crea-retenciones-para-pagos-con-bre-b-ni-billeteras-virtuales/202659/">similar a Bre-B en Colombia. </a></p><p>Con esa operación, que se cerró en diciembre de 2025, comenzaron su internacionalización por México, pese a ser un mercado más complejo que otros destinos habituales para las empresas colombianas. Gedeón explica que la decisión respondió a dos razones: el tamaño de la economía, suficiente para justificar inversiones en licencias, conexión con el banco central y largos ciclos comerciales, y la oportunidad de adquirir una compañía que ya contaba con parte de la infraestructura necesaria.</p><p>La meta es llevar la operación mexicana a una escala similar a la que ahora tienen en Colombia. Un tercer mercado, sin embargo, no está en los planes inmediatos. </p><h2>Crecimiento constante </h2><p>Cobre fue rentable en 2024, perdió esa condición en 2025 debido a dos inversiones importantes –la compra de la empresa mexicana y la constitución de una compañía de financiamiento en Colombia– y volvió a la rentabilidad en 2026.<b> De acuerdo con su CEO, este año crecerán alrededor de 2,5 veces frente a 2025.</b> La firma procesa actualmente unos 13 millones de transacciones y espera terminar el año con entre 18 millones y 19 millones de operaciones mensuales.</p><p>Detrás de ese aumento están tres factores: la llegada de nuevos clientes, un mayor uso de los servicios por parte de las empresas que ya trabajan con Cobre y el lanzamiento de nuevos productos.</p><p>Hay otro motor relevante: Bre-B, el sistema de pagos inmediatos del Banco de la República. Gedeón sostiene que Cobre fue la primera empresa en Colombia que permitió a las compañías cobrar y pagar mediante este sistema. En septiembre del año pasado comenzó prácticamente desde cero y, en agosto de 2026, <b>procesó alrededor de 4 millones de transacciones a través de Bre-B.</b></p><p>La apuesta ahora es ampliar el uso de esa infraestructura, y una de sus palancas estará en mantener y aumentar su talento tecnológico. Gedeón considera que Colombia tiene desarrolladores de alta calidad, pero advierte que atraerlos y retenerlos exige <a href="https://www.semana.com/tecnologia/articulo/cuanto-dinero-puede-ganar-un-programador-en-colombia-falta-mano-de-obra-en-un-sector-que-ofrece-buenos-salarios/202406/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/cuanto-dinero-puede-ganar-un-programador-en-colombia-falta-mano-de-obra-en-un-sector-que-ofrece-buenos-salarios/202406/">competir con salarios internacionales.</a></p><p>Para Cobre, ese recurso humano será crucial en una etapa en la que el crecimiento ya no depende solo de mover más dinero, sino de <b>ampliar la infraestructura tecnológica que conecta empresas, sistemas de pago y mercados.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EPII4ZHR2VCKBDJ6OOOPV6FSVA.jpg?auth=a52ee02568732ad89b1dfed41eb7b29fdde8c15b175aaad14458dd31d5cd5323&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[José Gedeón, cofundador y CEO de Cobre. Esta empresa inició su operación creando el primer sistema de pagos en tiempo real para empresas en Colombia, al que llamó Fast Pay.]]></media:description></media:content></item><item><title><![CDATA[De la contabilidad en papel a la inteligencia artificial: la transformación de esta firma tecnológica caleña]]></title><link>https://www.semana.com/economia/empresas/articulo/de-la-contabilidad-en-papel-a-la-inteligencia-artificial-la-transformacion-de-esta-firma-tecnologica-calena/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/empresas/articulo/de-la-contabilidad-en-papel-a-la-inteligencia-artificial-la-transformacion-de-esta-firma-tecnologica-calena/202600/</guid><dc:creator><![CDATA[Laura  Charry]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 04:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Siesa comenzó hace 45 años en Cali como una empresa de software contable creada por dos ingenieros recién salidos de la universidad. En ese momento, buena parte de las compañías colombianas llevaba sus cuentas en papel y las soluciones tecnológicas disponibles estaban reservadas, principalmente, a <b>organizaciones de gran tamaño que podían asumir los costos de implementación.</b></p><p>Cuatro décadas después, la compañía tiene más de 11.000 clientes en América Latina y busca profundizar su <a href="https://www.semana.com/vehiculos/articulo/la-transformacion-tecnologica-de-las-flotas-ya-llego-a-colombia-peugeot-apuesta-por-utilitarios-electricos/202604/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/la-transformacion-tecnologica-de-las-flotas-ya-llego-a-colombia-peugeot-apuesta-por-utilitarios-electricos/202604/">transformación tecnológica</a> con herramientas de inteligencia artificial y analítica de datos.</p><p>Vicente Pava, CEO de Siesa, explica que la empresa se ha concentrado en el segmento medio del mercado. En Colombia, su universo objetivo comprende unas 45.000 compañías medianas y grandes, con ingresos que pueden partir de <b>alrededor de 10.000 millones de pesos y superar el billón.</b> La empresa no apunta, según Pava, a las corporaciones de mayor tamaño, que suelen utilizar otro tipo de plataformas empresariales.</p><p>El negocio de Siesa está centrado en los sistemas ERP (Enterprise Resource Planning), plataformas que integran áreas como contabilidad, finanzas, manufactura, inventarios, cadenas de suministro y gestión comercial. El origen de la compañía estuvo precisamente en la contabilidad, pero con los años amplió su oferta hacia diferentes procesos de administración empresarial.</p><p>Actualmente, tiene presencia en sectores como hotelería, comercio, retail, manufactura, restaurantes, salud, clubes sociales, agroindustria y telecomunicaciones. La compañía también adquirió hace cerca de ocho años a Zeus, empresa especializada, entre otros segmentos, en soluciones para hotelería. Pava asegura que esa plataforma tiene presencia en cerca del 71 por ciento de la gran hotelería del país.</p><h2>Salto a la nube</h2><p>Uno de los cambios más importantes en el negocio ha sido la migración desde el modelo tradicional de licencias instaladas en computadores y servidores propios hacia servicios alojados en la nube.</p><p>En sus primeros años, los clientes compraban el paquete de software y lo instalaban directamente en sus equipos. Posteriormente, aparecieron los servidores empresariales y las terminales conectadas a ellos. Hoy, buena parte de la infraestructura puede ser administrada por el proveedor. Según Pava, <b>alrededor del 40 por ciento de los clientes de Siesa ya utiliza soluciones en la nube.</b> Esto permite que las empresas reduzcan las inversiones directas en infraestructura, bases de datos, mantenimiento y parte de la gestión de ciberseguridad. Sin embargo, la compañía todavía tiene una proporción importante de usuarios trabajando con versiones tradicionales o legacy.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Z4EEXUX5TFHBTJE5Q4GN6PC574.jpg?auth=7a48c111d9c55950e26693fe42132f51aee3031e0a5129618b2a99d6396ca9a7&smart=true&width=6221&height=4147" alt="Alrededor del 40 por ciento de los clientes de Siesa ya utiliza soluciones en la nube." height="4147" width="6221"/><p>El siguiente paso es ampliar el uso de inteligencia artificial. Pava asegura que los clientes están demandando cada vez más herramientas de analítica de datos apoyadas en esta tecnología. Por esa razón, Siesa trabaja en nuevos productos y en modificaciones de los existentes, en medio de un proceso de transformación tecnológica que continuará durante 2027.</p><p>La empresa también está utilizando inteligencia artificial para acelerar el <a href="https://www.semana.com/semanaplay/empresas-que-hacen-historia/articulo/accesspark-la-apuesta-colombiana-por-transformar-los-parqueaderos-con-tecnologia/202635/" target="_blank" rel="noreferrer" title="https://www.semana.com/semanaplay/empresas-que-hacen-historia/articulo/accesspark-la-apuesta-colombiana-por-transformar-los-parqueaderos-con-tecnologia/202635/">desarrollo de software</a> y la formación de sus equipos. Pava considera que, al menos en esta etapa, estas herramientas están aumentando la productividad de los trabajadores más que sustituyéndolos.</p><h2>Desarrollo desde Colombia</h2><p>Siesa tiene más de 1.000 colaboradores y mantiene en Colombia sus procesos de desarrollo, implementación y soporte. Una característica particular de su modelo, de acuerdo con Pava, es la combinación de conocimiento contable y tecnológico. Parte de los profesionales que trabajan en desarrollo tienen formación inicial como contadores y, posteriormente, aprendieron programación y lenguajes de computación.</p><p>“<b>No es un desarrollador de software que aprende de contabilidad; es un contador que aprende de software</b>”, explicó.</p><p>Pava sostiene que Colombia dispone actualmente de suficiente talento para el sector tecnológico y que la oferta y la demanda de desarrolladores se encuentran relativamente equilibradas. Para una empresa de software, agrega, la competitividad del país depende menos de infraestructura física como carreteras o costos logísticos y más de factores como conectividad, disponibilidad de talento y acceso a capital.</p><p>Aunque Colombia continúa siendo ampliamente el principal mercado, Siesa ha extendido su operación por América Latina. La empresa comenzó su internacionalización durante una etapa en la que fue adquirida por un grupo mexicano. Actualmente, tiene oficinas en Perú y Ecuador y presencia comercial en mercados como México, Panamá, Costa Rica, Guatemala, República Dominicana y Uruguay. En total, Pava señala que llegan a 17 países.</p><p>Sin embargo, el peso de los negocios internacionales todavía es limitado, <b>pues generan alrededor del 5 por ciento de los ingresos de la empresa</b>.</p><p>La estrategia de corto plazo no contempla una expansión acelerada mediante nuevas adquisiciones. Pava afirma que la prioridad es el crecimiento orgánico y acompañar a los clientes colombianos que amplían sus operaciones hacia otros mercados de la región.</p><h2>Un socio clave</h2><p>En diciembre de 2024, Advent International adquirió una participación mayoritaria en Siesa. El socio fundador conserva una participación relevante en la empresa.</p><p>Con este apalancamiento, la compañía busca seguir creciendo y haciéndoles frente a desafíos como los cambios regulatorios que afectan las labores contables.</p><p><a href="https://www.semana.com/economia/empresas/articulo/reforma-laboral-un-ano-despues-mas-costos-mas-tramites-y-reglas-aun-incompletas/202600/" target="_blank" rel="noreferrer" title="https://www.semana.com/economia/empresas/articulo/reforma-laboral-un-ano-despues-mas-costos-mas-tramites-y-reglas-aun-incompletas/202600/">Reformas laborales</a>, ajustes al salario mínimo, modificaciones tributarias o nuevas disposiciones sobre nómina obligan a <b>actualizar los sistemas utilizados por las empresas.</b></p><p>Pava asegura que Siesa cuenta con equipos capaces de adaptar rápidamente el software a las nuevas reglas. Como ejemplo, menciona las recientes modificaciones en la jornada laboral y en los costos de horas extra. La compañía desarrolló herramientas para que sus clientes pudieran administrar mejor las horas disponibles de sus trabajadores.</p><p>En materia de crecimiento, Pava señala que el comportamiento de Siesa está estrechamente relacionado con el desempeño general de las empresas y de la economía colombiana. Para los próximos años, <b>la prioridad será continuar desarrollando productos, ampliar las capacidades de inteligencia artificial y analítica y crecer sobre la base actual de clientes.</b></p><p>Frente al nuevo Gobierno, Pava plantea como prioridades para fomentar más empresas como Siesa, mejorar las condiciones para atraer fondos de inversión privada y ampliar las alternativas de financiación, pues esos han sido dos de los obstáculos tradicionales al emprender.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LBJBLQMV5BBSLNNTIZXSGTRCSA.jpg?auth=9673a3afe9c8c501b0bbdb6ea6dee2fd409c05a69b5b3bd30634c30517ba6dc5&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Vicente Pava, CEO de Siesa, es colombiano, pero trabajó 25 años en Estados Unidos. Regresó al país para ponerse al frente de una firma con 45 años en el mercado y que nació en un garaje por iniciativa de dos profesionales que, saliendo de la universidad, decidieron montar una empresa de software.]]></media:description></media:content></item><item><title><![CDATA[“La comunidad nos había suplicado una ayuda”: concejal de Bogotá celebra operativo contra el mal parqueo de taxis en Colina]]></title><link>https://www.semana.com/vehiculos/articulo/la-comunidad-nos-habia-suplicado-una-ayuda-concejal-de-bogota-celebra-operativo-contra-el-mal-parqueo-de-taxis-en-colina/202617/</link><guid isPermaLink="true">https://www.semana.com/vehiculos/articulo/la-comunidad-nos-habia-suplicado-una-ayuda-concejal-de-bogota-celebra-operativo-contra-el-mal-parqueo-de-taxis-en-colina/202617/</guid><dc:creator><![CDATA[Camilo Eduardo Velásquez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:58:17 +0000</pubDate><content:encoded><![CDATA[<p><a href="https://www.semana.com/vehiculos/articulo/se-habilitaria-alternativa-tecnologica-para-multar-a-conductores-en-bogota-con-nuevas-fotomultas-detalles-y-llamado-a-galan-en-semana/202631/" target="_blank" rel="" title="https://www.semana.com/vehiculos/articulo/se-habilitaria-alternativa-tecnologica-para-multar-a-conductores-en-bogota-con-nuevas-fotomultas-detalles-y-llamado-a-galan-en-semana/202631/">El concejal de Bogotá, Juan David Quintero,</a> celebró en sus redes sociales un operativo de la Secretaría de Movilidad <b>en el que inmovilizaron algunos taxis que estaban estacionados frente a un reconocido centro comercial del barrio Colina,</b> en el norte de Bogotá.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">ME PEDÍAN QUE QUITÁRAMOS LOS TAXIS EN COLINA Y LO LOGRAMOS 🚨<br><br>Aquí si trabajamos por la gente 😎 nuestro control político si sirve.<br><br>La comunidad nos había suplicado una ayuda por el mal Parqueo en el sector del parque de la colina, atendimos la denuncia y la <a href="https://x.com/SectorMovilidad?ref_src=twsrc%5Etfw">@SectorMovilidad</a>… <a href="https://t.co/VD7UNI3NVt">pic.twitter.com/VD7UNI3NVt</a></p>&mdash; Juan David Quintero (@JD_Quinteror) <a href="https://x.com/JD_Quinteror/status/2101088292347257106?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>De acuerdo con el relato de Quintero, esta recuperación del espacio vial se originó en una denuncia ciudadana en la que se solicitó la atención del concejal, quien posteriormente hizo el llamado a la Secretaría para que esta finalmente se ocupara de la situación.</p><p>“La comunidad nos había suplicado una ayuda por el mal parqueo en el sector del parque de la Colina;<b> atendimos la denuncia y la Secretaría de Movilidad nos escuchó para realizar un operativo</b>”, relató el cabildante en su trino.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">ME PEDÍAN QUE QUITÁRAMOS LOS TAXIS EN COLINA Y LO LOGRAMOS 🚨<br><br>Aquí si trabajamos por la gente 😎 nuestro control político si sirve.<br><br>La comunidad nos había suplicado una ayuda por el mal Parqueo en el sector del parque de la colina, atendimos la denuncia y la <a href="https://x.com/SectorMovilidad?ref_src=twsrc%5Etfw">@SectorMovilidad</a>… <a href="https://t.co/VD7UNI3NVt">pic.twitter.com/VD7UNI3NVt</a></p>&mdash; Juan David Quintero (@JD_Quinteror) <a href="https://x.com/JD_Quinteror/status/2101088292347257106?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p><b>La secretaría confirmó a </b><i><b>SEMANA</b></i><b> que se terminaron inmovilizando 4 taxis procesados por la infracción estipulada con el código C02 del Código Nacional de Tránsito, </b>que castiga estacionar un vehículo en sitios prohibidos.</p><p>Esta legislación en mención establece que <a href="https://www.semana.com/vehiculos/articulo/estas-son-las-multas-que-un-conductor-puede-recibir-si-no-paga-la-zona-de-parqueo-pago-en-bogota-en-2026/202610/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/estas-son-las-multas-que-un-conductor-puede-recibir-si-no-paga-la-zona-de-parqueo-pago-en-bogota-en-2026/202610/">los propietarios o tenedores de estos vehículos sean expuestos a multas equivalentes a los 15 salarios mínimos legales diarios vigentes (SMLDV), lo que en este 2026 se traduce en $875.452.</a> A este gasto se suman las adiciones por los gastos de la grúa y los patios.</p><p>De acuerdo con la norma, <b>si el conductor está presente en el lugar al momento de la intervención, la autoridad debe imponer el comparendo, pero no se debe inmovilizar el vehículo (se le permite retirarlo), </b>pero si el conductor no estaba presente o se rehusó a acatar la orden de moverlo, el agente puede proceder al traslado a los patios.</p><p>Este operativo no es ajeno en la ciudad; el Distrito ha llevado varios a cabo en el último año en varios sectores donde se han identificado ciudadanos mal parqueados.</p><p>Los denunciantes y la Alcaldía de Bogotá coinciden en que <b>los vehículos que están parqueados en estas avenidas principales provocan una congestión vial que complica el tráfico</b> y a la ciudadanía en general.</p><p>En contraste, usuarios en redes que se identifican como taxistas defendieron su labor señalando que solo buscan “ganarse la vida como el resto de los ciudadanos”.</p><p>La polémica sigue en debate, pero lo cierto es que la infracción que denunció el concejal está estipulada en la legislación colombiana, por lo que las autoridades tienen la facultad para operar.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XUEA46JQG5BWTPU4DQWQXJ7PZI.jpg?auth=5da80ba6d91229fa405c6e5481d599ec4e1785c66efab828fbef8835ca210c38&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[El operativo fue coordinado por la Secretaría de Movilidad.]]></media:description></media:content></item><item><title><![CDATA[Números y signo ganador de Super Astro Luna este viernes, 18 de septiembre]]></title><link>https://www.semana.com/loterias/articulo/numeros-y-signo-ganador-de-super-astro-luna-este-viernes-18-de-septiembre/202610/</link><guid isPermaLink="true">https://www.semana.com/loterias/articulo/numeros-y-signo-ganador-de-super-astro-luna-este-viernes-18-de-septiembre/202610/</guid><dc:creator><![CDATA[Miguel Alejandro Cruz Ruiz]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:58:10 +0000</pubDate><content:encoded><![CDATA[<p>Durante la noche de este viernes, 18 de septiembre, se realizó un nuevo sorteo de <a href="https://www.semana.com/noticias/super-astro-luna/" target="_blank" rel="" title="https://www.semana.com/noticias/super-astro-luna/"><b>Super Astro Luna</b></a>, que ofrece un premio de hasta 42.000 veces el monto apostado.</p><p>Durante la transmisión oficial por <i>Canal 1</i>, se dio a conocer que el premio mayor fue para el número <b>4808</b>, acompañado por el signo <b>Tauro.</b></p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/H2qb0-y-cK0?si=40OPhGw3bhAFuId1" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p>Miles de colombianos ponen a prueba su suerte con la posibilidad de ganar millones de pesos al acertar la cifra completa, en el mismo orden de las balotas, junto con el signo zodiacal elegido.</p><p><b>El próximo sorteo de Super Astro Luna tendrá lugar el próximo sábado 19 de septiembre.</b> El sorteo será transmitido en vivo por televisión a través de <i>Canal 1</i>, mientras que los resultados podrán consultarse en la página oficial de Super Astro.</p><h2>Premios y modalidades de apuesta</h2><p>El Super Astro Luna ofrece niveles de premios según el número de aciertos:</p><ul><li><b>4 cifras + signo zodiacal:&nbsp;</b>gana 42.000 veces el monto apostado.</li><li><b>3 cifras + signo zodiacal:</b>&nbsp;gana 1.000 veces la apuesta.</li><li><b>2 cifras + signo zodiacal:&nbsp;</b>gana 100 veces la apuesta.</li></ul><h2>Cómo jugar al Super Astro Luna</h2><p>Participar en el Super Astro Luna es fácil y rápido:</p><ul><li><b>Escoger un número:&nbsp;</b>El jugador debe seleccionar un número de cuatro cifras, entre 0000 y 9999.</li><li><b>Asociar un signo zodiacal:</b>&nbsp;Cada número se vincula a uno de los 12 signos del zodiaco: Aries, Tauro, Géminis, Cáncer, Leo, Virgo, Libra, Escorpio, Sagitario, Capricornio, Acuario o Piscis.</li></ul><p>El valor de la apuesta mínima es de 500 pesos, mientras que la máxima puede ser de 10.000 pesos por jugada.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/OLP6OTK2XVDVFKU5JRE4FLMPD4.png?auth=fb80588302bff22d4b69fb65843c9f1ebbf244dc02928c090db5e8040a5f74d1&amp;smart=true&amp;width=1920&amp;height=1080" type="image/png" height="1080" width="1920"><media:description type="plain"><![CDATA[Así fue el más reciente sorteo de Super Astro Luna.]]></media:description></media:content></item><item><title><![CDATA[James Rodríguez no olvida la Selección Colombia: habló tras su retiro y conmovió al país]]></title><link>https://www.semana.com/deportes/articulo/james-rodriguez-no-olvida-la-seleccion-colombia-hablo-tras-su-retiro-y-conmovio-al-pais/202634/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/james-rodriguez-no-olvida-la-seleccion-colombia-hablo-tras-su-retiro-y-conmovio-al-pais/202634/</guid><dc:creator><![CDATA[Miguel Alejandro Cruz Ruiz]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:56:34 +0000</pubDate><content:encoded><![CDATA[<p><b>Lo que diga </b><a href="https://www.semana.com/noticias/james-rodriguez/" target="_blank" rel="" title="https://www.semana.com/noticias/james-rodriguez/"><b>James Rodríguez</b></a><b>, de ahora en adelante, será palabra de exjugador de Selección Colombia</b>. El 10 anunció su retiro de La Tricolor, pero no olvida los colores que defendió a muerte.</p><p>Hoy, la carrera deportiva de James Rodríguez se centra en brillar con <a href="https://www.semana.com/noticias/atletico-nacional/" target="_blank" rel="" title="https://www.semana.com/noticias/atletico-nacional/"><b>Atlético Nacional</b></a>. De hecho, en una entrevista con los canales oficiales del cuadro verde, dejó unas declaraciones que conmovieron a varios hinchas de la Selección Colombia.</p><h2>James: “Yo lo único que intenté fue hacer feliz a todo un país”</h2><p>Días después de su debut con Nacional, y de la primera convocatoria de la Selección Colombia que salió desde su retiro, James ya habla del combinado cafetero en pasado y con las experiencias que tuvo.</p><p>“<b>Yo lo único que intenté fue hacer feliz a todo un país, darlo todo por esa camiseta, fueron 15 años, casi 16</b>. Intentaba hacer el trabajo mío, ganar y eso va de la mano para hacer feliz a todo un país”, arrancó afirmando James Rodríguez.</p><p>Y añadió: <b>“Los hinchas no me deben nada, al contrario, agradecerles a ellos por todo el cariño que me dan</b>, por todo el cariño que me han mostrado estas últimas horas”.</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/J77fHvI2Aso?si=x3n3BMKCV_S42EsX" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><h2>James Rodríguez se centra en el FPC</h2><p><a href="https://www.semana.com/deportes/articulo/primera-asistencia-de-james-rodriguez-con-atletico-nacional-su-zurda-dio-el-gol-salvador-en-el-campin/202651/" target="_blank" rel="" title="https://www.semana.com/deportes/articulo/primera-asistencia-de-james-rodriguez-con-atletico-nacional-su-zurda-dio-el-gol-salvador-en-el-campin/202651/">James Rodríguez debutó oficialmente, con Atlético Nacional, el pasado miércoles 16 de septiembre</a>. Ese día ingresó en el segundo tiempo, influyó en dos goles, y ayudó para que el verde le ganara a Internacional de Bogotá.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">🟢⚽🤩 ¡APARECIÓ LA MAGIA DE JAMES PARA DARLE LA VICTORIA A NACIONAL! <br><br>Gran centro para que Zapata definiera y aseguraran el triunfo 3-2 contra Internacional de Bogotá.<a href="https://x.com/hashtag/LALIGAxWIN?src=hash&amp;ref_src=twsrc%5Etfw">#LALIGAxWIN</a> <a href="https://t.co/woPkZPmkfH">pic.twitter.com/woPkZPmkfH</a></p>&mdash; Win Sports (@WinSportsTV) <a href="https://x.com/WinSportsTV/status/2100427879146287234?ref_src=twsrc%5Etfw">September 17, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>Fue una verdadera fiesta de los hinchas de Nacional en el estadio Nemesio Camacho El Campín de Bogotá. No solo por el triunfo, pues antes realizaron una extraordinaria bienvenida a sus jugadores, misma de la que fue testigo James.</p><p>“Estoy feliz, son muchos años fuera, desde el 2007, y ver todo ese cariño fue algo único. Eso quiere decir que he hecho las cosas bien durante muchos años y le he dado felicidad a mucha gente, a un país entero durante muchos años”, soltó James.</p><p>Y sobre la importancia de Nacional, afirmó: <b>“Impone todo lo que ha ganado este club, todos los títulos, es un club histórico</b>. Espero hacer historia aquí también”.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZJ6G37YEWFGCHBKLU4DFKHE6VE.png?auth=4bae5417d6240fddb4fd9b5ee432d36c5e8f2f7452371b58a8a9eb449c3298c2&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Nueva declaración de James Rodríguez, sobre la Selección Colombia, pero ahora desde el retiro.]]></media:description></media:content></item><item><title><![CDATA[Harry Kane rescata públicamente a Luis Díaz: la declaración que resuena en Bayern Múnich]]></title><link>https://www.semana.com/deportes/articulo/harry-kane-rescata-publicamente-a-luis-diaz-la-declaracion-que-resuena-en-bayern-munich/202648/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/harry-kane-rescata-publicamente-a-luis-diaz-la-declaracion-que-resuena-en-bayern-munich/202648/</guid><dc:creator><![CDATA[Miguel Alejandro Cruz Ruiz]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:44:48 +0000</pubDate><content:encoded><![CDATA[<p><a href="https://www.semana.com/noticias/harry-kane/" target="_blank" rel="" title="https://www.semana.com/noticias/harry-kane/"><b>Harry Kane</b></a><b> es el hombre del momento en Bayern Múnich</b>. Este viernes, 18 de septiembre, y luego del doblete que le hizo a Unión Berlín en el aplastante 7-0, el delantero inglés llegó a 101 goles en Bundesliga.</p><p>Es una marca realmente extraordinaria para Kane, que se consolida en <a href="https://www.semana.com/noticias/bayern-munich/" target="_blank" rel="" title="https://www.semana.com/noticias/bayern-munich/"><b>Bayern Múnich</b></a> y ha manifestado públicamente querer seguir en el club bávaro. Sin embargo, Harry reconoce que no pudo lograr la marca solo.</p><p>Es justo ahí donde aparece <a href="https://www.semana.com/noticias/luis-diaz/" target="_blank" rel="" title="https://www.semana.com/noticias/luis-diaz/"><b>Luis Díaz</b></a>, pues el guajiro ha sido fundamental para que Harry Kane logre varios de los 101 goles en Bundesliga. Por tanto, el atacante inglés, de 33 años, rescató al guajiro delante de la prensa.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/YYSBFBCYIJB3VIKZSPCO5GZDCM.jpg?auth=8a2a7287d111b13d15a778acac329e844f685292e4ed9c1ff367ee1e4f020b47&smart=true&width=3418&height=1922" alt="Harry Kane y Luis Díaz, compañeros de primer nivel en Bayern Múnich." height="1922" width="3418"/><h3>Lo que dijo Harry Kane sobre Luis Díaz</h3><p>“Hemos estado ganando partidos y marcando goles recientemente, pero no hemos alcanzado del todo nuestro mejor nivel, así que fue agradable llegar a este nivel hoy, especialmente justo antes del parón internacional”, dijo Harry Kane, a la prensa alemana, después del partido ante Unión Berlín.</p><p>Y sobre la marca de los 101 goles,<b> dijo que jugar con futbolistas como Luis Díaz le da chances de marcar</b>. También rescató la labor de Olise y Musiala.</p><p>“Estoy muy orgulloso, haber marcado 101 goles en la Bundesliga en tan poco tiempo. He disfrutado cada segundo de ello. <b>Jugar con Michael, Lucho, Jamal, sé que tendré oportunidades (de gol)</b>. Gracias al equipo y al club. Es una gran estadística para tener. Sigamos así”, soltó Kane.</p><p><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Harry Kane: &quot;We&#39;ve been winning games and scoring goals recently but didn&#39;t quite reach our top level - so it was nice to get to this level today, especially right before the international break&quot;<br><br>On reaching 101 Bundesliga goals: &quot;I&#39;m very proud, scoring 101 Bundesliga goals in… <a href="https://t.co/ICENvXhaSE">pic.twitter.com/ICENvXhaSE</a></p>&mdash; Bayern &amp; Germany (@iMiaSanMia) <a href="https://x.com/iMiaSanMia/status/2101051097775276462?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>Son palabras que llegan en un momento ideal para Luis Díaz, pues<a href="https://www.semana.com/deportes/articulo/dia-negro-para-luis-diaz-faena-del-bayern-munich-sin-el-guajiro-en-bundesliga/202657/" target="_blank" rel="" title="https://www.semana.com/deportes/articulo/dia-negro-para-luis-diaz-faena-del-bayern-munich-sin-el-guajiro-en-bundesliga/202657/"> el guajiro no anda bien en Bayern Múnich</a>. La falta de goles y asistencias hacen que Lucho sea blanco de críticas en Alemania.</p><p>De hecho, <a href="https://www.semana.com/deportes/articulo/hay-razon-detras-de-la-no-convocatoria-a-luis-diaz-nestor-lorenzo-revelo-la-llamada-que-tuvieron/202635/" target="_blank" rel="" title="https://www.semana.com/deportes/articulo/hay-razon-detras-de-la-no-convocatoria-a-luis-diaz-nestor-lorenzo-revelo-la-llamada-que-tuvieron/202635/">Luis Díaz se quedó fuera de la reciente convocatoria de la Selección Colombia</a>. Aunque parecía un indispensable, Néstor Lorenzo afirmó que prefiere esperarlo para que recupere forma y nivel.</p><h2>Más de lo que dijo Harry Kane</h2><p>“Ha sido estupendo ofrecer una actuación así antes del parón por los partidos internacionales. Precisamente antes de este parón de tres semanas, no queríamos dar ningún paso en falso hoy. <b>Nuestra actuación ha sido del más alto nivel de principio a fin. Ahora podemos disfrutarlo”</b>, aseguró Kane.</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/hqgHTU43LdM?si=NTZm63a7Xzv27Rqx" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p>El próximo partido de Bayern Múnich será el 10 de octubre de 2026, cuando visite al Augsburgo por la quinta fecha de la Bundesliga 2026-2027.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/IBU56MMAQZGIJOB6UIHQX2RDWQ.png?auth=cf7ea02a8458ebeb3a8967fd938ae59bad3bbeb95b2378936917cb588e0488df&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Kane mencionó a Luis Díaz en una reciente entrevista, y lo reconoció como uno de los importantes.]]></media:description></media:content></item><item><title><![CDATA[La millonada que la UEFA y Concacaf le piden a la FIFA para salvar a Gianni Infantino y que siga como presidente]]></title><link>https://www.semana.com/deportes/articulo/la-millonada-que-la-uefa-y-concacaf-le-piden-a-la-fifa-para-salvar-a-gianni-infantino-y-que-siga-como-presidente/202609/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/la-millonada-que-la-uefa-y-concacaf-le-piden-a-la-fifa-para-salvar-a-gianni-infantino-y-que-siga-como-presidente/202609/</guid><dc:creator><![CDATA[William Horacio Perilla Gamboa]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:38:09 +0000</pubDate><content:encoded><![CDATA[<p>Los presidentes de la UEFA (Europa) y de la Concacaf (Norteamérica), <b>Alexander Ceferin y Victor Montagliani,</b> respectivamente, se pusieron de acuerdo y lanzaron una ambiciosa estrategia de dinero que podría ser clave en las próximas elecciones a presidente de la FIFA en marzo de 2027.</p><p><a href="https://www.semana.com/deportes/articulo/gianni-infantino-se-antepone-a-las-criticas-con-esto-salio-para-las-siguientes-elecciones-de-la-fifa/202658/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/gianni-infantino-se-antepone-a-las-criticas-con-esto-salio-para-las-siguientes-elecciones-de-la-fifa/202658/"><b>Con Gianni Infantino tambaleando en el cargo,</b></a> ambos mandatarios le solicitaron a la FIFA el reparto de al menos 10 millones de dólares para cada una de las 211 federaciones miembro (Colombia incluida), en un correo que fue enviado al ítalo-suizo en las últimas horas. </p><p>“La FIFA está a punto de cerrar el ciclo 2023-2026 con unas reservas de alrededor de 6.000 millones de dólares, las más importantes de su historia. Sobre esta base, la FIFA debería abonar al menos 10 millones de dólares a cada una de sus 211 asociaciones miembro durante el ciclo 2027-2030, es decir, un importe total de unos 2.100 millones de dólares”, escribieron los dos dirigentes en una carta a la que la Agencia AFP obtuvo copia.</p><p>Esta iniciativa promovida por dos de las confederaciones más críticas con la gestión de Infantino por el escándalo de inversores privados apenas finalizó el Mundial 2026, supone un nuevo episodio en la crisis que sacude el mundo del fútbol, pues esas políticas de Gianni fallaron, la UEFA se opuso férreamente y ahora su cargo como presidente está en riesgo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/VKBMO7XGNBF27D5B5Q4JDB6ONA.jpg?auth=558766101db26122d9ce7a8fa3242a94c212707c2d2c6e1b99a0131deffbfd63&smart=true&width=1280&height=720" alt="El presidente de la Fifa, Gianni Infantino, ante las cámaras." height="720" width="1280"/><p>UEFA y Concacaf, que alegaron haber “examinado la situación financiera y los presupuestos” publicados por la FIFA, cuestionan la legitimidad de este proyecto con privados de por medio en sus eventos, que según la instancia mundial buscaba “liberar el potencial comercial” de su competición estrella (Mundiales).</p><h2>Europa y Norteamérica piden más dinero</h2><p>“La FIFA ya tiene la capacidad de pagar mucho más a sus federaciones miembros a partir de sus propias reservas, sin ninguna cesión de participaciones en sus competiciones y sin pedirles nada a cambio”, aseguran Ceferin y Montagliani.</p><p>“Incluso después de una distribución de este tipo (de al menos 2.100 millones de dólares), las reservas financieras de la FIFA no bajarían de aproximadamente 1.500 millones de dólares en ningún momento durante el próximo ciclo”, añaden los dirigentes.</p><p>A principios de agosto, la UEFA y la Concacaf, así como la AFC asiática, habían tratado de sumar a su causa a la “familia del fútbol” (exjugadores, técnicos, dirigentes), profundamente dividida tras el proyecto abortado.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MS6D3XJD4NCJZEPHE7LNM6EKCA.jpg?auth=4e50edf272a24688929560127993560c29f94ce833bdc15a4bdd7e98169f8994&smart=true&width=988&height=556" alt="Aleksander Ceferin, presidente de la UEFA." height="556" width="988"/><p>La petición puede cambiar el futuro, pues se vislumbran las elecciones a la presidencia de la FIFA en marzo de 2027 con un Ceferin al acecho por la presidencia. Un escrutinio en el que cada voto contará entre las 211 federaciones con derecho a sufragar y donde Infantino ya no tiene la fuerza de años atrás.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/YL6DMRWNZNCANMSN6QUBQMH4UY.jpg?auth=5906f8f367eede1251078e0121191c0a4046f6ac71dd5c74e2b55ae3d80e53bc&amp;smart=true&amp;width=2297&amp;height=1292" type="image/jpeg" height="1292" width="2297"><media:description type="plain"><![CDATA[Presidente de la FIFA, Gianni Infantino]]></media:description><media:credit role="author" scheme="urn:ebu">NurPhoto</media:credit></media:content></item><item><title><![CDATA[¿Por qué no llegan los carros autónomos a Colombia? Este es el vacío legal que ya solucionaron en otros países]]></title><link>https://www.semana.com/vehiculos/articulo/por-que-no-llegan-los-carros-autonomos-a-colombia-este-es-el-vacio-legal-que-ya-solucionaron-en-otros-paises/202624/</link><guid isPermaLink="true">https://www.semana.com/vehiculos/articulo/por-que-no-llegan-los-carros-autonomos-a-colombia-este-es-el-vacio-legal-que-ya-solucionaron-en-otros-paises/202624/</guid><dc:creator><![CDATA[Camilo Eduardo Velásquez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:31:24 +0000</pubDate><content:encoded><![CDATA[<p>Las nuevas invenciones de vehículos autónomos como el <a href="https://www.semana.com/vehiculos/articulo/cualquiera-podra-comprar-el-taxi-autonomo-de-tesla-precio-del-cybercab-y-como-ganar-dinero-con-el/202658/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/cualquiera-podra-comprar-el-taxi-autonomo-de-tesla-precio-del-cybercab-y-como-ganar-dinero-con-el/202658/">Tesla Cybercab</a> ilusionan al mundo sobre las tecnologías futuristas que ya se pueden disfrutar y en Colombia todavía no son una realidad, <b>ya que el Código Nacional de Tránsito exige la capacidad humana validada en la licencia de conducción para quien esté frente a un volante.</b> </p><p>En Colombia hay un vacío en responsabilidad civil y penal, puesto que <b>no existe ninguna ley que contemple quién debe asumir la responsabilidad en un vehículo autónomo y el RUNT no cuenta con categorías para matricular ni expedir licencias de tránsito a </b><a href="https://www.semana.com/vehiculos/articulo/anuncian-investigacion-a-la-recien-salida-tesla-cybercab-por-su-principal-promesa-de-valor/202605/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/anuncian-investigacion-a-la-recien-salida-tesla-cybercab-por-su-principal-promesa-de-valor/202605/"><b>automotores huérfanos de pedales o volante,</b> como ya existen</a> en otros países del mundo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6ECX5S6OK5FDXCQYGNGZJGMPEM.jpg?auth=93c92e072bc6092c0e90ca89ac59c21480c4da08420977398a1804bb3cff336e&smart=true&width=6048&height=4024" alt="Por ejemplo, el Cybercab es un vehículo sin pedales ni volante." height="4024" width="6048"/><p>Ahora bien, si un país quiere apropiar su Código de Tránsito para estos vehículos, debe adoptar el Reglamento Técnico Global para Sistemas de Conducción Automatizada (ADS) de la UNECE (Comisión Económica para Europa de las Naciones Unidas).</p><p>Allí, se exigen los siguientes cuatro requisitos de seguridad:</p><ol><li><b>Desempeño superior al humano:</b> Exigen certificar mediante pruebas de simulación, pistas cerradas y tráfico real que el sistema autónomo responda ante emergencias con mayor precisión y menor margen de error que un conductor humano competente. </li><li><b>Caja negra de datos:</b> Las normativas internacionales señalan que el vehículo debe contar con un sistema de almacenamiento de datos para conducción automatizada, para determinar la responsabilidad en el caso de un accidente.</li><li><b>Ciberseguridad y actualización OTA:</b> Exigen auditorías periódicas a los sistemas de gestión de seguridad informática para blindar el vehículo contra manipulaciones o <i>hackeos</i> remotos. </li><li><b>Marco de responsabilidad jurídica:</b> Un informe del Departamento de Transporte de los Estados Unidos (USDOT) indicó que las leyes locales deben redefinir el concepto de “conductor”, trasladando la responsabilidad civil y penal al desarrollador del software o fabricante del vehículo mientras el sistema automático mantenga el control.</li></ol><h2>Países pioneros donde están permitidos los vehículos autónomos</h2><ul><li><b>Estados Unidos</b></li></ul><p>La Administración Nacional de Seguridad del Tráfico en las Carreteras (NHTSA) detalló que en este país la regulación es de carácter federal, pero descentralizada a nivel estatal, por lo que estados como California, Arizona y Texas permiten la operación comercial de <i>robotaxis</i> nivel 4 (sin conductor).</p><ul><li><b>China</b></li></ul><p>Las metrópolis del país como Pekín, Shanghái y Wuhan tienen zonas de prueba y servicio comercial autorizadas para carros autónomos; así lo confirmó el <b>Ministerio de Industria y Tecnologías de la Información (MIIT)</b>.</p><ul><li><b>Alemania:</b> </li></ul><p>De acuerdo con la Ley de Conducción Autónoma (Autonomes Fahren Gesetzes), este fue el primer país en aprobar el marco legal para permitir el uso comercial regular de vehículos de nivel 4 en zonas de tráfico delimitadas y homologar sistemas de nivel 3.</p><p>Junto a estos, <a href="https://www.semana.com/vehiculos/articulo/uber-lanzo-servicio-de-taxis-autonomos-esta-es-la-ciudad-donde-ya-operan-con-la-novedosa-oferta/202549/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/uber-lanzo-servicio-de-taxis-autonomos-esta-es-la-ciudad-donde-ya-operan-con-la-novedosa-oferta/202549/">también destacan países como Reino Unido y Japón.</a> En estos la legislación otorga exención de responsabilidad penal al usuario en el asiento del conductor cuando el sistema autónomo está activo. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WRND37FX3JHFZPDPWRS7HEAILM.jpg?auth=8acddd1f7d9a7ee74cec0afd4e629c1fef85ac11360a6b4c60e717f9f5fa11c8&amp;smart=true&amp;width=1500&amp;height=1000" type="image/jpeg" height="1000" width="1500"><media:description type="plain"><![CDATA[Ya existen varias marcas que producen estos autos que no necesitan conductor.]]></media:description></media:content></item><item><title><![CDATA[Tabla de reclasificación en Liga BetPlay: así van Nacional, América y Millonarios]]></title><link>https://www.semana.com/deportes/articulo/tabla-de-reclasificacion-en-liga-betplay-asi-van-nacional-america-y-millonarios/202606/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/tabla-de-reclasificacion-en-liga-betplay-asi-van-nacional-america-y-millonarios/202606/</guid><dc:creator><![CDATA[Miguel Alejandro Cruz Ruiz]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:21:06 +0000</pubDate><content:encoded><![CDATA[<p><b>La tabla de reclasificación anual, de la </b><a href="https://www.semana.com/noticias/liga-betplay/" target="_blank" rel="" title="https://www.semana.com/noticias/liga-betplay/"><b>Liga BetPlay 2026</b></a>, es el acumulado que le permite a los equipos de primera división clasificar a torneos internacionales 2027 (Libertadores - Sudamericana).</p><p>Por eso, se trata de una tabla de suma importancia para equipos que no han quedado campeones hasta ahora. De hecho, <b>solo </b><a href="https://www.semana.com/noticias/junior-de-barranquilla/" target="_blank" rel="" title="https://www.semana.com/noticias/junior-de-barranquilla/"><b>Junior de Barranquilla</b></a><b> tiene su cupo asegurado a la Copa Libertadores 2027</b>, por ser campeón en la Liga BetPlay 2026-l.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ASYZTBSZBFECFMA7JN3KX2TB4E.jpeg?auth=fefc3fd0f1289959d2568afddbd6962f6132af3adb088f11bb638e95e367b4f1&smart=true&width=1280&height=854" alt="Por su título en la Liga BetPlay 2026-l, Junior de Barranquilla es el único equipo con cupo fijo en Copa Libertadores 2027" height="854" width="1280"/><p>Equipos como Atlético Nacional, América de Cali y Millonarios no descuidan la tabla de reclasificación. Sin embargo, de esos tres históricos, hay unos que van mejores que otros.</p><h2>Así va la Tabla de reclasificación en Liga BetPlay 2026</h2><p>Debido al terremoto del pasado 10 de agosto en Colombia, aún hay varias fechas pendientes en el todos contra todos de la Liga BetPlay 2026-ll.</p><p>Sin embargo, ya se le puede dar una mirada a cómo van los equipos en la tabla de reclasificación anual, misma que suma los puntajes de los equipos tanto en el primer como en el segundo semestre.</p><p><b>De momento, </b><a href="https://www.semana.com/noticias/atletico-nacional/" target="_blank" rel="" title="https://www.semana.com/noticias/atletico-nacional/"><b>Atlético Nacional</b></a><b> es líder de la reclasificación con 73 puntos en 32 juegos</b>. Segundo está <a href="https://www.semana.com/noticias/america-de-cali/" target="_blank" rel="" title="https://www.semana.com/noticias/america-de-cali/"><b>América de Cali</b></a> con 54 puntos en 30 juegos, mientras el top tres lo cierra Deportes Tolima con 53 puntos en 32 juegos.</p><p><div style="width:100%; overflow-x:auto; margin:20px 0;">
  <table style="width:100%; min-width:800px; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14px;">
    <thead>
      <tr style="background:#062b5c; color:#fff; border-bottom:2px solid #062b5c;">
        <th style="padding:10px 8px; text-align:center;">POS</th>
        <th style="padding:10px 8px; text-align:left;">EQUIPO</th>
        <th style="padding:10px 8px; text-align:center;">PT</th>
        <th style="padding:10px 8px; text-align:center;">PJ</th>
        <th style="padding:10px 8px; text-align:center;">PG</th>
        <th style="padding:10px 8px; text-align:center;">PE</th>
        <th style="padding:10px 8px; text-align:center;">PP</th>
        <th style="padding:10px 8px; text-align:center;">GF</th>
        <th style="padding:10px 8px; text-align:center;">GC</th>
        <th style="padding:10px 8px; text-align:center;">DG</th>
      </tr>
    </thead>

    <tbody>
      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">1</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Atlético Nacional</strong></td>
        <td style="text-align:center;"><strong>73</strong></td>
        <td style="text-align:center;">32</td><td style="text-align:center;">24</td><td style="text-align:center;">1</td><td style="text-align:center;">7</td><td style="text-align:center;">66</td><td style="text-align:center;">27</td><td style="text-align:center;">+39</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">2</td>
        <td style="padding:9px 8px;text-align:left;"><strong>América de Cali</strong></td>
        <td style="text-align:center;"><strong>54</strong></td>
        <td style="text-align:center;">30</td><td style="text-align:center;">16</td><td style="text-align:center;">6</td><td style="text-align:center;">8</td><td style="text-align:center;">46</td><td style="text-align:center;">25</td><td style="text-align:center;">+21</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">3</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Deportes Tolima</strong></td>
        <td style="text-align:center;"><strong>53</strong></td>
        <td style="text-align:center;">32</td><td style="text-align:center;">15</td><td style="text-align:center;">8</td><td style="text-align:center;">9</td><td style="text-align:center;">43</td><td style="text-align:center;">31</td><td style="text-align:center;">+12</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">4</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Independiente Santa Fe</strong></td>
        <td style="text-align:center;"><strong>48</strong></td>
        <td style="text-align:center;">31</td><td style="text-align:center;">11</td><td style="text-align:center;">15</td><td style="text-align:center;">5</td><td style="text-align:center;">47</td><td style="text-align:center;">33</td><td style="text-align:center;">+14</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">5</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Junior F.C.</strong></td>
        <td style="text-align:center;"><strong>47</strong></td>
        <td style="text-align:center;">32</td><td style="text-align:center;">13</td><td style="text-align:center;">8</td><td style="text-align:center;">11</td><td style="text-align:center;">46</td><td style="text-align:center;">41</td><td style="text-align:center;">+5</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">6</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Once Caldas DAF</strong></td>
        <td style="text-align:center;"><strong>46</strong></td>
        <td style="text-align:center;">30</td><td style="text-align:center;">11</td><td style="text-align:center;">13</td><td style="text-align:center;">6</td><td style="text-align:center;">46</td><td style="text-align:center;">36</td><td style="text-align:center;">+10</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">7</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Millonarios F.C.</strong></td>
        <td style="text-align:center;"><strong>42</strong></td>
        <td style="text-align:center;">29</td><td style="text-align:center;">11</td><td style="text-align:center;">9</td><td style="text-align:center;">9</td><td style="text-align:center;">43</td><td style="text-align:center;">31</td><td style="text-align:center;">+12</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">8</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Independiente Medellín</strong></td>
        <td style="text-align:center;"><strong>42</strong></td>
        <td style="text-align:center;">27</td><td style="text-align:center;">12</td><td style="text-align:center;">6</td><td style="text-align:center;">9</td><td style="text-align:center;">41</td><td style="text-align:center;">34</td><td style="text-align:center;">+7</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">9</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Deportivo Cali</strong></td>
        <td style="text-align:center;"><strong>39</strong></td>
        <td style="text-align:center;">27</td><td style="text-align:center;">10</td><td style="text-align:center;">9</td><td style="text-align:center;">8</td><td style="text-align:center;">31</td><td style="text-align:center;">24</td><td style="text-align:center;">+7</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">10</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Deportivo Pasto</strong></td>
        <td style="text-align:center;"><strong>39</strong></td>
        <td style="text-align:center;">30</td><td style="text-align:center;">11</td><td style="text-align:center;">6</td><td style="text-align:center;">13</td><td style="text-align:center;">37</td><td style="text-align:center;">43</td><td style="text-align:center;">-6</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">11</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Internacional de Bogotá</strong></td>
        <td style="text-align:center;"><strong>39</strong></td>
        <td style="text-align:center;">31</td><td style="text-align:center;">9</td><td style="text-align:center;">12</td><td style="text-align:center;">10</td><td style="text-align:center;">41</td><td style="text-align:center;">50</td><td style="text-align:center;">-9</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">12</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Atlético Bucaramanga</strong></td>
        <td style="text-align:center;"><strong>37</strong></td>
        <td style="text-align:center;">27</td><td style="text-align:center;">8</td><td style="text-align:center;">13</td><td style="text-align:center;">6</td><td style="text-align:center;">38</td><td style="text-align:center;">28</td><td style="text-align:center;">+10</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">13</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Águilas Doradas</strong></td>
        <td style="text-align:center;"><strong>37</strong></td>
        <td style="text-align:center;">27</td><td style="text-align:center;">9</td><td style="text-align:center;">10</td><td style="text-align:center;">8</td><td style="text-align:center;">32</td><td style="text-align:center;">37</td><td style="text-align:center;">-5</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">14</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Llaneros F.C.</strong></td>
        <td style="text-align:center;"><strong>33</strong></td>
        <td style="text-align:center;">28</td><td style="text-align:center;">7</td><td style="text-align:center;">12</td><td style="text-align:center;">9</td><td style="text-align:center;">28</td><td style="text-align:center;">32</td><td style="text-align:center;">-4</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">15</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Fortaleza</strong></td>
        <td style="text-align:center;"><strong>30</strong></td>
        <td style="text-align:center;">28</td><td style="text-align:center;">6</td><td style="text-align:center;">12</td><td style="text-align:center;">10</td><td style="text-align:center;">32</td><td style="text-align:center;">39</td><td style="text-align:center;">-7</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">16</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Jaguares F.C.</strong></td>
        <td style="text-align:center;"><strong>25</strong></td>
        <td style="text-align:center;">27</td><td style="text-align:center;">6</td><td style="text-align:center;">7</td><td style="text-align:center;">14</td><td style="text-align:center;">29</td><td style="text-align:center;">47</td><td style="text-align:center;">-18</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">17</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Cúcuta Deportivo</strong></td>
        <td style="text-align:center;"><strong>25</strong></td>
        <td style="text-align:center;">28</td><td style="text-align:center;">5</td><td style="text-align:center;">10</td><td style="text-align:center;">13</td><td style="text-align:center;">31</td><td style="text-align:center;">50</td><td style="text-align:center;">-19</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">18</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Alianza Valledupar F.C.</strong></td>
        <td style="text-align:center;"><strong>25</strong></td>
        <td style="text-align:center;">28</td><td style="text-align:center;">5</td><td style="text-align:center;">10</td><td style="text-align:center;">13</td><td style="text-align:center;">21</td><td style="text-align:center;">43</td><td style="text-align:center;">-22</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">19</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Boyacá Chicó F.C.</strong></td>
        <td style="text-align:center;"><strong>25</strong></td>
        <td style="text-align:center;">27</td><td style="text-align:center;">7</td><td style="text-align:center;">4</td><td style="text-align:center;">16</td><td style="text-align:center;">22</td><td style="text-align:center;">47</td><td style="text-align:center;">-25</td>
      </tr>

      <tr style="border-bottom:1px solid #ddd;">
        <td style="padding:9px 8px;text-align:center;">20</td>
        <td style="padding:9px 8px;text-align:left;"><strong>Deportivo Pereira</strong></td>
        <td style="text-align:center;"><strong>17</strong></td>
        <td style="text-align:center;">27</td><td style="text-align:center;">2</td><td style="text-align:center;">11</td><td style="text-align:center;">14</td><td style="text-align:center;">21</td><td style="text-align:center;">43</td><td style="text-align:center;">-22</td>
      </tr>
    </tbody>
  </table>
</div></p><p>Santa Fe es cuarto con 48 unidades en 31 juegos, Junior es quinto con 47 unidades en 32 compromisos, y Once Caldas es sexto con 46 puntos en 32 partidos jugados.</p><h2>¿Cómo se distribuyen los cupos de los equipos colombianos para la Copa Libertadores 2027?</h2><p>Son cuatro cupos en total. Los dos campeones del año, y los dos mejores de la tabla de reclasificación que no tengan título, van a la Copa Libertadores 2027. </p><p>De momento, y con base en la tabla de reclasificación parcial, así estarían los cupos:</p><ul><li>Campeón de la Liga BetPlay 2026-l: <b>Junior de Barranquilla</b> (va fijo a fase de grupos)</li><li>Campeón de la Liga BetPlay 2026-ll: <b>aún por definir</b></li><li>Líder de la reclasificación sin título de liga: <b>Atlético Nacional (parcialmente)</b></li><li>Segundo de la reclasificación sin título de liga: <b>América de Cali (parcialmente)</b></li></ul><h2>¿Cómo se distribuyen los cupos de los equipos colombianos para la Copa Sudamericana 2027?</h2><p>Son cuatro cupos en total. El campeón de la Copa BetPlay 2026 y los tres mejores de la tabla de reclasificación que no tengan cupo a la Copa Libertadores.</p><p>Los cuatro mencionados van a la Copa Sudamericana 2027. De momento, y con base en la tabla de reclasificación parcial, así estarían los cupos:</p><ul><li>Campeón de la Copa BetPlay 2026: <b>aún por definir</b></li><li>Mejor de la reclasificación sin cupo a Libertadores: <b>Deportes Tolima (parcialmente)</b></li><li>Segundo mejor de la reclasificación sin cupo a Libertadores: <b>Independiente Santa Fe (parcialmente)</b></li><li>Tercero mejor de la reclasificación sin cupo a Libertadores: <b>Once Caldas (parcialmente)</b></li></ul>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4MXKWTCEQFACXOB3IHZBXTZEZU.png?auth=abb5266fc624eb30401c900e0c415ce1dcd1acb3cee1f2641b5b1924436a4980&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Un vistazo a la tabla de reclasificación en Liga BetPlay.]]></media:description></media:content></item><item><title><![CDATA[‘Yo me llamo’: la emotiva presentación de ‘Ricardo Arjona’ que hizo llorar a Elder Dayán y erizó a Amparo Grisales]]></title><link>https://www.semana.com/gente/articulo/yo-me-llamo-la-emotiva-presentacion-de-ricardo-arjona-que-hizo-llorar-a-elder-dayan-y-erizo-a-amparo-grisales/202612/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/yo-me-llamo-la-emotiva-presentacion-de-ricardo-arjona-que-hizo-llorar-a-elder-dayan-y-erizo-a-amparo-grisales/202612/</guid><dc:creator><![CDATA[Valentina Rueda Rodríguez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:17:12 +0000</pubDate><content:encoded><![CDATA[<p>Una nueva gala de eliminación en<b> </b><i><b>Yo me llamo</b></i><b> puso a prueba el talento y la capacidad de interpretación de los concursantes. </b>Amparo Grisales, César Escola y Elder Dayan evaluaron rigurosamente a cada participante en una velada caracterizada por críticas sobre vestuario, técnica vocal y una alta carga emocional sobre el escenario.</p><p>El momento con más impacto de la jornada lo protagonizó el imitador de ‘Ricardo Arjona’. Durante su presentación, el participante<b> logró conectar de manera profunda con la mesa de jurados gracias a su entrega en escena.</b></p><p>Tras finalizar la actuación, Elder Dayan no pudo contener las lágrimas y expresó el impacto que le causó el show: <b>“Tocaste el alma”, afirmó el cantante vallenato. </b></p><p>Por su parte, Amparo Grisales <b>coincidió en que la interpretación le generó una fuerte emoción y aseguró haberse “erizado” durante la presentación. </b></p><p>Ambos jurados destacaron el nivel técnico y sensible del participante, catalogando su intervención como uno de los puntos más altos de la velada.</p><p>A lo largo de la noche, el jurado expuso opiniones divididas en torno a otros participantes. </p><p>La presentación de ‘Yo me llamo Shakira’ generó cuestionamientos por la elección de su atuendo. <b>César Escola indicó que el vestuario no correspondía </b>al nivel exigido para el escenario, calificándolo como <b>“ropa de ensayo”.</b> </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/GHRCMPCS4RC3DCMXLKBDUN6EFY.jpg?auth=c4fca14b629a2c9df923c9c60733c130d0557763df582b3004dec8a0fc46b520&smart=true&width=1179&height=692" alt="César Escola reveló la razón por la que decidió adoptar a su hijo." height="692" width="1179"/><p>Amparo Grisales añadió que, más allá del aspecto físico, a la imitación le hizo falta mayor solidez en la interpretación.</p><p>De manera similar, <b>‘Yo me llamo Paola Jara’ enfrentó posturas encontradas. </b>Mientras Escola valoró el cambio de imagen de la concursante, sugirió que le faltó más energía en el coro. </p><p>Grisales, por el contrario, señaló no percibir evolución en el aspecto vocal y manifestó su inconformidad con el vestuario seleccionado.</p><p>Durante el show de ‘Yo me llamo Pastor López’, quien interpretó el tema <i>Pagarás</i>, Elder Dayan sostuvo que percibió un tono excesivamente nasal en la voz del imitador.</p><p>Por otro lado, ‘Yo me llamo Maluma’ obtuvo comentarios favorables por parte de Escola, quien subrayó la evolución del participante. Grisales coincidió en señalar una buena afinación, aunque advirtió que el imitador debe mejorar el manejo de la respiración en los pasajes susurrados.</p><p>Las mayores objeciones de la noche recayeron sobre las presentaciones de<b> ‘Yo me llamo Felipe Peláez’ y ‘Yo me llamo Juan Gabriel’. </b>En el caso del primero, el jurado coincidió en que le faltó matizar el tono romántico y corregir fallas de nasalidad. </p><p>Respecto al imitador de ‘Juan Gabriel’, Elder Dayan indicó que el participante alteró la melodía de la canción, mientras que Grisales calificó la actuación como “plana”.</p><p>Finalmente, las presentaciones de <b>‘Yo me llamo Soda Stereo’ con </b><i><b>Un millón de años luz</b></i><b> y ‘Yo me llamo Julio Jaramillo’ lograron reconectar al jurado </b>con la emotividad, consolidando una noche exigente que definirá la continuidad de los participantes en la competencia de <i>Caracol Televisión</i>.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/IAVLLYN4ABD4FNZEMN37R7WOOE.jpg?auth=0ff28530e7489b141a351c07188e40f543613b777250d0301a7fead11906ace4&amp;smart=true&amp;width=3264&amp;height=1877" type="image/jpeg" height="1877" width="3264"><media:description type="plain"><![CDATA[La emotiva presentación de ‘Ricardo Arjona’ que hizo llorar a Elder Dayán y erizó a Amparo Grisales.]]></media:description></media:content></item><item><title><![CDATA[Abelardo De La Espriella hizo importante llamado a los alcaldes: “Levanten la mano”]]></title><link>https://www.semana.com/politica/articulo/abelardo-de-la-espriella-hizo-importante-llamado-a-los-alcaldes-levanten-la-mano/202618/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/abelardo-de-la-espriella-hizo-importante-llamado-a-los-alcaldes-levanten-la-mano/202618/</guid><dc:creator><![CDATA[Daniel Armando Méndez Suárez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:13:18 +0000</pubDate><content:encoded><![CDATA[<p>En un pronunciamiento dirigido a los alcaldes de todo el país, <a href="https://www.semana.com/politica/articulo/presidente-abelardo-de-la-espriella-anuncia-cambio-de-la-sede-de-la-dimar-de-bogota-a-cartagena/202651/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/presidente-abelardo-de-la-espriella-anuncia-cambio-de-la-sede-de-la-dimar-de-bogota-a-cartagena/202651/">el presidente de la República, Abelardo De La Espriella,</a> <b>hizo un llamado a la eficiencia administrativa y a la erradicación del exceso de trámites</b>.</p><p>El mandatario enfatizó la necesidad imperiosa de que las administraciones municipales asuman un rol proactivo para destrabar los proyectos de infraestructura y desarrollo social que actualmente se encuentran detenidos por demoras institucionales.</p><p>El jefe de Estado cuestionó con dureza los cuellos de botella generados por el intercambio prolongado de documentación formal entre dependencias públicas.</p><p>Según manifestó De La Espriella, <b>la gestión estatal no puede permitirse perder hasta “seis meses en cruces de oficios administrativos”</b> cuando se presentan dificultades operativas en los territorios, afectando de manera directa la ejecución de las obras prioritarias para las comunidades.</p><h2>“Levanten la mano”: la indicación del presidente</h2><p>Durante su intervención, el mandatario instó a los alcaldes a reportar de manera oportuna los obstáculos técnicos y jurídicos que surjan en la gestión del suelo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/BUPBC3NX2ZFF5KNX2PA4WHPC2M.JPG?auth=7f08669e395ce7d0b2a81c1c03d782b9333cf703787c1196631cf11b3c599bf6&smart=true&width=5271&height=5464" alt="Presidente Abelardo De La Espriella habló sobre la gestión de proyectos en las alcadías locales." height="5464" width="5271"/><p>Entre los aspectos críticos señalados por el mandatario <b>figuran la titulación de predios, la expedición de licencias, la elaboración de estudios de detalle y la cobertura de servicios públicos domiciliarios</b>, requisitos indispensables para el avance de la inversión pública.</p><p>“Levanten la mano, dígannos dónde está el problema”, enfatizó el presidente De La Espriella. La directriz gubernamental apunta a transformar el esquema tradicional de respuesta institucional, <b>fomentando la comunicación directa entre las entidades territoriales y el Gobierno nacional</b> para evitar que la tramitomanía continúe postergando la respuesta a las necesidades insatisfechas de la ciudadanía.</p><h2>Mesas de trabajo con fechas límite</h2><p>Para concretar esta dinámica de trabajo, el mandatario propuso la instalación de mesas de concertación interdisciplinarias que reúnan a todos los actores e instituciones involucradas en cada proyecto. </p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">Menos trámites y más soluciones en las regiones.<br><br>El presidente Abelardo De La Espriella pidió a los alcaldes identificar los obstáculos que frenan los proyectos y llevarlos a una misma mesa de trabajo: responsables, soluciones y fechas límite para resolver. <a href="https://t.co/mr1LQHVOHl">pic.twitter.com/mr1LQHVOHl</a></p>&mdash; Defensores de la Patria (@defensoresco) <a href="https://x.com/defensoresco/status/2101113520456872365?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>El objetivo central de estos encuentros será <b>analizar la problemática puntual y fijar plazos perentorios e inamovibles para su resolución definitiva</b>, garantizando el cumplimiento de los cronogramas establecidos.</p><p>Con esta estrategia, la Presidencia de la República busca dinamizar la gestión pública descentralizada y <b>asegurar que las iniciativas de desarrollo territorial se ejecuten con celeridad y rigor</b>.</p><p>El Gobierno nacional ratificó que mantendrá un seguimiento permanente a las mesas técnicas habilitadas con los alcaldes para verificar el destrabe efectivo de los proyectos en cada región del país.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/J3TR3XPNCZCR7JJARUHTQOTAGQ.jpg?auth=a5335b04f0a472f529835e4949b8da31486ee002dc26236d8a67ea613f6f0f46&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Presidente Abelardo De La Espriella hizo llamado a los alcaldes de Colombia.]]></media:description><media:credit role="author" scheme="urn:ebu">Joel González - Presidencia</media:credit></media:content></item><item><title><![CDATA[Ismael Saibari le da indicaciones a Luis Díaz para salir de la mala racha: pista clave que le puede regresar al gol]]></title><link>https://www.semana.com/deportes/articulo/ismael-saibari-le-da-indicaciones-a-luis-diaz-para-salir-de-la-mala-racha-pista-clave-que-le-puede-regresar-al-gol/202658/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/ismael-saibari-le-da-indicaciones-a-luis-diaz-para-salir-de-la-mala-racha-pista-clave-que-le-puede-regresar-al-gol/202658/</guid><dc:creator><![CDATA[William Horacio Perilla Gamboa]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:12:58 +0000</pubDate><content:encoded><![CDATA[<p>Lesionado en el partido de octavos de final contra Canadá, en el Mundial 2026, lo que ya le impidió jugar los cuartos contra Francia (derrota por 2-0),<b> Ismael Saibari va ganando minutos</b> de juego a medida que su forma física mejora en el Bayern Múnich.</p><p>Contra el Borussia Dortmund en la Supercopa alemana, en la que el Bayern Múnich se impuso 2-1, jugó diez minutos, y otra media hora en el estreno de la Bundesliga contra el Stuttgart (5-1), donde ya dejó muestras de su clase con un par de asistencias.</p><p>Luego llegaron las primeras alineaciones como titular, contra el modesto Osnabrück en la Copa de Alemania (4-1) y frente al Schalke en la Bundesliga (0-0), en el primero como enganche y en el segundo como nueve, dando descanso a Harry Kane. Si por minutos se trata, la estrella de Marruecos sigue mostrándose y aumenta su influencia en una temporada en la que el gigante bávaro espera dominar otra vez.</p><p>En el estreno de Champions League disputó 25 minutos contra el Bodo/Glimt de Noruega (5-0) en el puesto de Jamal Musiala, pero el pasado fin de semana, en la trabajada victoria 2-1 contra el Elversberg, el futbolista formado en Bélgica (Anderlecht, Genk y Malinas) fue titular, ocupando la plaza en el extremo izquierdo, <a href="https://www.semana.com/noticias/luis-diaz/" target="_blank" rel="noreferrer" title="https://www.semana.com/noticias/luis-diaz/"><b>Luis Díaz,</b></a> quien sustituyó al marroquí en el minuto 65.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QINQNY5L2FESJKXO3LKQ6NUE7Q.jpg?auth=a87c8f34cbee9856e78acc4cc4d2696152d662d42369fedff4114ff93fcc1f59&smart=true&width=3095&height=2064" alt="Luis Díaz sigue sin anotar con Bayern Múnich en Bundesliga 2026/2027" height="2064" width="3095"/><p>Con esto, <b>Saibari se muestra como alguien polivalente, </b>multifuncional y de esos jugadores modernos que impactan en las constantes estrategias revolucionarias en el fútbol de Europa. Sin duda, u<a href="https://www.semana.com/deportes/articulo/le-llego-competencia-a-luis-diaz-bayern-munich-acordo-los-terminos-con-su-nuevo-fichaje/202605/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/le-llego-competencia-a-luis-diaz-bayern-munich-acordo-los-terminos-con-su-nuevo-fichaje/202605/">n acierto total del Bayern Múnich en pleno Mundial 2026,</a> pues el marroquí suple en varias posiciones. </p><h2>Saibari le da señales a Luis Díaz</h2><p>Eso sí, habló claro tras el juego ante Unión Berlín por la cuarta fecha de la Bundesliga, donde se reportó con gol en el letal 7-0, <a href="https://www.semana.com/deportes/articulo/bayern-munich-de-luis-diaz-sacude-la-tabla-en-bundesliga-historica-goleada-a-union-berlin/202634/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/bayern-munich-de-luis-diaz-sacude-la-tabla-en-bundesliga-historica-goleada-a-union-berlin/202634/">donde Lucho Díaz no registró goles ni asistencias.</a> En contraste, su compañero Michael Olise se fue triplete y Harry Kane marcó doblete, además de la anotación de Jamal Musiala para sellar el festín en el Allianz Arena.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SZPAL4BPH5FHRO675LDUNPVG5U.jpg?auth=8238ccb75dbc194512ab3ec2963c2b54c114ad25741092392bbed4cb3882b4da&smart=true&width=5315&height=3543" alt="Ismael Saibari, baja de Marruecos para enfrentar a Francia." height="3543" width="5315"/><p>Saibari confesó en qué posición de la cancha se siente mejor y, sin duda, puede explotar las condiciones del guajiro por la banda.</p><p>“Mi posición favorita es la de número 10, eso lo sabe todo el mundo. Pero puedo jugar en diferentes posiciones; de todos modos, durante el partido siempre se va cambiando. También puedo jugar por la banda y un poco más retrasado”, explicó Ismael en zona mixta.</p><p>Lejos de ser una competencia para Luis Díaz, más bien está en el Bayern para apoyarlo. Sus palabras son clave para que Lucho esté atento siempre por la banda, como extremo, para marcarle el pase al 10 y tener más chances de marcar.</p><p>“El Bayern es uno de los clubes más grandes del mundo. Además, su estilo de juego se adapta a mí. Me han dado la confianza necesaria para que pueda crecer aquí”, declaró en su presentación para justificar su fichaje”, agregó Saibari.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/UR3XOOP5HNE6HBQUNQMQF3YPIA.jpg?auth=5e6fb75aa0ab438151aa36faa8c05574671f3fccac17130b320d0c699d3b4738&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Ismael Saibari celebra ante Unión Berlín.]]></media:description><media:credit role="author" scheme="urn:ebu">Mohamed Farag</media:credit></media:content></item><item><title><![CDATA[Peajes que dejan de recaudar, obras  atrasadas, vigencias futuras amarradas, ¿Qué hará la ministra Elsa Noguera con el transporte?]]></title><link>https://www.semana.com/economia/macroeconomia/articulo/peajes-que-dejan-de-recaudar-obras-atrasadas-vigencias-futuras-amarradas-que-hara-la-ministra-elsa-noguera-con-el-transporte/202600/</link><guid isPermaLink="true">https://www.semana.com/economia/macroeconomia/articulo/peajes-que-dejan-de-recaudar-obras-atrasadas-vigencias-futuras-amarradas-que-hara-la-ministra-elsa-noguera-con-el-transporte/202600/</guid><dc:creator><![CDATA[Martha Morales Manchego]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 03:01:00 +0000</pubDate><content:encoded><![CDATA[<p><b>SEMANA: El Gobierno de Abelardo De La Espriella habla de ordenar la casa. En transporte, ¿cuál será la fórmula?</b> </p><p><b>Elsa Noguera</b>: Nuestra fórmula para ordenar la casa es clara: priorizar, destrabar y ejecutar. El país no necesita más obras prometidas sin respaldo financiero, sino terminar las que ya empezó; garantizar que cada peso invertido se convierta en infraestructura al servicio de la gente. Se requieren enormes recursos, pero recibimos un Gobierno en medio de una profunda crisis fiscal. </p><p>En nuestro sector hay un faltante de 5,5 billones de pesos en las vigencias futuras de la ANI, que debían incorporarse al presupuesto de 2027. Frente a ello, proponemos reprogramar esos recursos durante los próximos años, de manera concertada con los concesionarios. </p><p>Vamos a respetar los compromisos adquiridos, proteger la continuidad de los proyectos y cuidar las finanzas públicas. Poner orden es también para que las obras avancen y se terminen.</p><p><b>SEMANA: ¿Cuántas obras encontró atrasadas?</b></p><p><b>E.N.</b>: Encontramos un número importante de proyectos atrasados en ejecución, suspendidos, con problemas financieros y dificultades prediales, ambientales o sociales. También recibimos cerca del 60 por ciento de las vías nacionales a cargo del Invías en mal estado, varios puentes colapsados, concesiones viales recientemente revertidas y cuentas por pagar sin PAC (caja). A esto se suman litigios en la ANI por cerca de 18 billones y reclamaciones por 80 billones. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CDL2HQUQAVANXGXDUBYDTQKLPM.jpg?auth=1f3fcdb994c26be671255cae4723dbcdc20a628b0ea5453649845cb1cdbb2734&smart=true&width=1000&height=530" alt="Vigencias futuras, en la mira." height="530" width="1000"/><p>Si no resolvemos estos problemas, el sector transporte podría terminar quebrando las finanzas de la nación. </p><h2>Así será el desamarre de vigencias futuras</h2><p><b>SEMANA: Se requiere mucha plata y parte de ella proviene de vigencias futuras, que, al parecer, quedaron comprometidas. ¿Qué hará para desamarrarlas? </b></p><p><b>E.N.</b>: Las vigencias futuras son una herramienta indispensable para financiar infraestructura de largo plazo y vamos a honrar los compromisos adquiridos. Pero una vigencia futura no puede convertirse en un recurso congelado durante años mientras la obra no avanza.</p><p>Por eso estamos revisando proyecto por proyecto. Vamos a identificar dónde existen recursos comprometidos a largo plazo que, por el ritmo de ejecución de las obras, pueden reprogramarse y liberar espacio presupuestal para proyectos que sí están en capacidad de avanzar y necesitan recursos. Queremos dejar de tener dineros amarrados en el papel mientras otros proyectos estratégicos esperan financiación.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/27NT3SOK2NFDZB5HAKQSFUTLGM.jpg?auth=0cab5dd4e9c8cf20d7c811af8c8e6ee29ce5e06cd94408472368f8a102c9c73f&smart=true&width=4048&height=2272" alt="Túnel del Toyo, uno de los proyectos de infraestructura vial más ambiciosos, está ubicado en Antioquia." height="2272" width="4048"/><p><b>SEMANA: ¿Cuáles son los tres proyectos más críticos que necesita destrabar?</b></p><p><b>E.N.</b>: En Antioquia se va a destrabar el Túnel del Toyo, y ya iniciamos la instalación de los equipos electromecánicos necesarios para ponerlo en funcionamiento el otro año. Después de visitar los pueblos palafíticos, el Gobierno asumió el compromiso de sacar adelante la vía Barranquilla-Santa Marta, y ya empezamos la obra. Es un corredor clave para conectar los puertos del Caribe y que permitirá la recuperación de los ecosistemas. Además, en los empalmes regionales, las comunidades pidieron reactivar las vías terciarias. Por eso estamos destrabando los convenios suspendidos para mejorar la conectividad rural.</p><h2>Modificación a las APP</h2><p><b>SEMANA:</b> <b>En términos de inversión, cómo rehará la ecuación público-privada (APP) y cuántos recursos espera que se movilicen por esa vía en los 4 años.</b></p><p><b>E</b><b>.N</b>.: Nuestra prioridad es recuperar la confianza del sector privado con reglas claras, respeto por los contratos, cumplimiento de las vigencias futuras y decisiones oportunas. También impulsaremos una modificación a la Ley de APP para ofrecer mayor seguridad jurídica a los inversionistas.</p><p>Me ha sorprendido la cantidad de inversionistas nacionales e internacionales interesados en invertir en Colombia tras la elección del presidente Abelardo de la Espriella. Por eso, creo que podremos atraer capital privado en niveles sin antecedentes para financiar una nueva generación de carreteras, aeropuertos, ferrocarriles, corredores fluviales y centros logísticos.</p><h2>Lo que pasará con los peajes</h2><p><b>SEMANA: ¿Están contemplando cobro de valorizaciones o de otros mecanismos para financiar infraestructura? Por ejemplo, aumentos extraordinarios en peajes</b>...</p><p><b>E.N.</b>: No tenemos planes de aumento de tarifas de peajes, ni tampoco estamos contemplando el cobro de valorización para financiar proyectos de infraestructura. Nuestra prioridad es manejar mejor los recursos existentes y garantizar que los ciudadanos reciban vías seguras y en buen estado a cambio de lo que pagan.</p><p><b>SEMANA: En la política de estatización que se dio en el Gobierno pasado, fueron revertidos varios peajes que manejaban concesiones. ¿Renovará esos contrato</b>s?</p><p><b>E.N.</b>: Recibimos tres corredores que fueron revertidos y quedaron a cargo del Invías. Nuestra prioridad hoy es evitar que se deterioren y garantizar la seguridad de quienes los utilizan. </p><p>Revisaremos cada caso para definir la mejor solución. Podrá ser una nueva concesión, un contrato de operación y mantenimiento o, mientras se toma una decisión definitiva, su manejo por parte del Invías con los recursos necesarios. Escogeremos el modelo que garantice vías bien mantenidas, un buen servicio para los usuarios y el menor costo posible para el país. Todo se hará con reglas claras, transparencia y competencia.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TOR3XWIS7BB27CCCJIXOFGG7UI.jpeg?auth=66abcd5d608a8de7f30afaf622382a1e1ef8af6cde180d89e5bf3109e55d1500&smart=true&width=1600&height=1200" alt="Imágenes de la destrucción del peaje de la vía Cali-Popayán." height="1200" width="1600"/><h2>El revolcón al Código de Tránsito</h2><p><b>SEMANA: Se habla de una ley para cambiar el Código de Tránsito. ¿Qué cobros considera excesivos y cuáles piensa reducir? </b></p><p><b>E.N.</b>: El Código de Tránsito debe salvar vidas y ser justo con la gente. Durante años aumentaron las multas, los cursos y los costos de los trámites, pero la siniestralidad no bajó. </p><p>En cambio, crecieron las deudas de los ciudadanos y el número de vehículos abandonados en los patios porque recuperarlos cuesta más de lo que valen. Revisaremos los costos de licencias, revisión técnico-mecánica, patios, grúas y fotodetección. </p><p>Tendremos sanciones proporcionales, reglas claras y eliminaremos intermediarios que encarecen los trámites sin mejorar la seguridad vial. Esto no significa ser permisivos. </p><p>Seremos firmes frente a conductas que ponen vidas en riesgo, como el exceso de velocidad, conducir bajo los efectos del alcohol o no usar casco y cinturón. Buscamos un código que proteja al buen ciudadano y sancione a quien ponga en riesgo la vida de los demás.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr"><a href="https://x.com/hashtag/Ampliaci%C3%B3n?src=hash&amp;ref_src=twsrc%5Etfw">#Ampliación</a> | Primer golpe del Gobierno a las fotomultas: MinTransporte quitó un “truco” para aplicar comparendos<a href="https://t.co/LomVvtsluI">https://t.co/LomVvtsluI</a></p>&mdash; Revista Semana (@RevistaSemana) <a href="https://x.com/RevistaSemana/status/2098438304991494419?ref_src=twsrc%5Etfw">September 11, 2026</a></blockquote><h2>Más medidas con fotomultas</h2><p><b>SEMANA: Las fotomultas son polémicas. Son vistas como cámaras escondidas con fines recaudatorios y no para la seguridad. ¿Qué </b><b>más</b> <b>hará con ellas</b>?</p><p><b>E.N.</b>: Estamos trabajando para transformar el sistema, de manera que deje de premiar el recaudo y se concentre en prevenir siniestros. Cada cámara deberá tener una justificación técnica, estar autorizada, bien señalizada y ubicada donde exista un verdadero riesgo para la vida y contribuya a reducir la velocidad.</p><p>Los sistemas de fotodetección del país están en revisión y retiraremos los que no cumplan estas condiciones o se utilicen para sorprender al ciudadano. Además, pusimos freno a los “carros cazafotomultas”: sin un agente presente y visible; solo podrán operar con autorización de la Agencia Nacional de Seguridad Vial. La regla será sencilla: cámaras visibles para prevenir, no escondidas para cobrar.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/I5S5VF43ZFBURA53I2YXPSRA2I.jpg?auth=251b3f8bcd463ce6f54406ca472cd7c30d01bc0b476d2259d1322225b4346bc6&smart=true&width=3264&height=1500" alt="Aeropuerto del Café: 50 años de retrasos, suspensiones y problemas contractuales" height="1500" width="3264"/><p><b>SEMANA: Hemos escuchado promesas con modernización de puertos, aeropuertos, vías, pero muchas se quedan en el camino. ¿Cuáles serán sus compromisos?</b></p><p><b>E.N</b>.: Nuestro compromiso es pasar de las promesas a las obras. Primero vamos a terminar y destrabar los proyectos que ya están contratados, y luego priorizaremos nuevas inversiones con estudios, recursos y cronogramas claros. </p><p>Modernizaremos las carreteras para que sean más seguras y estén bien mantenidas, incluidas las vías terciarias que conectan el campo con los mercados. Planearemos aeropuertos modernos y eficientes, con una visión de largo plazo, capaces de atender el crecimiento de pasajeros y carga.</p><p>También recuperaremos los trenes y la navegación por el río Magdalena y otros ríos con potencial. La meta es integrar carreteras, trenes, ríos, puertos y aeropuertos para reducir los tiempos y costos de transporte, mejorar la competitividad y la calidad de vida de los colombianos.</p><p><b>SEMANA: A propósito de vías terciarias, han sido mantra en varios gobiernos. ¿Qué meta propondrá en el Plan de Desarrollo?</b></p><p><b>E.N.</b>: Las vías terciarias serán una prioridad porque conectan a nuestros campesinos con las escuelas, los centros de salud y los mercados. </p><p>No vamos a repetir el error de anunciar miles de kilómetros sin tener los recursos ni la capacidad para cumplir. </p><p>Nuestra meta será realista y no se medirá solo en kilómetros: también contará los puentes y puntos críticos atendidos, el mantenimiento realizado y las comunidades beneficiadas. </p><p>Priorizaremos las obras que más ayuden a reducir la pobreza, aumentar la productividad del campo y facilitar el transporte de alimentos. </p><p>Queremos que cada peso invertido en una vía terciaria se convierta en oportunidades para la gente.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/BC3FRP2QPRDILOSX5DEOB5IRUQ.jpg?auth=5468451d0c9316b5d65592803acf3bcb33cd8333c2b022b268f8168519122576&smart=true&width=3000&height=2000" alt="Perimetral de Oriente es una concesión que fue revertida al Estado por partes. Una la tiene Invías, otra la Gobernación de Cundinamarca y otra el municipio de La Calera." height="2000" width="3000"/><h2>Concesiones con enredos</h2><p><b>SEMANA: ¿Qué propuesta trae para concesiones que tienen problemas financieros, prediales, ambientales o de consultas previas? ¿Alguna está en riesgo?</b></p><p><b>E.N</b>.: Cada concesión tiene problemas distintos y necesita una solución diferente. Si el problema es financiero, revisaremos las fuentes de pago; si faltan predios, aceleraremos su compra y entrega; si hay dificultades ambientales, buscaremos decisiones técnicas oportunas; y si se requieren consultas previas, las adelantaremos respetando los derechos de las comunidades.</p><p>Hay proyectos con alto riesgo, pero antes de decir que una concesión no puede terminarse, agotaremos todas las soluciones legales y contractuales para destrabarla. Eso sí: no habrá cheques en blanco ni renegociaciones que premien incumplimientos. Habrá decisiones que protejan los recursos públicos y eviten que las obras sigan paralizadas.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr"><a href="https://x.com/hashtag/Veh%C3%ADculos?src=hash&amp;ref_src=twsrc%5Etfw">#Vehículos</a> | La vía que priorizará el Gobierno De La Espriella tras el terremoto: así impulsarían las obras en el Pacífico<a href="https://t.co/L1m3tayDjW">https://t.co/L1m3tayDjW</a></p>&mdash; Revista Semana (@RevistaSemana) <a href="https://x.com/RevistaSemana/status/2100363786662158812?ref_src=twsrc%5Etfw">September 16, 2026</a></blockquote><p><b>SEMANA: Dígame cinco grandes obras de infraestructura que este Gobierno quiere dejar terminadas o contratadas en 2030</b>.</p><p><b>E.N.</b>: El Plan Vial del Chocó; la modernización y ampliación de los aeropuertos del país; la navegabilidad del río Magdalena; el Plan Nacional de Vías Terciarias y el corredor férreo desde el interior hasta los puertos del Caribe.</p><p>Estas apuestas representan nuestra visión de una Colombia conectada por carreteras, aeropuertos, trenes y ríos, con obras que reduzcan los costos logísticos y lleven oportunidades a todas las regiones.</p><p><b>SEMANA: El presidente retomó la posibilidad de un corredor interoceánico entre el Caribe y el Pacífico. ¿Es viable?</b></p><p><b>E.N.</b>: El corredor interoceánico es un proyecto muy ambicioso. Actualmente, se encuentra en etapa de prefactibilidad y las estimaciones iniciales señalan que podría costar cerca de 100 billones de pesos. El siguiente paso es realizar los estudios de factibilidad, que permitirán definir el trazado, el costo real, la carga que podría movilizar, los impactos ambientales y sociales, y la financiación. Solo con estos estudios podremos determinar si es viable y cuánto tiempo tomaría la construcción.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/2RLYWBGMZZGMDIN45MYKOILI3M.jpg?auth=b49723906cd77981bdd9b54c6722259325e554b22734aac1f263d6ec66585926&smart=true&width=5872&height=3917" alt="Transporte de carga" height="3917" width="5872"/><h2>A los transportistas de carga</h2><p><b>SEMANA: Sobre el transporte de carga: el precio del diésel siempre está en capilla para alzas; el parque automotor está en la mira para ser transformado, pero se requieren corredores eléctricos. ¿Qué tiene para decirles a los transportadores?</b></p><p><b>E.N.</b>: Empiezo por aclarar que el precio del diésel no lo fija el Ministerio de Transporte. Nuestra responsabilidad es garantizar que cualquier variación en su costo se refleje en el SICE-TAC, el sistema que calcula los costos reales de movilizar una carga y sirve de base para definir cuánto se le debe pagar al propietario del vehículo.</p><p>En otras palabras, si aumenta el costo del combustible, ese mayor valor debe reconocerse en el pago del viaje. Nuestro papel será vigilar que las empresas generadoras de carga y las transportadoras trasladen ese reconocimiento al pequeño propietario que pone el camión y asume el gasto del diésel, y que no se quede en manos de intermediarios.</p><p>Pero el problema de fondo es cuánto diésel consumimos para mover una tonelada. Tenemos uno de los parques de carga más antiguos de América Latina: un camión viejo consume más, se vara más, contamina más y encarece los alimentos.</p><p>Por eso, nuestra prioridad será renovar el parque automotor. Vamos a reactivar el IVA CREI para que los pequeños propietarios puedan reemplazar sus camiones sin pagar IVA. Esta medida beneficiará especialmente al 80 % de los propietarios que tienen un solo vehículo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4B54VSRVNFAYLJR7PJIHUZRBHM.jpg?auth=eff7d0099400447fe344db713043269a25aad82087c353910f663d6a9ebbb8c9&smart=true&width=4096&height=2304" alt="Puerto de Buenaventura" height="2304" width="4096"/><p><b>SEMANA: ¿Qué solución propondrá para la reiterada crisis logística del puerto de Buenaventura?</b></p><p><b>E.N.</b>: La crisis logística de Buenaventura necesita una solución integral. Lo primero es garantizar una operación segura y permanente de la vía Buga–Buenaventura, atendiendo sus puntos críticos para evitar que una emergencia vuelva a bloquear la principal conexión del país con el Pacífico.</p><p>También trabajaremos con la Fuerza Pública y las autoridades locales para proteger a los transportadores y la carga frente a robos, extorsiones y bloqueos.</p><p>Además, mejoraremos la coordinación entre los puertos, las empresas y los transportadores para reducir las filas, agilizar el ingreso de los camiones y disminuir los tiempos de espera. Buenaventura debe funcionar como un solo sistema logístico, seguro y eficiente.</p><h2>¿Frenarán la corrupción?</h2><p><b>SEMANA: Este sector es susceptible a la corrupción. ¿Cómo hará para evitar desvíos de dineros, coimas para adjudicar contratos, nombramientos dudosos y demás</b>? </p><p><b>E.N.</b>: La indicación presidencial es cero tolerancia con la corrupción. Fortaleceremos los controles desde la planeación hasta la entrega de las obras, porque la corrupción también se previene antes de contratar. Muchas irregularidades comienzan con estudios incompletos o requisitos innecesarios que limitan la competencia. </p><p>Promoveremos licitaciones públicas, reglas claras, pluralidad de oferentes y el uso de pliegos tipo. </p><p>Además, vigilaremos los anticipos, pagos, adiciones, prórrogas y el avance físico y financiero de los proyectos. Nuestro compromiso es que los recursos públicos se conviertan en obras y mejores servicios para la gente.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Z4LL6ZWN2JAIVGJS24467TS4JQ.jpg?auth=6a3da00c71f0de45926c315644bf1a58db9f448b63ccde2d7cb12eacad385001&amp;smart=true&amp;width=6086&amp;height=4102" type="image/jpeg" height="4102" width="6086"><media:description type="plain"><![CDATA[Elsa Noguera, ministra de transporte]]></media:description><media:credit role="author" scheme="urn:ebu">ALEJANDRO ACOSTA-PUBLICACIONES S</media:credit></media:content></item><item><title><![CDATA[Google confirmó lo ocurrido con Gemini: la IA logró entrar a sistemas externos durante una prueba]]></title><link>https://www.semana.com/tecnologia/articulo/google-confirmo-lo-ocurrido-con-gemini-la-ia-logro-entrar-a-sistemas-externos-durante-una-prueba/202648/</link><guid isPermaLink="true">https://www.semana.com/tecnologia/articulo/google-confirmo-lo-ocurrido-con-gemini-la-ia-logro-entrar-a-sistemas-externos-durante-una-prueba/202648/</guid><dc:creator><![CDATA[David Alejandro Rojas García]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 02:53:48 +0000</pubDate><content:encoded><![CDATA[<p>Gemini, el modelo de inteligencia artificial de Google, logró acceder a sistemas informáticos externos durante una prueba, según confirmó la compañía el viernes. El episodio también había sido reportado por el diario Wall Street Journal.</p><p>El caso vuelve a poner sobre la mesa los riesgos asociados con modelos de inteligencia artificial cada vez más capaces, <b>especialmente cuando interactúan con información y servicios que están fuera de los entornos controlados en los que son evaluados.</b></p><p>En mayo, durante una prueba estándar de Gemini, el modelo encontró información disponible públicamente en internet y utilizó esos datos para intentar conseguir acceso a sistemas que consideraba parte del ejercicio.</p><p>“Durante una prueba estándar (de Gemini), el modelo encontró informaciones públicas en línea y adivinó claves para acceder a sitios que creyó que hacían parte de la prueba”, explicó Heather Adkins, una responsable de seguridad en Google, en una declaración transmitida a la AFP.</p><h2>El modelo probó contraseñas hasta conseguir acceso</h2><p>Google no identificó públicamente a las organizaciones involucradas, <b>pero indicó que tres entidades se vieron afectadas por los accesos y que fueron informadas sobre las brechas.</b></p><p>El Wall Street Journal detalló uno de los episodios y señaló que Gemini llegó a probar distintas combinaciones de contraseñas hasta conseguir entrar a un sistema que estaba protegido.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HSCVRUOO2VBYXEDPFAGGZGH2B4.jpg?auth=6d1845c45d722f22679291d2849806a1cfdad4567762b4be4221dbf7c920ee52&smart=true&width=1024&height=683" alt="El modelo de Google llegó a probar diferentes combinaciones de contraseñas para superar una protección." height="683" width="1024"/><p>Según el medio, el comportamiento ocurrió dentro del contexto de la prueba y no como parte de una operación solicitada por una persona para ingresar deliberadamente a esos sistemas.</p><h2>Gemini se detuvo después de conseguir entrar</h2><p>Uno de los elementos que llamó la atención del episodio fue que, después de lograr los accesos, el modelo no continuó con sus acciones.</p><p>“Las tres veces, el modelo se detuvo”, informó Adkins. La afirmación indica que las tres intrusiones terminaron sin que una persona tuviera que intervenir directamente para detener al modelo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/STS6VD7GGFE2BA2JBLKJB5MHIM.jpg?auth=9ed2913257fac100d497d572ddf1539b454ef59d0464a7e62e17ed09a18c8203&smart=true&width=1024&height=683" alt="Gemini logró entrar a los sistemas, pero se detuvo después de conseguir los accesos." height="683" width="1024"/><p>Google aseguró que tuvo conocimiento del episodio en julio y, posteriormente, inició una investigación para establecer qué había ocurrido y analizar el comportamiento registrado durante las pruebas.</p><h2>El caso aumenta el debate sobre los riesgos de la IA</h2><p>El episodio se conoce en medio de un debate cada vez mayor sobre las capacidades que están adquiriendo los modelos de inteligencia artificial y los límites que deberían establecerse durante su desarrollo.</p><p><b>Las revelaciones recientes sobre sistemas capaces de interactuar con sitios</b>, plataformas y otros entornos externos han llevado a varios ejecutivos de grandes compañías tecnológicas a plantear la necesidad de ralentizar el desarrollo de modelos cada vez más potentes.</p><p>También han surgido llamados a establecer mecanismos de autorregulación dentro de la industria para reducir los riesgos asociados con incidentes de seguridad mientras avanza el desarrollo de estas tecnologías.</p><p>*<i>Con información de AFP</i>.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/E6RC6KD5XZDR3OQEEXXPXW3EGM.jpg?auth=8f13566848350e4a7f6f3cd63d1c26ef9a0768a77ea6113700e979dcf0d7344b&amp;smart=true&amp;width=1024&amp;height=683" type="image/jpeg" height="683" width="1024"><media:description type="plain"><![CDATA[Tres organizaciones resultaron involucradas en un episodio que ahora investiga Google.]]></media:description><media:credit role="author" scheme="urn:ebu">Leon Neal</media:credit></media:content></item><item><title><![CDATA[No se levante de la silla: lo que debe saber sobre el final y las escenas postcréditos de ‘Resident Evil: Noche Cero’]]></title><link>https://www.semana.com/cultura/articulo/no-se-levante-de-la-silla-lo-que-debe-saber-sobre-el-final-y-las-escenas-postcreditos-de-resident-evil-noche-cero/202657/</link><guid isPermaLink="true">https://www.semana.com/cultura/articulo/no-se-levante-de-la-silla-lo-que-debe-saber-sobre-el-final-y-las-escenas-postcreditos-de-resident-evil-noche-cero/202657/</guid><dc:creator><![CDATA[Valentina Rueda Rodríguez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 02:50:57 +0000</pubDate><content:encoded><![CDATA[<p>La saga de terror y acción <i>Resident Evil</i>, inspirada en el célebre videojuego de Capcom <b>que supera los 200 millones de copias vendidas a nivel mundial,</b> suma un nuevo capítulo en la pantalla grande. </p><p>Se trata de <i>Resident Evil: Noche Cero</i>, una producción que busca <b>refrescar el universo cinematográfico de la franquicia bajo la dirección y guion del cineasta estadounidense Zach Cregger,</b> reconocido por su trabajo en producciones del género como <i><b>Barbarian</b></i><b> (2022) y </b><i><b>Weapons</b></i><b>.</b></p><p>A diferencia de entregas anteriores que adaptaron directamente la trama de los personajes emblemáticos de la saga, la propuesta de Cregger opta por una narrativa secundaria. </p><p>De acuerdo con las declaraciones del propio director, aunque el videojuego <i>Resident Evil 2</i> sirvió como referente de ambientación, el largometraje se concibió como una “historia periférica”.</p><p>La trama sigue a Bryan, interpretado por el actor Austin Abrams, <b>un mensajero médico cuya tarea de entregar un órgano para trasplante en un hospital remoto se complica abruptamente </b>tras desencadenarse un brote biológico en Raccoon City. </p><p>La producción combina la tensión del cine de zombis con situaciones de comedia negra y ritmo acelerado, un equilibrio de tono que el propio cineasta afinó durante la etapa de montaje tras la retroalimentación de pases de prueba.</p><p>El guion de <i>Resident Evil: Noche Cero</i> fue coescrito por Zach Cregger junto a Shay Hatten. <b>Con una duración cercana a los 90 minutos, la cinta se distancia de la fidelidad literal del material original </b>para ofrecer una experiencia orientada al suspenso dinámico, el uso de efectos prácticos y secuencias con abundante gore, que evocan referentes clásicos del terror como <i>La cosa</i> (<i>The Thing</i>) de John Carpenter.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/8iKTeIV2xgE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Resident Evil: Noche Cero | Tráiler Oficial | Doblado"></iframe><p>Esta nueva entrega se suma a un <b>extenso historial cinematográfico y televisivo que comenzó en la década de 2000 </b>con la serie de seis películas protagonizadas por Milla Jovovich, seguida por el reinicio de 2021 <i>Resident Evil: Bienvenidos a Raccoon City</i> y a la serie de televisión estrenada en 2022 por la plataforma Netflix.</p><p>Según reportes preliminares y reacciones tras las primeras funciones, <b>la película cuenta con dos escenas postcréditos. </b></p><p>Por esta razón, se aconseja a los espectadores permanecer en la sala hasta la conclusión total de los créditos finales, donde se incluyen secuencias que sugieren las posibles líneas argumentales para el futuro de este universo en el cine.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/RDALXZHFLFBTTN4IRUVFCGOHBQ.webp?auth=d85446fbdba4df620bbc7c1199d3a72192a5af69377b96ddf33f89142c02745c&amp;smart=true&amp;width=1200&amp;height=800" type="image/webp" height="800" width="1200"><media:description type="plain"><![CDATA[El reinicio de 'Resident Evil': Zach Cregger apuesta por un terror visceral.]]></media:description></media:content></item><item><title><![CDATA[La historia del Camaro robado de la Policía: joven pagó 25.000 dólares por él y terminó en líos legales]]></title><link>https://www.semana.com/vehiculos/articulo/la-historia-del-camaro-robado-de-la-policia-joven-pago-25000-dolares-por-el-y-termino-en-lios-legales/202653/</link><guid isPermaLink="true">https://www.semana.com/vehiculos/articulo/la-historia-del-camaro-robado-de-la-policia-joven-pago-25000-dolares-por-el-y-termino-en-lios-legales/202653/</guid><dc:creator><![CDATA[Camilo Eduardo Velásquez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 02:46:53 +0000</pubDate><content:encoded><![CDATA[<p>Un joven de 20 años había logrado hacer realidad uno de sus sueños cuando compró en Houston (Estados Unidos) un Chevrolet Camaro SS; sin embargo,<b> terminó siendo el protagonista de un insólito lío judicial al haberse hecho a un carro robado que había sido vendido en una subasta oficial de la policía,</b> según su propio relato.</p><p>De acuerdo con el reportaje del noticiero de televisión regional <i>Click 2 Houston</i>, el joven fue notificado del inconveniente cuando,<b> durante una inspección policial, detectaron que el Número de Identificación Vehicular (VIN) había sido manipulado.</b></p><p>Allí, los oficiales se dieron cuenta de que este auto aparecía en la base de datos como robado. Esto provocó una investigación que finalmente identificó un fallo institucional de la policía.</p><p>Las investigaciones detectaron que el departamento policial incautó el vehículo en un operativo y, <b>sin escanear ni verificar en profundidad los códigos electrónicos internos del motor, lo catalogó como remanente judicial y lo sacó a subasta pública. </b>Fue en esta instancia cuando un concesionario privado adquirió el coche en el remate de la policía pensando que contaba con el respaldo legal del Estado y lo puso en venta en su vitrina comercial.</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/gi1VJc5hjJY?si=x_YKTD1c9OpZ0xxu" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p>El joven protagonista de la historia fue el desafortunado comprador de este vehículo en el concesionario y, unos meses después, <b>cuando el auto estaba en su poder, las autoridades se lo arrebataron al evidenciar el verdadero antecedente del automotor.</b></p><p>Por el momento, las autoridades de Houston no se han referido a este insólito caso y el relato del joven fue visibilizado en el noticiero regional.</p><h2>Lecciones de seguridad al comprar un usado</h2><p>Este tipo de hechos deja una lección para revisar un vehículo usado antes de hacer efectiva la transacción para quedarse con él.</p><p>En Colombia, antes de desembolsar dinero por un vehículo usado, <a href="https://www.semana.com/vehiculos/articulo/como-revisar-si-un-carro-de-segunda-es-robado-esto-recomiendan-las-autoridades/202621/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/como-revisar-si-un-carro-de-segunda-es-robado-esto-recomiendan-las-autoridades/202621/">la policía ha señalado que cualquier ciudadano puede remitirse a la revisión pericial de la Sijin</a> para certificar la autenticidad de los sistemas de identificación.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4TQBKGQF7ZFJTD6UFTITC66XFY.jpeg?auth=d713eabdf690d5d1e6f70fce1e41856048a22a53a1485f88c41fb409d6fef5a4&smart=true&width=1600&height=900" alt="Los interesados pueden agendar una cita con la DIJIN para conocer detalles del vehículo." height="900" width="1600"/><p>El costo de la revisión técnica en la Sijin está regulado y fijado anualmente por la Dirección General de la Policía Nacional:</p><ul><li><b>Precio:</b> El trámite tiene un valor que ronda entre los $120.000 y $160.000 COP (el costo exacto varía según si se trata de motocicleta, automóvil o vehículo pesado).</li><li><b>Método de pago:</b> Se realiza únicamente a través de consignación o pago en línea en las entidades bancarias o plataformas autorizadas por la Policía Nacional (generalmente Banco de Occidente o PSE). No se paga en efectivo directamente a los peritos en el punto de atención.</li></ul><p>Para agendar e ingresar el vehículo a la sala de peritaje de la Sijin, se deben presentar los siguientes documentos:</p><ol><li><b>Licencia de tránsito</b> (tarjeta de propiedad) original del vehículo.</li><li><b>Cédula de ciudadanía</b> del propietario o de la persona que lleva el vehículo a la revisión.</li><li><b>Comprobante de pago</b> original de la tarifa de la revisión.</li><li>Vehículo completamente <b>limpio</b> (especialmente el área del motor, chasis y guardabarros) para permitir la lectura rápida de los guarismos.</li></ol>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Y2PZBHQDTZCTZBMPUGGOWI6Q7U.jpg?auth=a3f48ba4cc3af6a9a4266f018b23cc9a3a67ce745014d99887a161bf20da448d&amp;smart=true&amp;width=8660&amp;height=5773" type="image/jpeg" height="5773" width="8660"><media:description type="plain"><![CDATA[Imagen referencia de una escena del crimen atendida por la Policía en Estados Unidos.]]></media:description><media:credit role="author" scheme="urn:ebu">kali9</media:credit></media:content></item><item><title><![CDATA[Este curioso animal salvaje era usado para entretener a turistas en Fusagasugá]]></title><link>https://www.semana.com/4patas/articulo/este-curioso-animal-salvaje-era-usado-para-entretener-a-turistas-en-fusagasuga/202649/</link><guid isPermaLink="true">https://www.semana.com/4patas/articulo/este-curioso-animal-salvaje-era-usado-para-entretener-a-turistas-en-fusagasuga/202649/</guid><dc:creator><![CDATA[Daniel Armando Méndez Suárez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 02:43:49 +0000</pubDate><content:encoded><![CDATA[<p><a href="https://www.semana.com/4patas/articulo/rescataron-a-dos-perros-que-estaban-en-malas-condiciones-en-una-vivienda-del-sur-de-bogota/202603/" target="_blank" rel="" title="https://www.semana.com/4patas/articulo/rescataron-a-dos-perros-que-estaban-en-malas-condiciones-en-una-vivienda-del-sur-de-bogota/202603/">Un nuevo caso de maltrato animal se registró en Cundinamarca; </a>según reportó la división local de la Corporación Autónoma Regional (CAR) en un operativo donde <b>intervino un inmueble de recreación en el municipio de Fusagasugá</b>, luego de recibir alertas emitidas por la ciudadanía del sector.</p><p>Durante la diligencia, los funcionarios de la entidad procedieron con el decomiso preventivo de dos reptiles de la especie <i>boa constrictor</i> que permanecían retenidos dentro de las instalaciones.</p><p>Las autoridades de la territorial Sumapaz confirmaron que los animales se encontraban alojados en una estructura acondicionada dentro de una finca de uso ecoturístico.</p><p>Tras la intervención, los biólogos de la corporación <b>realizaron las valoraciones médicas correspondientes, determinando que los reptiles conservaban las condiciones físicas idóneas</b> para ser reubicados de forma inmediata en una zona de protección acorde a su especie.</p><h2>Impacto del cautiverio en la fauna silvestre</h2><p>La entidad ambiental recordó que mantener especímenes silvestres fuera de su entorno constituye una infracción grave contra la biodiversidad.</p><p>Este tipo de prácticas <b>altera los patrones de conducta de la fauna, perjudica sus habilidades naturales de caza y supervivencia</b> e interrumpe el equilibrio biológico en los ecosistemas locales al extraer predadores clave de la cadena alimenticia.</p><p><iframe src="https://www.facebook.com/plugins/video.php?height=314&href=https%3A%2F%2Fwww.facebook.com%2Freel%2F953960877099053%2F&show_text=false&width=560&t=0" width="560" height="314" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share" allowFullScreen="true"></iframe></p><p>Asimismo, la CAR reiteró el llamado a la comunidad para <b>desincentivar el uso de reptiles, aves y otras especies nativas como atracciones comerciales, elementos de exhibición o animales de compañía</b>.</p><p>La tenencia irresponsable despoja a los ejemplares de sus hábitats de origen y pone en riesgo la preservación de las poblaciones silvestres en el departamento.</p><h2>Canales habilitados para denuncias y entregas</h2><p>Para atender contingencias relacionadas con el tráfico o la tenencia irregular de especies, la autoridad ambiental <b>mantiene habilitada la línea telefónica especializada 3165244031 con atención continua las 24 horas</b>.</p><p>Igualmente, las personas que mantengan ejemplares en su poder pueden acudir a las sedes regionales de la institución para realizar entregas voluntarias sin incurrir en procesos sancionatorios.</p><p>Con este operativo, la corporación ratifica su compromiso con la conservación de los recursos naturales en la provincia del Sumapaz, <b>intensificando los controles en establecimientos comerciales y predios rurales</b> para erradicar la explotación ilegal de la fauna colombiana.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6OTUCEGB7VCBVOQ45DUB67AKG4.jpg?auth=907afced075af6bd88dae30ab55c5054ca8efb6ecb499b4fb2bb68451495f00e&amp;smart=true&amp;width=750&amp;height=485" type="image/jpeg" height="485" width="750"><media:description type="plain"><![CDATA[La CAR rescata a dos boas retenidas ilegalmente en una finca ecoturística de Fusagasugá.]]></media:description></media:content></item><item><title><![CDATA[Asoma competencia para Álvaro Montero: arquero con pasado en selección le coquetea a Boca Juniors]]></title><link>https://www.semana.com/deportes/articulo/asoma-competencia-para-alvaro-montero-arquero-con-pasado-en-seleccion-le-coquetea-a-boca-juniors/202611/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/asoma-competencia-para-alvaro-montero-arquero-con-pasado-en-seleccion-le-coquetea-a-boca-juniors/202611/</guid><dc:creator><![CDATA[Miguel Alejandro Cruz Ruiz]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 02:26:11 +0000</pubDate><content:encoded><![CDATA[<p><b>Parece de película el presente de </b><a href="https://www.semana.com/noticias/alvaro-montero/" target="_blank" rel="" title="https://www.semana.com/noticias/alvaro-montero/"><b>Álvaro Montero</b></a><b> en Boca Juniors</b>. Aunque arrancó criticado, se fue ganando un lugar con buenas actuaciones y ahora es indiscutible en el arco <i>xeneize</i>.</p><p>De menos a más, lo cierto es que la prensa argentina ahora le coloca muy buenas calificaciones a Montero, y <a href="https://www.semana.com/deportes/articulo/alvaro-montero-y-boca-juniors-van-por-la-copa-sudamericana-conquistan-el-morumbi-y-ya-tienen-rival-en-semifinales/202650/" target="_blank" rel="" title="https://www.semana.com/deportes/articulo/alvaro-montero-y-boca-juniors-van-por-la-copa-sudamericana-conquistan-el-morumbi-y-ya-tienen-rival-en-semifinales/202650/">el colombiano pelea con Boca Juniors en las semifinales de la Copa Sudamericana</a>.</p><p>Sin embargo, parece que le asoma competencia a Montero. En concreto, <b>Agustín Marchesín</b>, guardameta con pasado en la <a href="https://www.semana.com/noticias/seleccion-colombia/" target="_blank" rel="" title="https://www.semana.com/noticias/seleccion-colombia/"><b>selección Argentina</b></a>, coquetea con Boca Juniors para que le permitan renovar su contrato.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/V5472QCFQZGPLMR46L554QT3CY.jpg?auth=c50757da0d8deb5217dd347442a2825f805def51ea1071e7f4fcb297b0aa47c2&smart=true&width=3460&height=2307" alt="Agustin Marchesin cuando jugaba con Boca Juniors, antes de su lesión de ligamentos." height="2307" width="3460"/><h2>Agustín Marchesín quiere que le renueven en Boca Juniors</h2><p>La situación de Marchesín es bastante compleja. <b>En abril de este 2026, jugando con Boca Juniors, sufrió una rotura del ligamento cruzado anterior</b> de la rodilla derecha. Fue en partido de Copa Libertadores, ante Barcelona de Ecuador.</p><p>Como Marchesín era el titular de Boca, el cuadro <i>xeneize </i>tuvo que entrar en el mercado para buscarle un reemplazo. Todo porque, en principio, la recuperación del guardameta de 38 años va hasta finales de 2026 o principios de 2027.</p><p>Entonces, <a href="https://www.semana.com/noticias/boca-juniors/" target="_blank" rel="" title="https://www.semana.com/noticias/boca-juniors/"><b>Boca Juniors</b></a> esperó y después del Mundial 2026 compró a Álvaro Montero. Hoy, el colombiano es figura, pero Marchesín quiere recuperar el lugar que perdió.</p><p><b>El contrato de Marchesín con Boca va hasta el 31 de diciembre de 2026</b>. Agustín quiere seguir en el equipo de Buenos Aires, pero la prensa argentina revela que aún no hay charlas avanzadas para lograrlo.</p><p>“A poco más de cinco meses de haberse roto el ligamento cruzado de su rodilla derecha, Agustín Marchesín continúa con su recuperación con la idea de renovar su contrato con Boca, que vence en diciembre de este año”, revela TyC Sports.</p><p>Y añaden: “Cabe destacar que si bien el deseo del arquero es seguir en el xeneize, aún no hubo charlas por la extensión de su vínculo”.</p><p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">🔵🟡 A poco más de cinco meses de haberse roto el ligamento cruzado de su rodilla derecha, Agustín Marchesín continúa con su recuperación con la idea de renovar su contrato con Boca, que vence en diciembre de este año. Cabe destacar que si bien el deseo del arquero es seguir en… <a href="https://t.co/o7ukSJWkIl">pic.twitter.com/o7ukSJWkIl</a></p>&mdash; TyC Sports (@TyCSports) <a href="https://x.com/TyCSports/status/2101049171331494097?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>La inversión de Boca Juniors, por Álvaro Montero, fue cercana a los cuatro millones de dólares. Un verdadero dineral que se ha traducido en buenas actuaciones dentro del campo de juego.</p><p>Habrá que esperar el desarrollo de los próximos meses para ver cómo termina la historia. Marchesín quiere seguir, es un querido por la dirigencia, en cabeza del presidente Juan Román Riquelme, y las charlas podrían acabar en un acuerdo.</p><p>Ahora bien, <b>¿Marchesín le quitaría el puesto a Montero?</b> Parece complicado, pero sí regresaría a los entrenamientos para competirle el lugar.</p><p>En caso tal de que Marchesín y Boca no logren un acuerdo, el guardameta de 38 años quedaría como jugador libre. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/M6QVE44HPZE4VHPAO3U5LMSWTA.png?auth=ff521251408cbb2f9408249be2f2c72bfc8aebaf0c9f3c9750099b5450a2141b&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[El portero de Boca Juniors, con pasado en la selección Argentina, que se recupera de una lesión y quiere seguir en el cuadro xeneize.]]></media:description></media:content></item><item><title><![CDATA[Diego Guauque estalla por la indiferencia tras el crimen de Ana Lucía y pide abrir debate sobre la cadena perpetua]]></title><link>https://www.semana.com/gente/articulo/diego-guauque-estalla-por-la-indiferencia-tras-el-crimen-de-ana-lucia-y-pide-abrir-debate-sobre-la-cadena-perpetua/202618/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/diego-guauque-estalla-por-la-indiferencia-tras-el-crimen-de-ana-lucia-y-pide-abrir-debate-sobre-la-cadena-perpetua/202618/</guid><dc:creator><![CDATA[Valentina Rueda Rodríguez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 02:23:18 +0000</pubDate><content:encoded><![CDATA[<p>El caso de <b>Ana Lucía González Mendoza, la niña venezolana de 9 años hallada sin vida el pasado 15 de septiembre </b>en una alcantarilla de la localidad de Ciudad Bolívar, en Bogotá, continúa generando reacciones en diversos sectores del país. </p><p>Tras conocerse los detalles reportados por las autoridades sobre las circunstancias del crimen y la posterior imputación de cargos al presunto responsable, el periodista <b>Diego Guauque hizo una reflexión pública en la que cuestionó la respuesta colectiva de la ciudadanía</b> frente a la violencia que afecta a los menores de edad y planteó la necesidad de endurecer las sanciones penales para este tipo de delitos.</p><p>A través de un video difundido en sus redes sociales, <b>el comunicador expresó su consternación por los reportes judiciales de la Fiscalía General de la Nación, </b>entidad que imputó los delitos de feminicidio agravado y acto sexual violento con menor de 14 años a Shenner José Rojas Lárez, expareja de la hermana mayor de la menor. </p><p>Según la hipótesis investigativa de las autoridades, el hecho<b> se habría configurado como un episodio de violencia vicaria, en el que el procesado presuntamente atacó a la niña </b>con el objetivo de infligir daño psicológico a su expareja tras la ruptura de la relación.</p><p>Durante su intervención, Guauque <b>contrastó la moderada repercusión pública y la escasa movilización ciudadana generadas por la muerte de Ana Lucía</b> con el alto impacto y la viralización de otras denuncias en redes sociales.</p><p><b>“Hace unos días una mujer denunció que le habían quitado los zapatos en un almacén en Zara de Unicentro </b>y eso sí produjo videos, likes, comentarios, convocatorias, plantones (...) ¿Cómo es posible que eso genere semejante movilización <b>y que el asesinato de una niña de nueve años termine convirtiéndose en una noticia más?”</b>, sostuvo el periodista.</p><p>En su mensaje, el comunicador advirtió sobre el riesgo de la normalización de la violencia en el país y cuestionó el nivel de empatía de la sociedad civil frente a hechos atroces contra la infancia: </p><p><b>“¿Nos estamos acostumbrando al horror? (...) El día que el horror se vuelva paisaje, el problema ya no es solamente quién comete ese crimen, también es la sociedad que dejó de conmoverse”</b>, agregó.</p><p><blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/reel/Ddcj2OrOCEL/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:16px;"> <a href="https://www.instagram.com/reel/Ddcj2OrOCEL/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"> <div style=" display: flex; flex-direction: row; align-items: center;"> <div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div></div></div><div style="padding: 19% 0;"></div> <div style="display:block; height:50px; margin:0 auto 12px; width:50px;"><svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-511.000000, -20.000000)" fill="#000000"><g><path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"></path></g></g></g></svg></div><div style="padding-top: 8px;"> <div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;">Ver esta publicación en Instagram</div></div><div style="padding: 12.5% 0;"></div> <div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"><div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> <div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div></div><div style="margin-left: 8px;"> <div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"></div> <div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"></div></div><div style="margin-left: auto;"> <div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> <div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> <div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div></div></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"></div></div></a><p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"><a href="https://www.instagram.com/reel/Ddcj2OrOCEL/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank">Una publicación compartida por Diego Guauque Peña (@diego_reportero)</a></p></div></blockquote>
<script async src="//www.instagram.com/embed.js"></script></p><p>Más allá de la crítica social, el periodista planteó interrogantes sobre el marco legal aplicable a los crímenes contra la infancia en Colombia. </p><p>Guauque señaló que, en su opinión personal, hechos de tal severidad deberían ser sancionados con la máxima pena posible, e incluso sugirió cadena perpetua para personas condenadas por delitos atroces contra menores de edad.</p><p>Actualmente, la ley colombiana contempla penas privativas de la libertad<b> que pueden superar los 40 y 50 años de cárcel para delitos como el feminicidio agravado y el homicidio de niños, niñas y adolescentes,</b> sin posibilidad de rebajas de pena cuando la víctima es un menor, según lo establece la Ley 1098 de 2006.</p><p>El caso de Ana Lucía pone nuevamente sobre la mesa la discusión institucional alrededor de la violencia vicaria en Colombia. </p><p>De acuerdo con datos de la Defensoría del Pueblo recopilados entre<b> el 1 de enero y el 31 de julio de 2026, en el país se han registrado 278 feminicidios</b>, lo que refleja una alarmante continuidad en las cifras de violencia de género. </p><p>El proceso penal por la muerte de Ana Lucía continúa en la fase de investigación judicial, mientras el imputado permanece bajo medida de aseguramiento en un centro carcelario a la espera del avance del juicio.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6LPXRAPSJFAHTOHM5LNU4WIKVM.jpg?auth=cf5ccf26f9233197c366e98f435e51f67969e49e5f5eaa96adde3ba143477ffd&amp;smart=true&amp;width=3264&amp;height=2057" type="image/jpeg" height="2057" width="3264"><media:description type="plain"><![CDATA[Diego Guauque explota tras el feminicidio de Ana Lucía.]]></media:description></media:content></item><item><title><![CDATA[PlayStation cambiará para siempre en Colombia: esta es la fecha en que comenzará la transición]]></title><link>https://www.semana.com/tecnologia/articulo/playstation-cambiara-para-siempre-en-colombia-esta-es-la-fecha-en-que-comenzara-la-transicion/202643/</link><guid isPermaLink="true">https://www.semana.com/tecnologia/articulo/playstation-cambiara-para-siempre-en-colombia-esta-es-la-fecha-en-que-comenzara-la-transicion/202643/</guid><dc:creator><![CDATA[David Alejandro Rojas García]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 02:16:43 +0000</pubDate><content:encoded><![CDATA[<p>Tras dos décadas vendiendo juegos digitales en moneda estadounidense dentro del país, <b>la plataforma digital de Sony actualizará su catálogo para mostrar los montos directamente en moneda nacional. </b>Esta medida equipara el servicio con el de otros competidores de la industria que ya operaban bajo este esquema en el territorio colombiano.</p><p>Esta modificación al esquema monetario fue informada oficialmente por la compañía a través de correos electrónicos dirigidos a sus usuarios a inicios de septiembre de 2026.</p><h2>Cronograma del mantenimiento y apagón temporal</h2><p>Para ejecutar la conversión técnica de los sistemas, la plataforma necesitará una suspensión temporal de sus actividades comerciales. <b>El servicio detendrá sus operaciones el 5 de octubre de 2026 y permanecerá fuera de línea mientras se completan los trabajos de actualización hasta el 8 de octubre. </b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WQU3BLIXCBBB7ELDSAZRSBILI4.jpg?auth=1df754163182785a18285e8b67f4106694b924fed92e3625d3045679e5ebaf95&smart=true&width=2121&height=1414" alt="Los usuarios no podrán comprar juegos digitales entre el 5 y el 8 de octubre." height="1414" width="2121"/><p>Al concluir esta pausa, las ventas digitales volverán a la normalidad el 9 de octubre exhibiendo todos los precios en pesos colombianos. Adicionalmente, el inicio de este mantenimiento marcará el cierre permanente de la tienda digital para la consola PlayStation 3 en el territorio nacional.</p><h2>Conversión de saldos y valores finales</h2><p>Respecto al dinero retenido en las billeteras digitales (monederos de usuario) y el crédito en tarjetas de regalo, la empresa determinó una tasa fija de 4.000 pesos por cada dólar. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QLKROATWCRFBXNVZPEB36NEUPE.jpg?auth=5c120a0465c97519e4f903316d99c6024059a270630e53f45632d581e4effd39&smart=true&width=1024&height=683" alt="Los precios de los juegos dejarán de aparecer en dólares y tendrán un nuevo formato." height="683" width="1024"/><p>Este valor predeterminado aplica a los fondos vigentes, lo que podría representar una ventaja para quienes recargaron con tasas de cambio inferiores. Por otra parte, <b>las futuras transacciones de videojuegos y suscripciones se calcularán a partir de la Tasa Representativa del Mercado </b>(TRM), sujeta a eventuales cargas impositivas o recargos de compras internacionales.</p><h2>Suscripciones y aspectos impositivos pendientes</h2><p>Respecto al cobro de las membresías periódicas, <b>la firma indicó que los precios de renovación podrían registrar variaciones leves al convertirse a la divisa local</b>. Sin embargo, aún no se ha especificado si las operaciones mantendrán el carácter de compra internacional con cobros bancarios adicionales, ni si las cifras visibles integrarán los impuestos aplicables. </p><p>Analistas en tecnología advierten que las compañías suelen fijar montos ajustados que podrían superar el cálculo exacto de la divisa, por lo que habrá que verificar las tarifas definitivas tras la reapertura de la tienda.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/IU7WMFTN5FF7REE3LVX4M5FVZQ.jpg?auth=d8c2b269d8fe43d92b6b2c668e65047af60bd4bdedd446402c77dafe16193a17&amp;smart=true&amp;width=2121&amp;height=1414" type="image/jpeg" height="1414" width="2121"><media:description type="plain"><![CDATA[La plataforma de Sony se alista para modificar su sistema de precios en Colombia.]]></media:description><media:credit role="author" scheme="urn:ebu">Alrphoto</media:credit></media:content></item><item><title><![CDATA[Atlético Nacional y su influencia en la Selección Colombia: toma mucha ventaja y muestra su grandeza en el FPC]]></title><link>https://www.semana.com/deportes/articulo/atletico-nacional-y-su-influencia-en-la-seleccion-colombia-toma-mucha-ventaja-y-muestra-su-grandeza-en-el-fpc/202653/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/atletico-nacional-y-su-influencia-en-la-seleccion-colombia-toma-mucha-ventaja-y-muestra-su-grandeza-en-el-fpc/202653/</guid><dc:creator><![CDATA[William Horacio Perilla Gamboa]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 02:10:53 +0000</pubDate><content:encoded><![CDATA[<p>Atlético Nacional pisa muy duro en la Selección Colombia y es proveedor fundamental de jugadores <a href="https://www.semana.com/deportes/articulo/oficial-convocatoria-de-la-seleccion-colombia-para-la-fecha-fifa-de-amistosos-renovacion-total/202648/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/oficial-convocatoria-de-la-seleccion-colombia-para-la-fecha-fifa-de-amistosos-renovacion-total/202648/">en la convocatoria de Néstor Lorenzo</a> para los partidos amistosos contra México, Perú y Paraguay.</p><p><a href="https://www.semana.com/deportes/articulo/los-ocho-canteranos-de-atletico-nacional-que-nestor-lorenzo-escogio-para-la-renovacion-en-la-seleccion-colombia/202619/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/los-ocho-canteranos-de-atletico-nacional-que-nestor-lorenzo-escogio-para-la-renovacion-en-la-seleccion-colombia/202619/">El club verdolaga no solo es el de más canteranos en el equipo nacional,</a> sino que su influencia llega a casi la mitad de futbolistas llamados.</p><p>De los 26 convocados, <b>12 tienen el sello de </b><a href="https://www.semana.com/noticias/atletico-nacional/" target="_blank" rel="noreferrer" title="https://www.semana.com/noticias/atletico-nacional/"><b>Atlético Nacional,</b></a> ya sea por ser canteranos o porque en algún momento pasaron por el verdolaga. Ningún otro equipo tiene este nivel de influencia en la Tricolor.</p><p>Por ejemplo, Millonarios tiene a un canterano, Carlos Andrés Gómez, y Álvaro Montero, con pasado reciente, portero campeón con esta camiseta.</p><p>América de Cali solo tiene a Kevin Andrade y a Kevin Viveros, quien brilla actualmente en Brasil, pero pasó por sus filas en los años 2018 y 2019. Deportivo Cali también lo tuvo en el 2023 y aporta a Matías Orozco y Jhon Lucumí.</p><p>Atlético Nacional los sobrepasa con ocho canteranos y cuatro jugadores más con pasado reciente, para un total de 12 futbolistas, casi la mitad del total de los convocados. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CNBFNTZW5RFQ7P4KJ6F2VBCSYY.jpeg?auth=cb64dc8b5a6bc6ec3bdc8cb10f987035b179490f6f44a2a75e53f7b7888e1187&smart=true&width=3329&height=2220" alt="Kevin Viveros, autor del único gol del partido entre Fortaleza y Nacional" height="2220" width="3329"/><p><b>El mismo Kevin Viveros,</b> actual goleador en el Brasileirao, también jugó en el verdolaga y tuvo mejores números que en América o Deportivo Cali.</p><h2>Jugadores con pasado en Atlético Nacional</h2><p>A Kevin Viveros se une el portero Aldair Quintana, quien estuvo desde el 2019 hasta el 2022. Los laterales Daniel Muñoz (además de ser hincha de Atlético Nacional) y Álvaro Angulo también vistieron esa camiseta luego defender los colores de Águilas Doradas. </p><ul><li>Kevin Viveros</li><li>Daniel Muñoz</li><li>Álvaro Angulo</li><li>Aldair Quintana</li></ul><h2>Canteranos de Nacional en la Selección Colombia</h2><p>A ellos se suman los canteranos con los que Lorenzo da el golpe de confianza. Solo Juan Manuel Rengifo y Samuel Velásquez están actualmente en la plantilla de Atlético Nacional, pues los demás ya han sido transferidos al exterior con cifras récord para el fútbol colombiano.</p><ul><li><b>Kevin Mier:</b> Portero formado en Atlético Nacional, campeón en 2022, hoy en el Cruz Azul de México.</li><li><b>Juan Manuel Rengifo:</b> La joya de las canteras de Atlético Nacional, quien sería vendido en el próximo mercado de pases.</li><li><b>Royer Caicedo:</b> Defensa central, gran sorpresa en la lista de Néstor Lorenzo, que ya fue transferido al Cercle Brugge de Bélgica.</li><li><b>Óscar Perea:</b> Jugador con proceso en las selecciones Colombia juveniles que hoy brilla en el América de México.</li><li><b>Dávinson Sánchez:</b> Líder de la defensa de la Selección Colombia, hoy en el Galatasaray de Turquía, campeón en 2016 de la Copa Libertadores.</li><li><b>Édier Ocampo:</b> Otra de las sorpresas en la Selección Colombia, que ya fue transferido al Vancouver Whitecaps de la MLS.</li><li><b>Jhon Solís:</b> Reciente fichaje del Birmingham, de la segunda división de Inglaterra, antes en el Girona.</li></ul><h2>Los partidos amistosos de Colombia</h2><p><b>Fecha: 26 de septiembre de 2026</b></p><ul><li>Colombia vs. México</li><li>Lugar: M&amp;T Bank Stadium de Baltimore, Maryland, Estados Unidos</li><li>Hora: Por confirmar</li></ul><p><b>Fecha: 2 de octubre de 2026</b></p><ul><li>Colombia vs. Paraguay</li><li>Lugar: Sports Illustrated Stadium, New Jersey, Estados Unidos</li><li>Hora: 7:00 p.m. (hora de Col)</li></ul><p><b>Fecha: 6 de octubre de 2026</b></p><ul><li>Colombia vs. Perú</li><li>Lugar: Nu Stadium, Miami, Estados Unidos</li><li>Hora: 6:45 p.m. (hora de Col)</li></ul>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MZKQKWFUMJCVFGRKOKDL5PSHR4.jpg?auth=2e937fff54a2c413741170a9ccc7c9e66ce9ff1c95bfc27eb60cd0069147ca52&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Néstor Lorenzo comienza un nuevo ciclo en la Selección Colombia.]]></media:description><media:credit role="author" scheme="urn:ebu">Mohamed Farag</media:credit></media:content></item><item><title><![CDATA[EE. UU. reveló histórico video de ovnis grabado por un militar en 1952: fue analizado por el ‘Project Blue Book’]]></title><link>https://www.semana.com/mundo/articulo/ee-uu-revelo-historico-video-de-ovnis-grabado-por-un-militar-en-1952-fue-analizado-por-el-project-blue-book/202643/</link><guid isPermaLink="true">https://www.semana.com/mundo/articulo/ee-uu-revelo-historico-video-de-ovnis-grabado-por-un-militar-en-1952-fue-analizado-por-el-project-blue-book/202643/</guid><dc:creator><![CDATA[David Alejandro Rojas García]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 01:53:43 +0000</pubDate><content:encoded><![CDATA[<p>Una antigua película en color, grabada hace 74 años en Utah, volvió a ser publicada como parte de los nuevos archivos estadounidenses sobre fenómenos aéreos no identificados. <b>Las imágenes fueron captadas el 2 de julio de 1952,</b> cerca de Tremonton, por un militar de la Armada que reportó haber visto varios objetos brillantes en el cielo.</p><h2>El militar que puso el caso en manos de la Fuerza Aérea</h2><p>El protagonista del caso fue <b>Delbert C. Newhouse</b>, suboficial jefe de la Armada de Estados Unidos y especialista en fotografía. De acuerdo con uno de los documentos publicados, la Fuerza Aérea lo consideró un testigo <b>“honesto y confiable”</b> y destacó que tenía más de <b>1.000 horas de experiencia en fotografía aérea</b>.</p><p>Newhouse aseguró haber observado entre <b>12 y 14 objetos reflectantes</b> y los registró con una cámara portátil <i>Bell &amp; Howell Auto Master</i> utilizando película Kodachrome de 16 milímetros.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">🇺🇸 | Archivos desclasificados de la Marina de EE. UU. revelaron una filmación de 1952 que muestra objetos luminosos desplazándose en formación cerrada sobre el cielo nocturno de Utah, reavivando el interés público sobre UAP. <a href="https://t.co/P1yR25wsHT">pic.twitter.com/P1yR25wsHT</a></p>&mdash; Mundo en Conflicto 🌎 (@MundoEConflicto) <a href="https://x.com/MundoEConflicto/status/2100989002459320723?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>Poco después, entregó la grabación a la Fuerza Aérea. El caso terminó siendo estudiado por el <i><b>Project Blue Book</b></i>, programa creado para investigar los reportes de objetos voladores no identificados.</p><h2>Primero hubo varias explicaciones</h2><p>Los documentos muestran que los investigadores contemplaron diferentes posibilidades. Entre ellas estuvieron la luz del sol reflejada por aves o globos y hasta un efecto de espejismo.</p><p>Sin embargo, las evaluaciones posteriores se inclinaron por otra explicación. Según el expediente, los objetos eran aves marinas que reflejaban la luz solar. Para sustentar esa conclusión, se mencionaron aves identificables y otras películas en las que aparecían aves como puntos luminosos bajo condiciones similares.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3TMU7J5CXFDLBPHOW2566L7UPA.png?auth=c0f69eba7fa6887a2b5fba3d7d88988666ed6a1a3a06b9ab7194ec3ff8feb372&smart=true&width=1280&height=720" alt="Aves, globos y hasta un espejismo estuvieron entre las posibilidades consideradas por los investigadores." height="720" width="1280"/><p>Aun así, la película tenía limitaciones. El registro publicado señala que <b>“el detalle limitado de la película y la falta de puntos de referencia fijos”</b> impedían establecer con precisión la distancia, el tamaño, la altitud o la velocidad de los objetos únicamente a partir de las imágenes.</p><h2>La película conservada tiene un detalle inesperado</h2><p>La versión digitalizada publicada ahora tampoco conserva todo el material original. Después del segundo 55 aparecen imágenes que <b>“parecen mostrar una demostración de equipo de costura”</b>, según la descripción oficial.</p><p>AARO señala que la presencia de esas escenas <b>“sugiere que el material conservado podría ser una composición o una copia reutilizada”</b>. La agencia, sin embargo, aclara que los registros disponibles no permiten establecer cuándo ni cómo se combinaron esas imágenes.</p><p>Además, documentos asociados a la película indican que originalmente estaba acompañada por paisajes montañosos de Idaho, fragmentos que tampoco aparecen en la digitalización difundida actualmente.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SQDVUROQ4VAIFGRZXRUEFIRX7Q.png?auth=cd15bc85cb54dc8a218e41495c7e8660fb2ef63a04a527e6d4ef13aaf05fc40c&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Una antigua grabación volvió a aparecer entre los archivos sobre avistamientos investigados por EE. UU.]]></media:description></media:content></item><item><title><![CDATA[Contundente golpe de Atlético Nacional a América de Cali y Millonarios en la Selección Colombia: no tiene rival]]></title><link>https://www.semana.com/deportes/articulo/contundente-golpe-de-atletico-nacional-a-america-de-cali-y-millonarios-en-la-seleccion-colombia-no-tiene-rival/202645/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/contundente-golpe-de-atletico-nacional-a-america-de-cali-y-millonarios-en-la-seleccion-colombia-no-tiene-rival/202645/</guid><dc:creator><![CDATA[William Horacio Perilla Gamboa]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 01:46:45 +0000</pubDate><content:encoded><![CDATA[<p><a href="https://www.semana.com/noticias/atletico-nacional/" target="_blank" rel="noreferrer" title="https://www.semana.com/noticias/atletico-nacional/">Atlético Nacional</a> no tiene competencia en Colombia y muestra su nivel de grandeza ante sus eternos rivales. La más reciente convocatoria del equipo Tricolor expone el dominio verdolaga y hasta el momento no tiene quién le arrebate el trono. La paliza es contundente, en lo que tiene que ver con canteranos convocados a la selección.</p><p>Es una goleada de 8-1 ante Millonarios y Atlético Nacional, teniendo en cuenta la cantidad de jugadores formados en sus canteras y que son convocados a la Selección Colombia de Mayores, lo cual es un punto clave al momento de medir qué club es más grande. Esto se une a la cantidad de títulos locales, internacionales, al prestigio internacional, a los abonos que vende y cantidad de televisores que enciende.</p><p><a href="https://www.semana.com/deportes/articulo/oficial-convocatoria-de-la-seleccion-colombia-para-la-fecha-fifa-de-amistosos-renovacion-total/202648/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/oficial-convocatoria-de-la-seleccion-colombia-para-la-fecha-fifa-de-amistosos-renovacion-total/202648/">En la convocatoria se ve la confianza que tiene Néstor Lorenzo en las formativas de Nacional</a> y no solo eso, pues han hecho méritos para recibir el llamado de la Selección Colombia en esta renovación total que se pretende tras el Mundial 2026 y las renuncias de James Rodríguez y Juan Fernando Quintero.</p><p><b>En América de Cali llama la atención la convocatoria del defensa central Kevin Andrade</b>, un canterano que fue campeón con el equipo rojo en el 2020, que en el 2023 fue transferido al Baltika de Rusia y actualmente brilla al Zenit de la Premier League rusa.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/VBFQIIV6RNBZJDQGE4XIR2GNCQ.jpg?auth=055a8fc1ac0fc74b2e64d02cd7df847d05c05ae4a6339385ca5e32c64aabe405&smart=true&width=1080&height=1350" alt="Kevin Andrade disputando una pelota con Daniel Ruiz." height="1350" width="1080"/><p>Por otra parte,<b> Millonarios se hace presente con Carlos Andrés Gómez,</b> apodado el Tinito, quien fue transferido al Real Salt Lake en el 2023 y luego tuvo una pasantía por el Rennes de Francia. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PKYVEQBSW5GSHMJ5VDPQAU7UWU.jpg?auth=58172587475aadcd2618aeec7cd36e816beb70c1436f4f048fb7a28fe97cded0&smart=true&width=2001&height=3000" alt="Carlos Andrés Gómez, delantero colombiano de Vasco da Gama." height="3000" width="2001"/><p>En el 2025 pasó al Vasco Da Gama, donde es titular y le permitió ganarse un lugar en la nómina de Néstor Lorenzo.</p><h2>Atlético Nacional sobrepasa con ocho canteranos</h2><ul><li><b>Kevin Mier:</b> Portero formado en Atlético Nacional, campeón en 2022, hoy en el Cruz Azul de México.</li><li><b>Juan Manuel Rengifo:</b> La joya de las canteras de Atlético Nacional y quien sería vendido en el próximo mercado de pases.</li><li><b>Royer Caicedo:</b> Defensa central, gran sorpresa en la lista de Néstor Lorenzo, que ya fue transferido al Cercle Brugge de Bélgica.</li><li><b>Óscar Perea:</b> Jugador con proceso en las selecciones Colombia juveniles, que hoy brilla en el América de México.</li><li><b>Dávinson Sánchez:</b> Líder de la defensa de la Selección Colombia, hoy en el Galatasaray de Turquía, campeón en 2016 de la Copa Libertadores.</li><li><b>Édier Ocampo:</b> Otra de las sorpresas en la Selección Colombia que ya fue transferido al Vancouver Whitecaps de la MLS.</li><li><b>Jhon Solís:</b> Reciente fichaje del Birmingham, de la segunda división de Inglaterra, antes en el Girona.</li><li><b>Samuel Velásquez:</b> Lateral en proyección de Atlético Nacional, que estuvo a préstamo en el Tolima, pero ya hace parte del primer equipo.</li></ul><h2>Los partidos amistosos de Colombia</h2><p><b>Fecha: 26 de septiembre de 2026</b></p><ul><li>Colombia vs. México</li><li>Lugar: M&amp;T Bank Stadium de Baltimore, Maryland, Estados Unidos</li><li>Hora: Por confirmar</li></ul><p><b>Fecha: 2 de octubre de 2026</b></p><ul><li>Colombia vs. Paraguay</li><li>Lugar: Sports Illustrated Stadium, New Jersey, Estados Unidos</li><li>Hora: 7:00 p.m. (hora de Col)</li></ul><p><b>Fecha: 6 de octubre de 2026</b></p><ul><li>Colombia vs. Perú</li><li>Lugar: Nu Stadium, Miami, Estados Unidos</li><li>Hora: 6:45 p.m. (hora de Col)</li></ul>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7V7CSQBE5ZD6HLW5T7UDDAZDBA.jpg?auth=9cf7519122dff1b586e8a6214e8fa7d252804d8abb7a50734284b3730688aa56&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Néstor Lorenzo le apunta a una renovación en la Selección Colombia.]]></media:description><media:credit role="author" scheme="urn:ebu">Mohamed Farag</media:credit></media:content></item><item><title><![CDATA[David Vélez, de Nubank, anunció inversión de 5 billones en Colombia: dijo que la tasa de usura es un “obstáculo”; pidió eliminarla ]]></title><link>https://www.semana.com/economia/macroeconomia/articulo/david-velez-de-nubank-anuncio-inversion-de-5-billones-en-colombia-dijo-que-la-tasa-de-usura-es-un-obstaculo-pidio-eliminarla/202655/</link><guid isPermaLink="true">https://www.semana.com/economia/macroeconomia/articulo/david-velez-de-nubank-anuncio-inversion-de-5-billones-en-colombia-dijo-que-la-tasa-de-usura-es-un-obstaculo-pidio-eliminarla/202655/</guid><dc:creator><![CDATA[Esteban Felipe  Feria Quintero]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 01:35:55 +0000</pubDate><content:encoded><![CDATA[<p>David Vélez es tal vez uno de los banqueros más importantes de Colombia. A través de Nubank, el empresario revolucionó el mercado de las tarjetas de crédito y permitió un mayor acceso a productos financieros rápidos, sin trabas, largas filas, oficinas ni trámites engorrosos. Esto le ha traído un éxito imparable, incluso al ser comparado con banqueros de la talla de Luis Carlos Sarmiento Angulo.</p><p>Durante los últimos días, Vélez ha demostrado un acercamiento clave al Gobierno de Abelardo De La Espriella, tanto así que este 18 de septiembre se reunió en Barranquilla y tomaron varias decisiones de cara al fortalecimiento tecnológico en Colombia. Sin embargo, también participó en <i>Latam Fintech Market</i>, el evento de fintech más grande de Latinoamérica, en el que hizo un anuncio clave. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/OMYMDRFR6NAFZDKUNJHQHO7WZ4.jpeg?auth=44465860eacf68086bfba761d8ff9e1af9da11c72ce2f8e91126beceba2449ed&smart=true&width=1280&height=854" alt="Nubank proyecta invertir cerca de $5 billones en Colombia durante los próximos cinco años, con el objetivo de ampliar el acceso a servicios financieros." height="854" width="1280"/><p>Durante una rueda de prensa exclusiva con periodistas y en la que estuvo presente <i>SEMANA</i>, Vélez aseguró que la plataforma <b>Nu Colombia contemplará inversiones por cerca de $5 billones de pesos entre 2026 y 2030, como parte de una apuesta para ampliar el acceso a servicios financieros simples, transparentes y más convenientes para millones de usuarios bancarios. </b></p><p>Es importante recordar que Nu cumple cerca de 5 años en el país, con más de 5 millones de clientes en sus cuentas y totalizando unos 11 billones de pesos entre sus cuentas y los CDT. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/V6YD24C2YZHHZCM3S27RQ7UVYQ.jpeg?auth=33dcf91a1ed99821598fabd7838d397069359f30bcbb9a32f599cf451f3530f2&smart=true&width=1280&height=854" alt="David Vélez destacó el crecimiento de Nubank en Colombia, donde la plataforma ya supera los cinco millones de clientes y suma cerca de $11 billones entre cuentas y CDT." height="854" width="1280"/><p>Con el monto anunciado, esperan poder respaldar cuatro frentes estratégicos en la organización, entre los que se encuentran el desarrollo continuo de tecnología, plataformas y capacidades avanzadas de datos e inteligencia artificial; <b>el lanzamiento y escalamiento de productos y servicios que simplifiquen y profundicen la vida financiera de los clientes.</b></p><p>Aseguró que el plan de inversiones anunciado demuestra un compromiso claro de Nu por construir una operación de largo plazo que amplíe el acceso al crédito, promueva una mayor competencia y genere mejores soluciones financieras. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XSEUUKGEIZDRBG47ANMYMK54T4.jpeg?auth=d754154703f8124c1fe421a831151da6cd8f61c0ad3951a699fcb7d3b779b925&smart=true&width=1280&height=854" alt="El fundador de Nubank aseguró que las nuevas inversiones buscan ampliar el acceso al crédito, impulsar la competencia y desarrollar soluciones financieras para los colombianos." height="854" width="1280"/>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KSXEQXRDKVELRGKQUFHNCMUTWI.jpeg?auth=88e1b7c8d85ea6cace4bf7f971791b0a15a1ed5b44f7071daba8bd6c1b4250d0&amp;smart=true&amp;width=2560&amp;height=1706" type="image/jpeg" height="1706" width="2560"><media:description type="plain"><![CDATA[David Vélez, fundador de Nubank, anunció inversiones por cerca de $5 billones en Colombia entre 2026 y 2030 para fortalecer la operación de la compañía.]]></media:description></media:content></item><item><title><![CDATA[Más grande que 30 campos de fútbol: así es ‘Macondo Park’, el parque temático que Shakira construyó en Madrid para sus conciertos]]></title><link>https://www.semana.com/gente/articulo/mas-grande-que-30-campos-de-futbol-asi-es-macondo-park-el-parque-tematico-que-shakira-construyo-en-madrid-para-sus-conciertos/202659/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/mas-grande-que-30-campos-de-futbol-asi-es-macondo-park-el-parque-tematico-que-shakira-construyo-en-madrid-para-sus-conciertos/202659/</guid><dc:creator><![CDATA[Valentina Rueda Rodríguez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 01:26:59 +0000</pubDate><content:encoded><![CDATA[<p>La cantautora colombiana Shakira <b>dio inicio este viernes a su histórica residencia artística en Madrid con la apertura de </b><i><b>Macondo Park</b></i><b>, un complejo de 220.000 metros cuadrados </b>ubicado en el espacio Iberdrola Music, en el distrito de Villaverde. </p><p>Diseñado como un punto de encuentro inmersivo para la cultura latinoamericana, el recinto <b>albergará 12 presentaciones de la artista en el marco de su gira mundial </b><i><b>Las mujeres ya no lloran</b></i><b>,</b> una cita que prevé convocar a más de 600.000 asistentes hasta el próximo 11 de octubre.</p><p>El concepto de <i>Macondo Park</i> toma su nombre del universo ficticio creado por el premio Nobel de Literatura Gabriel García Márquez en <i>Cien años de soledad</i>. </p><p>De acuerdo con declaraciones de Stefani Fachini de Araujo, asociada de la firma arquitectónica danesa Bjarke Ingels Group (BIG), a <i>BBC Mundo</i>, la idea original partió directamente de la barranquillera.</p><p>El objetivo central fue levantar una “ciudad efímera” donde converjan la literatura, la gastronomía, la moda y la música del continente.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KWYNXSAHG5ECHJUK3ZZD6L4UGQ.webp?auth=6eb455a33f920bf6af87c46b5b83e33511339e25c2a7ccff6bf2762e0d79c503&smart=true&width=800&height=450" alt="Pie de foto,Shakira buscó que el Macondo Park fuera mucho más que es un simple recinto para celebrar conciertos." height="450" width="800"/><p>A la entrada, marcada por arcos con el lema ‘Es Latina’, los visitantes recorren senderos codificados por colores que conducen a diversos pabellones:</p><ul><li><b>La Biblioteca:</b> Espacio inmersivo que albergará encuentros con 24 autoras continentales e ibéricas, entre ellas Rosa Montero y Lydia Cacho.</li><li><b>El Taller y El Mercado:</b> Áreas destinadas a pasarelas de moda de talentos emergentes y a una propuesta gastronómica latinoamericana supervisada por el chef español Rafa Zafra.</li><li><b>Museo de Shakira y Macondito:</b> Un recorrido por los atuendos icónicos de la artista (como el diseño de Roberto Cavalli para el Mundial de Sudáfrica 2010) y un área infantil participativa en cuyo concepto colaboraron los hijos de la cantante, Milan y Sasha.</li><li><b>Escenarios alternativos:</b> En la tarima “La Sala” se presentarán figuras de la escena contemporánea como Nathy Peluso, Amaia y Yerai Cortés, además de muestras folclóricas como el Carnaval de Barranquilla.</li></ul><p>En palabras de la propia Shakira, compartidas en una carta pública previa a la apertura, la elección de la capital española responde al papel de la ciudad como puente cultural: <b>“Aquí ocurre algo que el mundo merece ver: la inmigración latina no es tolerada, es celebrada”.</b></p><p>Durante la primera jornada, miles de seguidores procedentes de diversos países de Europa y América Latina hicieron filas desde tempranas horas para ingresar al complejo. </p><p>No obstante, la apertura de puertas registró un retraso de una hora respecto a lo programado, abriendo finalmente a las 4:30 p. m., hora de España.</p><p>Pese a los contratiempos iniciales en los accesos, la atmósfera festiva se consolidó en los diversos senderos, con atracciones destacadas como una escultura de gran formato dedicada a <b>la iconografía de </b><i><b>Loba</b></i><b> y la ambientación sonora previa al concierto principal.</b></p><p>El montaje de este macroevento <b>requirió 30 días de trabajos a marchas forzadas por parte de decenas de operarios. </b>Según la firma de arquitectura BIG, la infraestructura se concibió bajo criterios de sostenibilidad, utilizando materiales modulares reutilizables en futuras construcciones o eventos.</p><p>La residencia de la artista en Madrid <b>se extenderá durante cuatro fines de semana consecutivos, consolidándose como uno de los despliegues logísticos y culturales</b> de mayor escala realizados por una figura hispana en territorio europeo.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6DIO3MRKANGZXGJ3X4IPUNQ6YI.jpeg?auth=87ef30ec0b154c07820160f1506ead630dc77d12364cc07a97e665cecc3828ec&amp;smart=true&amp;width=1170&amp;height=646" type="image/jpeg" height="646" width="1170"><media:description type="plain"><![CDATA[Macondo Park]]></media:description></media:content></item><item><title><![CDATA[TransMilenio compartió emotivo mensaje tras el asesinato del vigilante en una estación de Soacha]]></title><link>https://www.semana.com/nacion/bogota/articulo/transmilenio-compartio-emotivo-mensaje-tras-el-asesinato-del-vigilante-en-una-estacion-de-soacha/202637/</link><guid isPermaLink="true">https://www.semana.com/nacion/bogota/articulo/transmilenio-compartio-emotivo-mensaje-tras-el-asesinato-del-vigilante-en-una-estacion-de-soacha/202637/</guid><dc:creator><![CDATA[Daniel Armando Méndez Suárez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 01:21:37 +0000</pubDate><content:encoded><![CDATA[<p>La empresa de transporte público más grande de Bogotá, TransMilenio, emitió un comunicado oficial tras <a href="https://www.semana.com/nacion/bogota/articulo/revelan-impactantes-videos-de-los-ultimos-momentos-de-vigilante-de-transmilenio-asesinado-por-colados-companeros-intentaron-salvarlo/202651/" target="_blank" rel="" title="https://www.semana.com/nacion/bogota/articulo/revelan-impactantes-videos-de-los-ultimos-momentos-de-vigilante-de-transmilenio-asesinado-por-colados-companeros-intentaron-salvarlo/202651/">el asesinato de Cristian David Garzón Castro,</a> un trabajador perteneciente a la escuadra antievasión de la empresa privada de vigilancia que prestaba sus servicios dentro del sistema.</p><p>Los hechos ocurrieron la mañana de este viernes 18 de septiembre en la estación Terreros, ubicada en el municipio de Soacha, donde <a href="https://www.semana.com/nacion/bogota/articulo/por-evitar-que-se-colaran-un-guardia-de-transmilenio-termino-muerto-en-la-estacion-terreros/202600/" target="_blank" rel="" title="https://www.semana.com/nacion/bogota/articulo/por-evitar-que-se-colaran-un-guardia-de-transmilenio-termino-muerto-en-la-estacion-terreros/202600/">el funcionario fue atacado con un arma blanca</a> mientras ejercía sus labores de control.</p><p>La entidad del transporte masivo expresó sus más sinceras condolencias y solidaridad a los familiares, allegados y compañeros de la víctima. </p><p>De igual forma, <b>rechazó de manera tajante cualquier manifestación de violencia que atente contra la integridad física y la vida</b> de los usuarios y colaboradores dentro de la infraestructura del sistema.</p><h2>Captura del presunto agresor y colaboración judicial</h2><p>Gracias a la oportuna y rápida intervención de los uniformados de la Policía Nacional desplegados en el sector, <b>una persona presuntamente involucrada en el homicidio fue capturada en flagrancia</b> y puesta a disposición de las autoridades judiciales competentes para el respectivo proceso de judicialización.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="zxx" dir="ltr"><a href="https://t.co/bQWHnpNUlU">pic.twitter.com/bQWHnpNUlU</a></p>&mdash; TransMilenio (@TransMilenio) <a href="https://x.com/TransMilenio/status/2101001871125082271?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>TransMilenio confirmó que mantendrá una estricta colaboración con los organismos de investigación, <b>facilitando el material de cámaras de seguridad</b> y la información requerida para el esclarecimiento total de los hechos.</p><p>La entidad enfatizó que la vida humana posee un valor incalculable que no puede ponerse en riesgo bajo ninguna circunstancia relacionada con el acceso al servicio.</p><h2>Pronunciamiento de la gerencia y llamado a la solidaridad</h2><p>Por su parte, el gerente de la entidad, Pedro Gutiérrez, catalogó la muerte de Garzón Castro como un hecho vil y repudiable que conmociona al equipo institucional.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">Ningún pasaje vale más que una vida. Hoy en TRANSMILENIO S.A. estamos de luto. <br><br>Lamentamos profundamente el doloroso fallecimiento de Cristian David Garzón Castro, un colaborador de la escuadra antievasión que perdió la vida víctima de un acto de intolerancia en la estación… <a href="https://t.co/W3Xdfj1RmF">pic.twitter.com/W3Xdfj1RmF</a></p>&mdash; TransMilenio (@TransMilenio) <a href="https://x.com/TransMilenio/status/2101051076623454349?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>El directivo enfatizó que <b>el colaborador fue atacado por el simple hecho de cumplir su deber profesional</b> de solicitarle a un usuario la validación del pago de la tarifa correspondiente para ingresar a la estación.</p><p>Gutiérrez extendió un llamado urgente a toda la ciudadanía bogotana a la corresponsabilidad, la tolerancia y el respeto por el personal de seguridad que custodia a los pasajeros a diario.</p><p><b>“La vida humana no puede valer menos que un pasaje”, concluyó la administración</b>, instando a la sociedad a resolver los conflictos mediante el diálogo y a rechazar cualquier agresión contra los trabajadores del transporte público.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WSDQAS533RGWJDW4CY2NW7FBYU.jpg?auth=b54a0ba7b81e5c34a30c13794e985e6cb72ebcc33ea5401c6e9f93ec89553c1f&amp;smart=true&amp;width=4532&amp;height=2885" type="image/jpeg" height="2885" width="4532"><media:description type="plain"><![CDATA[TransMilenio lamenta y condena el crimen de Cristian Garzón, vigilante atacado en Soacha.]]></media:description></media:content></item><item><title><![CDATA[Descuentos en la tecnomecánica: listado de los vehículos incluidos y por qué son beneficiados]]></title><link>https://www.semana.com/vehiculos/articulo/descuentos-en-la-tecnomecanica-listado-de-los-vehiculos-incluidos-y-por-que-son-beneficiados/202603/</link><guid isPermaLink="true">https://www.semana.com/vehiculos/articulo/descuentos-en-la-tecnomecanica-listado-de-los-vehiculos-incluidos-y-por-que-son-beneficiados/202603/</guid><dc:creator><![CDATA[Camilo Eduardo Velásquez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 01:10:03 +0000</pubDate><content:encoded><![CDATA[<p>La revisión tecnomecánica evalúa el estado de los vehículos para proteger la seguridad vial y evaluar su impacto ambiental. Por este último aspecto,<b> el Gobierno nacional establece incentivos tarifarios a los propietarios de vehículos eléctricos, aunque también incluyen otra serie de alivios por reinspección en caso de rechazo.</b></p><p>La Resolución 20213040039485 del Ministerio de Ambiente y Transporte, expedida en 2021, <b>dejó establecido que los vehículos eléctricos que ya deban presentarse a esta revisión pueden acceder a un descuento del 30 %.</b></p><p>Así, el Gobierno nacional definió que para este 2026, los precios de la revisión tecnomecánica para los carros eléctricos fueran los siguientes:</p><table><thead><tr><th><b>Antigüedad</b></th><th><b>Precio mínimo</b></th><th><b>Precio máximo</b></th></tr></thead><tbody><tr><td>0 a 2 años</td><td>$240,301&nbsp;&nbsp;</td><td>$275,808&nbsp;&nbsp;</td></tr><tr><td>3 a 7 años</td><td>$240,601&nbsp;</td><td>$276,108&nbsp;&nbsp;</td></tr><tr><td>8 a 16 años</td><td>$241,001&nbsp;&nbsp;</td><td>$276,508&nbsp;&nbsp;</td></tr><tr><td>17 o más</td><td>$240,601</td><td>$276,108&nbsp;&nbsp;</td></tr></tbody></table><p><i>*Gráfica del blog GrupoR5.com, incluyendo las tarifas de IVA (19%), RUNT, costo SICOV-INDRA (sistema integrado de control y vigilancia), recaudo bancario y tarifa ANSV: aporte a la Agencia Nacional de Seguridad Vial.</i></p><p><b>Las motos eléctricas también son beneficiadas por esta exención; sin embargo, en estas hay un costo menor a los carros,</b> ya que, per se, para los vehículos de dos ruedas se aplica un precio menor que en los automóviles. </p><table><thead><tr><th><b>Antigüedad</b></th><th><b>Precio mínimo</b></th><th><b>Precio máximo</b></th></tr></thead><tbody><tr><td>0 a 2 años</td><td>$152,446</td><td>$172,823</td></tr><tr><td>3 a 7 años</td><td>$152,656</td><td>$173,033</td></tr><tr><td>8 a 16 años</td><td>$152,866</td><td>$173,243</td></tr><tr><td>17 o más</td><td>$152,656</td><td>$173,033*</td></tr></tbody></table><p><i>*Gráfica del blog de GrupoR5.com editada por SEMANA</i>, <i>incluyendo las tarifas de IVA (19%), RUNT, costo SICOV-INDRA (sistema integrado de control y vigilancia), recaudo bancario y tarifa ANSV: aporte a la Agencia Nacional de Seguridad Vial.</i></p><p><b>El descuento del 30% se sustenta en la normativa con la simplificación del proceso de inspección.</b> Los expositores de esta norma especificaron que, al carecer de motor de combustión interna, los CDA omiten las siguientes pruebas complejas y los insumos requeridos para medirlas:</p><ol><li>Prueba de emisiones contaminantes y gases de escape.</li><li>Revisión del tubo de escape y silenciador.</li><li>Inspección del sistema de combustible (tanque, mangueras, inyectores o carburador).</li><li>Medición de ruido de motor.</li></ol><p>En cuanto a los requisitos, la legislación no establece ningún requisito extraordinario para acceder al descuento, pues <b>el CDA solamente le exigirá al conductor la licencia de conducción, las llaves o el control del vehículo, una recarga que permita el desarrollo de la prueba y el pago de la revisión.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/N47R5SVVDJATJG2COBIL3NAOQY.jpeg?auth=af2e9277ac8a7793de4db16afac8c2823e2ba210a19535982e80aba40bd0c905&smart=true&width=960&height=720" alt="La Superintendencia de Transporte señaló los aspectos que deben tener en cuenta los usuarios al acudir a un CDA." height="720" width="960"/><p>No obstante, la Superintendencia de Transporte sí insistió a los conductores colombianos que, <b>antes de ingresar sus vehículos al establecimiento, revisen que esté acreditado ante la ONAC.</b></p><h2>Reinspección gratuita en 15 días hábiles</h2><p>El otro alivio financiero en esta revisión está establecido en el <a href="https://www.semana.com/vehiculos/articulo/el-vehiculo-fallo-la-revision-tecnico-mecanica-esta-alternativa-de-oro-permite-a-los-conductores-ahorrar-dinero/202610/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/el-vehiculo-fallo-la-revision-tecnico-mecanica-esta-alternativa-de-oro-permite-a-los-conductores-ahorrar-dinero/202610/">Artículo 12 de la Resolución 3768 de 2013 del Ministerio de Transporte de Colombia.</a></p><p><b>Allí se expresa que el propietario o tenedor del vehículo cuenta con un término máximo de 15 días hábiles </b>—contados a partir de la fecha en que se expidió el Formulario Único de Resultados (FUR) con resultado “rechazado”— para efectuar las reparaciones.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/B5QXOUAZAZE4ZLPJDYPZONJ6KE.png?auth=4c6d05c77d7a3e33861541fd2d64d60c1039f5697dc9e677518cc854a2ef47ec&smart=true&width=1920&height=1080" alt="Esta determinación representa un gran alivio financiero para los conductores." height="1080" width="1920"/>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/B5QXOUAZAZE4ZLPJDYPZONJ6KE.png?auth=4c6d05c77d7a3e33861541fd2d64d60c1039f5697dc9e677518cc854a2ef47ec&amp;smart=true&amp;width=1920&amp;height=1080" type="image/png" height="1080" width="1920"><media:description type="plain"><![CDATA[La legislación colombiana establece una tabla de precios mínimos y máximos para los vehículos.]]></media:description></media:content></item><item><title><![CDATA[Los ocho canteranos de Atlético Nacional que Néstor Lorenzo escogió para la renovación en la Selección Colombia]]></title><link>https://www.semana.com/deportes/articulo/los-ocho-canteranos-de-atletico-nacional-que-nestor-lorenzo-escogio-para-la-renovacion-en-la-seleccion-colombia/202619/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/los-ocho-canteranos-de-atletico-nacional-que-nestor-lorenzo-escogio-para-la-renovacion-en-la-seleccion-colombia/202619/</guid><dc:creator><![CDATA[William Horacio Perilla Gamboa]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 01:03:19 +0000</pubDate><content:encoded><![CDATA[<p><a href="https://www.semana.com/noticias/atletico-nacional/" target="_blank" rel="noreferrer" title="https://www.semana.com/noticias/atletico-nacional/"><b>Atlético Nacional</b></a> resuena en Colombia por los diferentes movimientos de la última semana, agitada por demás por la noticia top del fichaje estrella de James Rodríguez, que es considerada una de las operaciones más importantes de la historia del fútbol colombiano. </p><p>La situación no paró ahí, <a href="https://www.semana.com/deportes/articulo/primera-asistencia-de-james-rodriguez-con-atletico-nacional-su-zurda-dio-el-gol-salvador-en-el-campin/202651/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/primera-asistencia-de-james-rodriguez-con-atletico-nacional-su-zurda-dio-el-gol-salvador-en-el-campin/202651/">pues el club verdolaga jugó en Bogotá contra el Internacional, donde el 10 debutó con asistencia en El Campín.</a> <a href="https://www.semana.com/deportes/articulo/revelan-la-nueva-marca-que-vestira-a-atletico-nacional-giro-radical-tras-la-salida-de-nike/202637/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/revelan-la-nueva-marca-que-vestira-a-atletico-nacional-giro-radical-tras-la-salida-de-nike/202637/">Luego se conoció la terminación de contrato con Nike</a> antes de la convocatoria de la Selección Colombia.</p><p>Hubo sorpresa en el país por la lista presentada, ya que se apuesta a una renovación total en la Selección Colombia tras el mundial 2026. Ya sin James Rodríguez y Juan Fernando Quintero, el equipo Tricolor quiere ‘nueva sangre’ para encaminar el proyecto hacia la Copa América 2028 y el Mundial 2030.</p><p>En este punto de la renovación, Atlético Nacional está jugando un papel fundamental, pues es el club que más canteranos aporta en esta convocatoria y se consolida, además, como el quipo con mejor trabajo en juveniles en el fútbol colombiano. No hay otra fuerza así en el FPC. Joyas como <b>Royer Caicedo o Óscar Perea</b> llaman la atención por la notificación de Lorenzo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DXRKMU3S4JGLNNKWY4W4YYPNUA.jpg?auth=4409c0a6d2bcb1523bbe99f68ea09b4a3a068b3364ba20020916dd41ec8ce560&smart=true&width=2000&height=1334" alt="El delantero de Colombia, Óscar Perea, festeja su anotación que le dio el tercer puesto a la Selección, al derrotar 1-0 a Francia en el Mundial Sub-20 en Chile.  (Foto Javier TORRES / AFP)" height="1334" width="2000"/><p>De la actual nómina de Atlético Nacional, que ya comparte con James Rodríguez en la sede deportiva de Guarne,<b> Samuel Velásquez y Juan Manuel Rengifo fueron convocados,</b> aumentando así el aporte a la Selección Colombia desde la Liga Betplay.</p><h2>Los canteranos de Atlético Nacional en la Selección Colombia</h2><ul><li><b>Kevin Mier:</b> Portero formado en Atlético Nacional, campeón en 2022, hoy en el Cruz Azul de México.</li><li><b>Juan Manuel Rengifo:</b> La joya de las canteras de Atlético Nacional que sería vendido en el próximo mercado de pases.</li><li><b>Royer Caicedo:</b> Defensa central, gran sorpresa en la lista de Néstor Lorenzo, que ya fue transferido al Cercle Brugge de Bélgica.</li></ul><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DCST6ZPLWFBLPDPLRNGOCLEQ6U.jpg?auth=8baf5af0303368b72b5547e78ba45bfdd1679a2f7a9395662d8e9f8bb834fb9c&smart=true&width=1080&height=1350" alt="Juan Rengifo y Samuel Velásquez." height="1350" width="1080"/><ul><li><b>Óscar Perea:</b> Jugador con proceso en las selecciones Colombia juveniles que hoy brilla en el América de México.</li><li><b>Dávinson Sánchez:</b> Líder de la defensa de la Selección Colombia, hoy en el Galatasaray de Turquía, campeón en 2016 de la Copa Libertadores.</li></ul><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/POIBIUB2PBCF3B42ZQVUCWOC6Q.jpg?auth=d876a6722cdde1b4b55e3caebfa3380c030c8e35a92455244aa1c30ce6d2b20b&smart=true&width=1080&height=1350" alt="Jhon Solís, Kevin Mier y Óscar Perea" height="1350" width="1080"/><ul><li><b>Édier Ocampo:</b> Otra de las sorpresas en la Selección Colombia que ya fue transferido al Vancouver Whitecaps de la MLS.</li><li><b>Jhon Solís:</b> Reciente fichaje del Birmingham, de la segunda división de Inglaterra, antes en el Girona.</li></ul><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/37UKEIJEN5FFXI6SL6JORP4C4A.jpg?auth=2045f717230d2bd1da4af95f452db64862cd6bc38cf03c88cee500c1e602ff60&smart=true&width=1080&height=1350" alt="Edier Ocampo, Dávinson Sánchez y Royer Caicedo" height="1350" width="1080"/><ul><li><b>Samuel Velásquez:</b> Lateral en proyección de Atlético Nacional, que estuvo a préstamo en el Tolima, pero ya hace parte del primer equipo.</li></ul><h2>Los partidos amistosos de Colombia</h2><p><b>Fecha: 26 de septiembre de 2026</b></p><ul><li>Colombia vs. México</li><li>Lugar: M&amp;T Bank Stadium de Baltimore, Maryland, Estados Unidos</li><li>Hora: Por confirmar</li></ul><p><b>Fecha: 2 de octubre de 2026</b></p><ul><li>Colombia vs. Paraguay</li><li>Lugar: Sports Illustrated Stadium, New Jersey, Estados Unidos</li><li>Hora: 7:00 p.m. (hora de Col)</li></ul><p><b>Fecha: 6 de octubre de 2026</b></p><ul><li>Colombia vs. Perú</li><li>Lugar: Nu Stadium, Miami, Estados Unidos</li><li>Hora: 6:45 p.m. (hora de Col)</li></ul>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PYGADJMX7VERTBACIMS4MEZEZQ.jpg?auth=91762620ea344f76301185ed89f00c8e418c1621ceaa94fbe228fbd8312dded2&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Néstor Lorenzo confía en la cantera de Atlético Nacional]]></media:description><media:credit role="author" scheme="urn:ebu">Mohamed Farag</media:credit></media:content></item><item><title><![CDATA[Shakira hace historia en Madrid: así fue la primera noche de su residencia, entre lágrimas, cumbia y orgullo colombiano ]]></title><link>https://www.semana.com/gente/articulo/shakira-hace-historia-en-madrid-asi-fue-la-primera-noche-de-su-residencia-entre-lagrimas-cumbia-y-orgullo-colombiano/202658/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/shakira-hace-historia-en-madrid-asi-fue-la-primera-noche-de-su-residencia-entre-lagrimas-cumbia-y-orgullo-colombiano/202658/</guid><dc:creator><![CDATA[Lorena Mahecha S. ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:43:58 +0000</pubDate><content:encoded><![CDATA[<p>Madrid tenía una cita con Shakira y, durante unas horas, pareció que Colombia también había viajado hasta la capital española. <b>La noche del viernes 18 de septiembre, en el Iberdrola Music</b> que se convirtió en una <a href="https://www.semana.com/gente/articulo/macondo-park-el-megaproyecto-de-15-hectareas-con-el-que-shakira-paralizara-madrid-por-mas-de-un-mes/202631/" target="_blank" rel="" title="https://www.semana.com/gente/articulo/macondo-park-el-megaproyecto-de-15-hectareas-con-el-que-shakira-paralizara-madrid-por-mas-de-un-mes/202631/">ciudad cultural llamada Macondo Park</a>, <b>la barranquillera abrió oficialmente su residencia europea con una primera presentación</b> que fue, al mismo tiempo, concierto, reencuentro y celebración de sus raíces.</p><p><b>SEMANA estuvo presente en esta primera noche de la residencia, una serie de doce conciertos que se extenderá hasta el 11 de octubre</b> y que constituye la única parada europea de su gira <i>Las Mujeres Ya No Lloran</i>. Live Nation confirmó las doce fechas en Madrid y estableció el inicio del espectáculo a las 8:30 de la noche.</p><p>Pero la experiencia comenzó mucho antes de que Shakira apareciera sobre el escenario. <b>A su alrededor estaba Macondo Park, la ciudad efímera de 220.000 </b>metros<b> cuadrados creada para acompañar la residencia</b> y que reúne 9 espacios dedicados a la literatura, la gastronomía, la moda, el arte y la música latinoamericana. La apuesta convirtió el regreso de la artista a España en algo que trasciende el concierto: una celebración cultural con acento latino.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CFYVR2FLAVB5JES4BZ5KKQRJJM.jpg?auth=e8a01aae6ec935a4334b71f19547ed787e0271f909e4db6abb257e3b7244375c&smart=true&width=3000&height=2001" alt="MADRID, SPAIN - SEPTEMBER 18: Singer Shakira performs onstage on the Opening night of her 12 date European residency at Shakira stadium during "La Mujeres Ya No Lloran" World Tour at Estadio Shakira on September 18, 2026 in Madrid, Spain. (Photo by Nicolas Gerardin/Getty Images / ABA via Getty Images)" height="2001" width="3000"/><h2>“Una loba se reencuentra con su manada”</h2><p><b>A las 8:45 p.m. las luces se apagaron y comenzó </b><i><b>La fuerte</b></i><b>.</b> Desde los primeros segundos, la sensación era la de estar frente a algo que llevaba demasiado tiempo esperando ocurrir. <b>Shakira, quien no se presentaba en un escenario español desde hace 8 años, apareció ante miles de personas</b> y pronunció las primeras palabras de la noche: “Buenas noches Madrid. Bienvenidos a nuestra residencia europea”.</p><p><b>Después llegó una confesión que resumió el espíritu del histórico concierto: “Yo no puedo creer que estoy aquí, parece como un sueño…”.</b></p><p>Y hubo algo más. <b>Shakira miró a Madrid como quien mira una ciudad que ha sido testigo de distintas versiones de sí misma</b>. “Recuerdo cuando alguien me dijo m<b>i</b>ra la cara con la que te fuiste y mira con la cara que volviste. <b>He vivido muchas cosas desde que me fui”, dijo, antes de reconocer que aquel regreso era también una prueba del cariño que ha recibido durante años.</b></p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">A esta hora, comienza la residencia de Shakira en Madrid. La colombiana vuelve a presentarse en la capital española después de ocho años. <a href="https://t.co/f0wz5K8LNE">https://t.co/f0wz5K8LNE</a> <a href="https://t.co/V9K1o4f2TG">pic.twitter.com/V9K1o4f2TG</a></p>&mdash; Revista Semana (@RevistaSemana) <a href="https://x.com/RevistaSemana/status/2101054176184635455?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p>“Es una prueba de cuánto amor y cuánto cariño me han dado a lo largo de los años. Les voy a dar lo mejor de mí”, aseguró.</p><p><b>La frase que terminó de definir el momento fue casi una declaración de principios: “Una loba se reencuentra con su manada”. Y entonces Madrid respondió.</b></p><p>La primera parte del espectáculo avanzó entre <i>Girl Like Me</i> y <i>Las de la intuición</i>. El público cantó, saltó y respondió a cada llamado de la colombiana. “Que todo el mundo cante”, pidió Shakira, y miles de voces hicieron suyo el coro de <i>Te felicito</i>.</p><p>Después llegó <i>TQG</i>, la colaboración con Karol G, una de las canciones que representan la nueva etapa de la artista y que, en Madrid, volvió a convertirse en un himno colectivo.</p><h2>De las heridas a la fuerza</h2><p><b>Uno de los momentos más cargados de emoción llegó cuando Shakira habló de las mujeres, de las caídas y de la capacidad de levantarse.</b> La colombiana recordó a la escritora Isabel Allende y pronunció una frase que encajó con el relato que ha construido durante esta etapa de su carrera. “<b>La vida tiene formas de recompensarlo a uno y esta es una de ellas. Ya saben que la vida no ha sido fácil, de las caídas nadie se salva. Lo que sí sé es que nosotras cada vez que nos caemos nos levantamos un poquito más sabias, un poquito más resilientes y más fuertes. Como dijo Isabel Allende, ‘Las mujeres solas somos vulnerables, pero juntas somos invencibles’”.</b></p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">Shakira envía un mensaje sobre el amor propio en su concierto en Madrid. Se estima que cerca de 55.000 personas asistieron a la primera noche de su residencia. <a href="https://t.co/f0wz5K8LNE">https://t.co/f0wz5K8LNE</a> <a href="https://t.co/REhiW7H9Jw">pic.twitter.com/REhiW7H9Jw</a></p>&mdash; Revista Semana (@RevistaSemana) <a href="https://x.com/RevistaSemana/status/2101054905356091685?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p>El discurso no quedó aislado de la música. <b>Shakira tomó una guitarra para interpretar </b><i><b>Don’t Bother</b></i><b> y luego llegó </b><i><b>Acróstico</b></i><b>, uno de los momentos más emotivos de la noche. </b>Mientras las imágenes de sus hijos acompañaban la canción, el espectáculo encontró una pausa íntima dentro de una producción de enormes dimensiones.</p><p>Después vino un cambio de vestuario y la energía volvió a subir. <i>Copa vacía</i>, <i>La bicicleta</i> y <i>La tortura</i> hicieron que el estadio recuperara el pulso de fiesta.</p><p>Y cuando sonó <i>Hips Don’t Lie</i>, Madrid dejó de parecer Madrid. La cumbia y el mapalé entraron al escenario y Shakira convirtió el espacio en una pista de baile con sabor al Caribe colombiano. “Gracias, los quiero mucho”, dijo la artista.</p><p><b>La noche continuó con </b><i><b>Chantaje</b></i><b>, acompañada de otro cambio de vestuario, y con </b><i><b>Loca</b></i><b>, interpretada junto a sus 14 bailarines.</b> Entonces llegó otro de los mensajes centrales del concierto: el amor propio. “La soltería es una oportunidad para aprender de uno mismo, de su propia compañía porque todo lo que uno necesita para ser feliz, como siempre me dijo mi padre, está dentro de ti misma, no afuera”, expresó.</p><p>Después, llegó <i>Soltera</i>.</p><h3>Madrid también es parte de su historia</h3><p><b>Shakira volvió a cambiar de vestuario para entrar en la parte más nostálgica del espectáculo. </b><i><b>Pies descalzos</b></i><b>, </b><i><b>¿Dónde estás corazón?</b></i><b> y </b><i><b>Antología</b></i> conectaron a la artista con la mujer que comenzó su carrera décadas atrás.</p><p>Pero hubo una canción que tenía que estar en Madrid. <i>Te dejo Madrid</i> fue acompañada por una historia personal sobre la relación de la cantante con España. “Qué lindo es cantar con ustedes aquí, un lugar que ha sido parte de mí, los mejores momentos de mi vida los viví aquí en España. <b>Me convertí en madre, ustedes me han visto llegar, cambiar, caer, levantarme. Y eso es gracias a tanto amor, gracias por estar aquí”, dijo.</b></p><p>La frase tenía un peso especial. Madrid no era simplemente una parada más de la gira. Era una ciudad en la que <b>Shakira vivió momentos decisivos de su vida y que ahora se convierte en escenario de una residencia pensada para cerrar su recorrido europeo.</b> </p><p>La parte final tuvo una dosis adicional de afición deportiva. <b>Shakira gritó: “Madrid, campeón del mundial”, antes de cantar </b><i><b>Dai Dai</b></i><b> y </b><i><b>Waka Waka</b></i><b>. </b>La primera está vinculada al Mundial de 2026 y la segunda permanece como uno de los himnos más reconocibles de su carrera. </p><h2>Una lluvia de billetes y una despedida latina</h2><blockquote class="twitter-tweet"><p lang="es" dir="ltr">Shakira cerró la primera noche de su residencia en Madrid con su canción junto al productor argentino Bizarrap. Finalizó agradeciendo a Madrid y a Latinoamérica. <a href="https://t.co/f0wz5K8LNE">https://t.co/f0wz5K8LNE</a> <a href="https://t.co/ArrvQAzxUx">pic.twitter.com/ArrvQAzxUx</a></p>&mdash; Revista Semana (@RevistaSemana) <a href="https://x.com/RevistaSemana/status/2101056489460732099?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p>Para el cierre, <b>Shakira se trasladó al centro del público para interpretar su colaboración con Bizarrap. Mientras sonaba </b><i><b>Bzrp Music Sessions #53</b></i><b>,</b> comenzaron a caer billetes falsos con el rostro de la cantante, una referencia visual a la célebre frase de la canción sobre Hacienda.</p><p>Era el último golpe de energía de una noche construida sobre tres décadas de canciones: desde la Shakira de <i>Pies descalzos</i> hasta la mujer que convirtió sus rupturas, sus aprendizajes y su transformación personal en música.</p><p>A las 10:50 de la noche, <b>Shakira abandonó el escenario. Pero la noche todavía no había terminado.</b></p><p>El centro de Macondo Park se transformó entonces en una extensión del Carnaval de Barranquilla. Más de 130 hacedores de la fiesta viajaron desde Colombia para llevar a Madrid una muestra del folclor del Caribe colombiano.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">A esta hora, la delegación del Carnaval de Barranquilla que viajó desde Colombia se presenta en la residencia de Shakira en Madrid. 130 personas recorren el recinto cultural al son de mapalé y cumbia. <a href="https://t.co/f0wz5K9jDc">https://t.co/f0wz5K9jDc</a> <a href="https://t.co/ara8KNunm6">pic.twitter.com/ara8KNunm6</a></p>&mdash; Revista Semana (@RevistaSemana) <a href="https://x.com/RevistaSemana/status/2101063752502382713?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p><b>Cumbia, mapalé, música, disfraces y danza tomaron el espacio mientras los asistentes, todavía emocionados después del concierto</b>, se dejaron contagiar por la fiesta. La delegación colombiana había llegado a Madrid para acompañar la residencia y terminó convirtiendo el cierre de la primera noche en una postal profundamente colombiana.</p><p>Fue, de alguna manera, el último mensaje de la noche: <b>Shakira podía estar en Madrid, pero sus raíces estaban allí también.</b></p><p>Antes de despedirse, la artista había dejado claras sus coordenadas: “<b>Gracias Europa, gracias Latinoamérica, gracias Madrid, gracias mi gente latina”.</b></p><p><b>Y así terminó la primera noche de una residencia que apenas comienza. </b>Doce fechas, una ciudad cultural llamada Macondo Park, miles de personas y una colombiana que volvió a un escenario español después de años para reencontrarse con su público.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3YTXQZZYDRBHJAPYKME2XJQKBU.jpg?auth=089a460af618690e7b54c99a311bf28d46ac450bb6ba16d44103cfecab15c924&amp;smart=true&amp;width=3000&amp;height=2001" type="image/jpeg" height="2001" width="3000"><media:description type="plain"><![CDATA[Shakira en Madrid. (Photo by Nicolas Gerardin/Getty Images / ABA via Getty Images)]]></media:description><media:credit role="author" scheme="urn:ebu">Nicolas Gerardin</media:credit></media:content></item><item><title><![CDATA[En la era de la IA, cuatro factores determinan si un proyecto logra escalar en las empresas: “Todo implica pruebas y ajustes en el camino”]]></title><link>https://www.semana.com/economia/capsulas/articulo/en-la-era-de-la-ia-cuatro-factores-determinan-si-un-proyecto-logra-escalar-en-las-empresas-todo-implica-pruebas-y-ajustes-en-el-camino/202646/</link><guid isPermaLink="true">https://www.semana.com/economia/capsulas/articulo/en-la-era-de-la-ia-cuatro-factores-determinan-si-un-proyecto-logra-escalar-en-las-empresas-todo-implica-pruebas-y-ajustes-en-el-camino/202646/</guid><dc:creator><![CDATA[Redacción Economía Revista Semana]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:31:50 +0000</pubDate><content:encoded><![CDATA[<p>La implementación de inteligencia artificial en las empresas no depende únicamente del modelo elegido. Según JumpCube, compañía de implementación de IA para empresas, <b>costo, independencia, velocidad y control son los cuatro factores</b> que deben considerarse desde el inicio para determinar si un proyecto puede escalar dentro de una operación.</p><p>“<b>Todo siempre implica pruebas y ajustes en el camino, pero la diferencia está en enfocarse en estos cuatro factores desde el principio. </b>El costo no es solo cuánto vale la herramienta, es cuánto tiempo de la gente y cuántos <i>tokens </i>consume el proceso completo; si eso no se controla, terminas pagando más de lo que ahorrabas o miles de horas de consultoría en algo que pudo resolverse mucho más rápido”, afirmó Mauricio Lince, CEO de JumpCube.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3KWI46XDFVEYTLBDDHHK6UZ4E4.png?auth=7c43e6f56932880cfbc0aa98728b2b143f7c8448849e75dd9ff643416a55109a&smart=true&width=1179&height=746" alt="Mauricio Lince, CEO de JumpCube." height="746" width="1179"/><p>En materia de costos, la compañía plantea que las empresas deben evaluar el precio de las herramientas, el tiempo de sus equipos y el consumo de tokens. El objetivo es que la implementación reduzca el costo total del proceso.</p><p>La independencia tecnológica, por su parte, implica no depender de un único proveedor y poder seleccionar el modelo más adecuado para cada tarea. <b>Lince también señala la importancia de evitar que procesos críticos queden sujetos a personas específicas.</b></p><p>La velocidad es otro factor. Para JumpCube, una implementación que tarda meses puede perder valor, especialmente en sectores como el asegurador, donde los tiempos de respuesta hacen parte de la operación.</p><p>Finalmente, la gobernanza busca mantener el control sobre los sistemas y los datos. Esto incluye permisos, trazabilidad y límites sobre la información que pueden procesar los copilotos.</p><p>En este contexto, JumpCube desarrolló su <i>Gateway de IA</i>, una plataforma presentada recientemente en Texas para centralizar la gobernanza de copilotos y procesos de <i>back office</i> y servicio al cliente, con visibilidad sobre accesos, uso y consumo.</p><p>La compañía sostiene que estos criterios deben incorporarse desde el diagnóstico hasta la implementación, gobernanza y soporte de las soluciones de inteligencia artificial.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Z4EEXUX5TFHBTJE5Q4GN6PC574.jpg?auth=7a48c111d9c55950e26693fe42132f51aee3031e0a5129618b2a99d6396ca9a7&amp;smart=true&amp;width=6221&amp;height=4147" type="image/jpeg" height="4147" width="6221"><media:description type="plain"><![CDATA[Imagen de referencia.]]></media:description><media:credit role="author" scheme="urn:ebu">KaiFixed</media:credit></media:content></item><item><title><![CDATA[Bayern Múnich y Luis Díaz se unen al festival más grande del mundo: así fue el homenaje a la bebida insignia alemana]]></title><link>https://www.semana.com/deportes/articulo/bayern-munich-y-luis-diaz-se-unen-al-festival-mas-grande-del-mundo-asi-fue-el-homenaje-a-la-bebida-insignia-alemana/202640/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/bayern-munich-y-luis-diaz-se-unen-al-festival-mas-grande-del-mundo-asi-fue-el-homenaje-a-la-bebida-insignia-alemana/202640/</guid><dc:creator><![CDATA[William Horacio Perilla Gamboa]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:18:40 +0000</pubDate><content:encoded><![CDATA[<p>Bayern Múnich goleó 7-0 al Unión Berlín en el Allianz Arena, en la cuarta fecha de la Bundesliga, con un doblete de Harry Kane que selló un récord goleador en Alemania. Michael Olise, Jamal Musiala e Ismael Saibari también marcaron para ampliar el marcador.</p><p>Con 10 puntos en el casillero después de cuatro fechas, los hombres de Vincent Kompany meten presión a Friburgo y Dortmund, los dos únicos equipos de la Bundesliga que han ganado sus tres primeros partidos y que se desplazan a Frankfurt y Stuttgart este fin de semana.</p><p>Tras el gol inicial de Jamal Musiala (18′), <b>Harry Kane transformó un penal provocado por Michael Olise (39′).</b> El inglés anotó así su centésimo tanto en la Bundesliga en 98 partidos, un nuevo récord para el campeonato alemán.</p><p>En medio de la locura por Harry Kane y los siete goles del Bayern,<b> causó mucha curiosidad la camiseta que lució </b><a href="https://www.semana.com/noticias/luis-diaz/" target="_blank" rel="noreferrer" title="https://www.semana.com/noticias/luis-diaz/"><b>Luis Díaz</b></a><b> </b>y demás jugadores en este partido. Pues bien, todo tiene que ver con el festival cervecero más grande del mundo que da inicio este 19 de septiembre en Múnich.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7TCSDPGPCZGZTBWL4EVUUBM6WM.jpg?auth=fe627d734d5e172b20bbd4d287067d40aadad42869c29447e3da500b109a9ff4&smart=true&width=6000&height=4000" alt="Luis Díaz contra el Unión Berlín" height="4000" width="6000"/><p>La camiseta del Bayern tiene el logo tradicional de Adidas y una serie de pinturas que evocan los sabores y la pluralidad que se ven en este tipo de eventos. Vale resaltar que Alemania tiene a la cerveza como su bebida insignia y el club de Múnich siempre se une a esta celebración y se deja ver en los eventos con varias marcas cerveceras.</p><h2>Festival de la cerveza y Harry Kane</h2><p>En la antesala del Oktoberfest, Kane volvió a imponer sus récords con el Bayern y ahora supera a<b> Dieter Müller </b>con sus 100 goles, quien ostentaba el récord anterior. </p><p>El legendario exdelantero del FC Colonia necesitó 129 partidos para llegar a los 100 goles en la Bundesliga a principios de la década de 1970. <b>Harry llegó a ese número en 98 juegos.</b></p><p>“Personalmente, muy orgulloso de llegar a 100 goles en la Bundesliga en tiempo récord, nunca posible sin todo el apoyo de los compañeros de equipo y el personal y los aficionados”, escribió Harry Kane en las redes sociales.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/T6RJYQRP3ZGK5PVR3LT27ZSJPU.jpg?auth=e70aac2862d2b0c35ca90420235384faf7fc433e5fe398b44aef9ed5b878bb03&smart=true&width=6480&height=4320" alt="Harry Kane contra el Unión Berlín" height="4320" width="6480"/><p>Es el último récord que el capitán de Inglaterra ha destrozado durante su estancia en Múnich, después de haberse convertido ya en el jugador del Bayern que más rápido alcanzó los <b>75, 100 y 150</b> goles entre todas las competiciones. Sin duda, un récord que le coloca como gran favorito para el Balón de Oro.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/W6QQNFS3JNFKBI2SYNJVEZGAQU.jpg?auth=b5b520c3a98ea7ab1c5aa53024eb1c9bb3fcf503ce84fdef6164e28744c8ae62&amp;smart=true&amp;width=3015&amp;height=2011" type="image/jpeg" height="2011" width="3015"><media:description type="plain"><![CDATA[Luis Díaz en el Bayern Múnich con particular camiseta.]]></media:description><media:credit role="author" scheme="urn:ebu">DeFodi Images</media:credit></media:content></item><item><title><![CDATA[Gesto de Luis Díaz levanta dudas en Bayern Múnich: así reaccionó a su cambio contra Unión Berlín]]></title><link>https://www.semana.com/deportes/articulo/gesto-de-luis-diaz-levanta-dudas-en-bayern-munich-asi-reacciono-a-su-cambio-contra-union-berlin/202628/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/gesto-de-luis-diaz-levanta-dudas-en-bayern-munich-asi-reacciono-a-su-cambio-contra-union-berlin/202628/</guid><dc:creator><![CDATA[Miguel Alejandro Cruz Ruiz]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:17:28 +0000</pubDate><content:encoded><![CDATA[<p><a href="https://www.semana.com/deportes/articulo/dia-negro-para-luis-diaz-faena-del-bayern-munich-sin-el-guajiro-en-bundesliga/202657/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/dia-negro-para-luis-diaz-faena-del-bayern-munich-sin-el-guajiro-en-bundesliga/202657/">Siguen sin ser días buenos para Luis Díaz en Bayern Múnich</a>. Este viernes, 18 de septiembre de 2026, y a pesar de haber sido titular con el cuadro bávaro ante Unión Berlín, el guajiro ni marcó ni asistió.</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/hqgHTU43LdM?si=0bDYPfXL8PXiVpv-" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p>Parece cuestión de tiempo para que <a href="https://www.semana.com/noticias/luis-diaz/" target="_blank" rel="" title="https://www.semana.com/noticias/luis-diaz/"><b>Luis Díaz</b></a> recupere su confianza en Bayern Múnich. El arranque de temporada, sin gol y sin asistencias, ha generado todo tipo de críticas sobre el guajiro.</p><p>Este viernes, <b>Lucho salió sustituido a los 63′ para darle ingreso a Ismael Saibari</b>. En ese instante, una cámara de la transmisión oficial del evento captó la reacción del guajiro.</p><h2>La reacción de Luis Díaz al salir sustituido en Bayern Múnich</h2><p><b>Cara larga, mirada a lo lejos... el gesto de Luis Díaz, por el cambio, resuena en el mundo </b><a href="https://www.semana.com/noticias/bayern-munich/" target="_blank" rel="" title="https://www.semana.com/noticias/bayern-munich/"><b>Bayern Múnich.</b></a> Demuestra lo que vive, algo que parecía impensado en la temporada anterior.</p><p><blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/reel/DdcUj7_lDwJ/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:16px;"> <a href="https://www.instagram.com/reel/DdcUj7_lDwJ/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"> <div style=" display: flex; flex-direction: row; align-items: center;"> <div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div></div></div><div style="padding: 19% 0;"></div> <div style="display:block; height:50px; margin:0 auto 12px; width:50px;"><svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-511.000000, -20.000000)" fill="#000000"><g><path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"></path></g></g></g></svg></div><div style="padding-top: 8px;"> <div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;">Ver esta publicación en Instagram</div></div><div style="padding: 12.5% 0;"></div> <div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"><div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> <div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div></div><div style="margin-left: 8px;"> <div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"></div> <div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"></div></div><div style="margin-left: auto;"> <div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> <div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> <div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div></div></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"></div></div></a><p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"><a href="https://www.instagram.com/reel/DdcUj7_lDwJ/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank">Una publicación compartida de ESPN Colombia (@espncolombia)</a></p></div></blockquote>
<script async src="//www.instagram.com/embed.js"></script></p><p>Al final, Bayern Múnich le propinó una histórica goleada a Unión Berlín: <a href="https://www.semana.com/deportes/articulo/bayern-munich-de-luis-diaz-sacude-la-tabla-en-bundesliga-historica-goleada-a-union-berlin/202634/" target="_blank" rel="" title="https://www.semana.com/deportes/articulo/bayern-munich-de-luis-diaz-sacude-la-tabla-en-bundesliga-historica-goleada-a-union-berlin/202634/">un lapidario 7-0 que deja a los bávaros como líderes parciales de Bundesliga</a>, al menos hasta que Friburgo y Borussia Dortmund se pongan al día.</p><p>Mientras tanto, en redes sociales siguen poniendo el grito en el cielo por el nivel de Luis Díaz. Vienen dos semanas de parón, por la fecha Fifa, y puede ser la oportunidad para que el guajiro se recupere físicamente.</p><h2>Luis Díaz, fuera de una renovada Selección Colombia</h2><p>La actualidad de Luis Díaz en Bayern Múnich tiene impacto directo de la Selección Colombia. <a href="https://www.semana.com/amp/deportes/articulo/hay-razon-detras-de-la-no-convocatoria-a-luis-diaz-nestor-lorenzo-revelo-la-llamada-que-tuvieron/202635/" target="_blank" rel="" title="https://www.semana.com/amp/deportes/articulo/hay-razon-detras-de-la-no-convocatoria-a-luis-diaz-nestor-lorenzo-revelo-la-llamada-que-tuvieron/202635/">Néstor Lorenzo, entrenador de La Tricolor, decidió no llamar al guajiro</a> para esta fecha Fifa de septiembre y octubre.</p><p> “En algunos casos, como el de Luis Díaz, por ejemplo, hablé con él y le dije: ‘<b>Te veo cansado, Lucho. No tienes el sprint que es tuyo, ¿qué te pasa?’</b>, y bueno, consensuamos que descanse esta fecha porque tiene más de 60 partidos”, reveló Lorenzo en rueda de prensa.</p><p>La baja de Luis Díaz es la más llamativa en esta convocatoria de la <a href="https://www.semana.com/noticias/seleccion-colombia/" target="_blank" rel="noreferrer" title="https://www.semana.com/noticias/seleccion-colombia/"><b>Selección Colombia</b></a>. Sin embargo, no se trata de un adiós permanente, pues Lorenzo está esperando para que se ponga a punto lo más rápido posible.</p><p>Algo que sí se lleva las miradas es que la Selección Colombia tiene una nómina renovada. Ya sin James Rodríguez, ni Juan Fernando Quintero, el plantel cafetero ahora está integrado por nuevas promesas.</p><p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">📋 ¡𝗨𝗻𝗮 𝗻𝘂𝗲𝘃𝗮 𝗶𝗹𝘂𝘀𝗶𝗼́𝗻 𝗰𝗼𝗻 𝗢𝗥𝗚𝗨𝗟𝗟𝗢 𝗖𝗢𝗟𝗢𝗠𝗕𝗜𝗔𝗡𝗢! <br><br>𝙀𝙡𝙡𝙤𝙨 𝙨𝙤𝙣 𝙡𝙤𝙨 𝙚𝙡𝙚𝙜𝙞𝙙𝙤𝙨 𝙥𝙤𝙧 𝙉𝙚́𝙨𝙩𝙤𝙧 𝙇𝙤𝙧𝙚𝙣𝙯𝙤 𝙥𝙖𝙧𝙖 𝙙𝙞𝙨𝙥𝙪𝙩𝙖𝙧 𝙡𝙖 𝙛𝙚𝙘𝙝𝙖 𝙁𝙄𝙁𝘼 𝙙𝙚 𝙨𝙚𝙥𝙩𝙞𝙚𝙢𝙗𝙧𝙚/𝗼𝗰𝘁𝘂𝗯𝗿𝗲. 💪… <a href="https://t.co/swHglIb5iI">pic.twitter.com/swHglIb5iI</a></p>&mdash; Selección Colombia (@FCFSeleccionCol) <a href="https://x.com/FCFSeleccionCol/status/2100685562604847174?ref_src=twsrc%5Etfw">September 17, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p><b>Samuel Velásquez, Camilo Durán y Juan Manuel Rengifo son algunos de los nombres nuevos que Lorenzo</b> podrá probar en los amistosos ante México, Paraguay y Perú. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PMX4AKCQENAEFEYCXTIOUY6NWQ.png?auth=74ff8c6bfd684ac3fb3703b7eec6a99b6fbadef30f1cbf71399d7a0616f2835d&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Luis Díaz (der.) salió sustituido en el segundo tiempo, ante Unión Berlín, y ni anotó ni asistió en la goleada del Bayern.]]></media:description></media:content></item><item><title><![CDATA[Presidente De La Espriella envió advertencia contra los cabecillas de los grupos armados: “Vamos tras de ustedes”]]></title><link>https://www.semana.com/politica/articulo/presidente-de-la-espriella-envio-advertencia-contra-los-cabecillas-de-los-grupos-armados-no-tendran-tregua/202638/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/presidente-de-la-espriella-envio-advertencia-contra-los-cabecillas-de-los-grupos-armados-no-tendran-tregua/202638/</guid><dc:creator><![CDATA[Daniel Armando Méndez Suárez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:15:38 +0000</pubDate><content:encoded><![CDATA[<p>En una acción ofensiva conjunta entre la <a href="https://www.semana.com/nacion/articulo/tension-en-norte-de-santander-eln-reconoce-que-tiene-retenidos-a-tres-integrantes-de-la-dijin-y-una-mujer/202652/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/tension-en-norte-de-santander-eln-reconoce-que-tiene-retenidos-a-tres-integrantes-de-la-dijin-y-una-mujer/202652/">Policía Nacional y el Ejército Nacional, </a>las autoridades lograron <b>la captura de siete presuntos integrantes de una red criminal dedicada al robo de combustible</b>.</p><p>El operativo se desarrolló en los municipios de Aguachica, Cesar, así como en Ocaña y Ábrego, Norte de Santander, en cumplimiento de las directrices estratégicas de la campaña militar y policial Urano.</p><p>De acuerdo con el reporte oficial entregado por <a href="https://www.semana.com/politica/articulo/abelardo-de-la-espriella-tomo-decision-final-sobre-si-saldra-del-pais-para-asistir-a-la-asamblea-general-de-la-onu-yo-prometi/202640/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/abelardo-de-la-espriella-tomo-decision-final-sobre-si-saldra-del-pais-para-asistir-a-la-asamblea-general-de-la-onu-yo-prometi/202640/">el presidente Abelardo De la Espriella,</a> los capturados deberán responder ante la justicia por los delitos de <b>concierto para delinquir y apoderamiento ilícito de hidrocarburos</b>.</p><p>Las investigaciones determinaron que la organización mantenía un radio de acción delictivo coordinado en los municipios cesarenses de San Alberto, San Martín, Aguachica, Pelaya y Pailitas.</p><h2>Vínculos con el ELN e instalación de válvulas ilícitas</h2><p>La información operacional recolectada por los organismos de inteligencia evidenció que la red criminal <b>gestionaba y financiaba la instalación de válvulas clandestinas sobre los poliductos de la región</b> para extraer el crudo de manera ilegal.</p><p>Estas maniobras no solo afectaban la infraestructura energética del país, sino que generaban graves riesgos ambientales para las comunidades aledañas.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/IUTCJBNKJRA73IEU464NFHJ7XQ.jpeg?auth=6402e1b0a992a502fffb49bb59163545c40a07fce6d90598fc0ab028c06d9d45&smart=true&width=1600&height=811" alt="Los siete detenidos." height="811" width="1600"/><p>Asimismo, las autoridades confirmaron que las actividades de extracción y comercialización ilegal de combustible <b>se realizaban con el apoyo y la articulación del grupo armado ilegal ELN</b>.</p><p>La alianza criminal permitía sostener el flujo de finanzas ilícitas destinadas al aprovisionamiento logístico de las estructuras insurgentes que delinquen en el nororiente colombiano.</p><h2>“Vamos tras sus cabecillas”: el mensaje del presidente</h2><p>El jefe de Estado ratificó la determinación de la Fuerza Pública para desarticular por completo los eslabones económicos que sostienen el accionar delictivo en las regiones afectadas.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">¡Seguimos golpeando las economías criminales!<br><br>En desarrollo de la campaña militar y policial URANO, nuestra Policía Nacional, en coordinación con el Ejército Nacional, capturó a siete personas en Aguachica, Ocaña y Ábrego por concierto para delinquir y apoderamiento de… <a href="https://t.co/Jk5IKjP4Kj">pic.twitter.com/Jk5IKjP4Kj</a></p>&mdash; Abelardo De La Espriella (@ABDELAESPRIELLA) <a href="https://x.com/ABDELAESPRIELLA/status/2101081805348536560?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p><b>El mandatario enfatizó que la estrategia operacional se enfocará en la neutralización de los cabecillas principales</b> y el rastreo de los bienes adquiridos mediante el apoderamiento de combustible.</p><p>“Vamos tras sus cabecillas, sus redes y el dinero que financia el terror. ¡No tendrán tregua!”, sentenció el presidente De la Espriella. Entre tanto, los siete detenidos <b>fueron puestos a disposición de la Fiscalía General de la Nación</b> para avanzar en las audiencias de legalización de captura, imputación de cargos y medida de aseguramiento en centro carcelario.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/URVPAREQW5DHXLB5MEVDIJY7ZM.jpg?auth=fbfe60e107fae4630978b8a260c34122606575d65db00115c9f021ca4701f987&amp;smart=true&amp;width=2506&amp;height=1857" type="image/jpeg" height="1857" width="2506"><media:description type="plain"><![CDATA[Presidente Abelardo De La Espriella anunció la captura de siete personas.]]></media:description></media:content></item><item><title><![CDATA[Gerente general de Faber-Castell Colombia explica por qué un papel en blanco todavía tiene algo que la IA no puede reemplazar]]></title><link>https://www.semana.com/tecnologia/articulo/gerente-general-de-faber-castell-colombia-explica-por-que-un-papel-en-blanco-todavia-tiene-algo-que-la-ia-no-puede-reemplazar/202642/</link><guid isPermaLink="true">https://www.semana.com/tecnologia/articulo/gerente-general-de-faber-castell-colombia-explica-por-que-un-papel-en-blanco-todavia-tiene-algo-que-la-ia-no-puede-reemplazar/202642/</guid><dc:creator><![CDATA[David Alejandro Rojas García]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:08:42 +0000</pubDate><content:encoded><![CDATA[<p>Mientras la inteligencia artificial avanza a gran velocidad y <a href="https://www.semana.com/tecnologia/articulo/dario-tiene-razon-elon-musk-y-sam-altman-reaccionan-a-la-advertencia-que-sorprendio-al-mundo-de-la-ia/202609/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/dario-tiene-razon-elon-musk-y-sam-altman-reaccionan-a-la-advertencia-que-sorprendio-al-mundo-de-la-ia/202609/">algunos de sus principales desarrolladores ya plantean la necesidad de establecer límites y reglas para su desarrollo</a>, también crece el debate sobre cómo estas herramientas pueden cambiar la manera en que las personas piensan y crean. En ese contexto, Angela Peters, gerente general de A.W. Faber-Castell Colombia Ltda., habló con <i>SEMANA </i>sobre el lugar que todavía ocupa la creatividad humana.</p><p>Durante una conversación con <i>SEMANA</i>, Peters reflexionó sobre el futuro de la creatividad en medio del avance de estas tecnologías y planteó que la inteligencia artificial no necesariamente significa el fin de la creación humana.</p><h2>La creatividad que nace de una idea propia</h2><p>Para la gerente general de Faber-Castell Colombia, <b>existe una diferencia entre utilizar una herramienta para encontrar una respuesta y construir una idea desde cero.</b></p><p>“La inteligencia artificial no va a reemplazar la creatividad”, afirmó Peters. Según explicó, estos sistemas dependen de la información que reciben para generar sus respuestas, mientras que la capacidad humana permite imaginar posibilidades que todavía no han sido planteadas.</p><p>“La inteligencia artificial solo aprende de lo que se le dice o se le alimenta”, señaló.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CU7LZY3B4BF2HNLQ3QLDWEE7ZQ.png?auth=546f4ca0556dbb3c1c5a6805977a916fad12d74ac2934d14e59b24f4a9f7ebe4&smart=true&width=1280&height=720" alt="La gerente general de Faber-Castell Colombia habló sobre el riesgo de depender demasiado de las respuestas de la IA." height="720" width="1280"/><p>La ejecutiva también expresó una preocupación relacionada con la facilidad para obtener respuestas inmediatas. A su juicio, el uso constante de estas herramientas podría hacer que algunas personas reduzcan el esfuerzo de analizar por cuenta propia.</p><p>“Hoy en día hay tanta inteligencia artificial, tanta ayuda, que tal vez no estemos pensando lo suficiente”, sostuvo Peters.</p><h2>El valor de enfrentarse a una hoja vacía</h2><p>Peters considera que <b>las actividades artísticas pueden conservar un espacio importante </b>precisamente porque obligan a la persona a experimentar y tomar sus propias decisiones.</p><p>“Yo tengo un papel en blanco y el computador no me va a apuntar nada en mi papel, o todavía no, quién sabe si en un futuro”, explicó.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ALUNBPK6NVESLIN6E72BUZVHAA.jpg?auth=c3aa21a03e34b90302d4ca6bf86216b9252c5f9046f138ce18080e9e3afbe59a&smart=true&width=2121&height=1414" alt="Ángela Peters destacó el valor de crear sin tener una respuesta lista antes de comenzar." height="1414" width="2121"/><p>Para la gerente, ese papel vacío representa una oportunidad para escribir, dibujar, probar ideas y expresar pensamientos propios, en lugar de partir de una respuesta proporcionada por una herramienta digital.</p><p>“Me da como esos espacios para ver y experimentar y escribir o poner mis frases y no frases que me está alimentando una máquina”, concluyó Peters.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/BJPQSNYMHJC4BFFP6ZKL6WFO2U.png?auth=1c1382b120240f857324bebdb9bba8d2f484cc1fe678260f781a6a38f8be8f22&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Ángela Peters explicó por qué la creatividad humana aún conserva un espacio propio.]]></media:description></media:content></item><item><title><![CDATA[Luto en la música: muere ganador de la primera edición de ‘La Voz’ tras varios días desaparecido]]></title><link>https://www.semana.com/gente/articulo/luto-en-la-musica-muere-querido-ganador-de-la-primera-edicion-de-la-voz-tras-varios-dias-desaparecido/202606/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/luto-en-la-musica-muere-querido-ganador-de-la-primera-edicion-de-la-voz-tras-varios-dias-desaparecido/202606/</guid><dc:creator><![CDATA[Valentina Rueda Rodríguez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:06:06 +0000</pubDate><content:encoded><![CDATA[<p>El cantante británico-neerlandés Ben Saunders, recordado internacionalmente por convertirse en el primer ganador en la historia del formato <i>The Voice</i>, fue hallado sin vida este martes 15 de septiembre en las afueras de la ciudad de Arnhem, en Países Bajos. </p><p>El artista, de 43 años,<b> había sido reportado como desaparecido días atrás,</b> lo que motivó un amplio despliegue de los organismos de socorro.</p><p>La desaparición de Saunders <b>movilizó a los cuerpos de seguridad locales, que implementaron un operativo de rastreo compuesto por personal en tierra</b>, unidades caninas, buzos y apoyo aéreo. </p><p>Tras varias jornadas de labores, las autoridades confirmaron la localización de su cuerpo en las inmediaciones del lago Rijkerswoerdse Plassen.</p><p>Por el momento, <b>los organismos de investigación mantienen abiertas las diligencias para esclarecer las causas exactas del fallecimiento. </b></p><p>De acuerdo con las primeras informaciones divulgadas por las autoridades locales, se descartó la hipótesis de un hecho violento en el lugar del hallazgo.</p><p><blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/reel/Daz9dK7MlQB/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:16px;"> <a href="https://www.instagram.com/reel/Daz9dK7MlQB/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"> <div style=" display: flex; flex-direction: row; align-items: center;"> <div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div></div></div><div style="padding: 19% 0;"></div> <div style="display:block; height:50px; margin:0 auto 12px; width:50px;"><svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-511.000000, -20.000000)" fill="#000000"><g><path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"></path></g></g></g></svg></div><div style="padding-top: 8px;"> <div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;">Ver esta publicación en Instagram</div></div><div style="padding: 12.5% 0;"></div> <div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"><div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> <div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div></div><div style="margin-left: 8px;"> <div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"></div> <div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"></div></div><div style="margin-left: auto;"> <div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> <div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> <div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div></div></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"></div></div></a><p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"><a href="https://www.instagram.com/reel/Daz9dK7MlQB/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank">Una publicación compartida por Femke van Liempt Podcast | Interviewer &amp; Spreker (@femkevanliempt_podcast)</a></p></div></blockquote>
<script async src="//www.instagram.com/embed.js"></script></p><p>En 2010, a los 28 años, <b>Ben Saunders se inscribió en la primera edición de </b><i><b>The Voice of Holland</b></i><b>.</b> Su audición con el tema <i>Use Somebody</i>, de la banda Kings of Leon, conquistó tanto al jurado como a la audiencia. </p><p>En la gran final<b> celebrada a comienzos de 2011, se coronó como el primer vencedor del certamen, hito que marcó el inicio de una franquicia</b> de entretenimiento que más tarde se adaptaría en decenas de países, incluidos Estados Unidos, Reino Unido, México y Colombia.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/F-s1f3-Tb4o?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="THE Voice of Holland, Use Somebody by Ben Saunders"></iframe><p>Posterior a su paso por el concurso, el cantante consolidó su carrera discográfica con el lanzamiento de dos trabajos de estudio: <i>You Thought You Knew Me by Now</i> y <i>Heart &amp; Soul</i>. </p><p>Paralelamente a su actividad en los escenarios, <b>Saunders ejerció como artista del tatuaje y administró su propio estudio, aspecto estético que se convirtió en un rasgo distintivo de su imagen pública.</b> Al momento de su deceso, se encontraba comprometido con su pareja, Janita.</p><p><blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/DdXDuBpEQ8b/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:16px;"> <a href="https://www.instagram.com/p/DdXDuBpEQ8b/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"> <div style=" display: flex; flex-direction: row; align-items: center;"> <div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div></div></div><div style="padding: 19% 0;"></div> <div style="display:block; height:50px; margin:0 auto 12px; width:50px;"><svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-511.000000, -20.000000)" fill="#000000"><g><path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"></path></g></g></g></svg></div><div style="padding-top: 8px;"> <div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;">Ver esta publicación en Instagram</div></div><div style="padding: 12.5% 0;"></div> <div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"><div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> <div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div></div><div style="margin-left: 8px;"> <div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"></div> <div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"></div></div><div style="margin-left: auto;"> <div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> <div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> <div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div></div></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"></div></div></a><p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"><a href="https://www.instagram.com/p/DdXDuBpEQ8b/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank">Una publicación compartida por Gipsy J ♥️ (@_gipsyj_)</a></p></div></blockquote>
<script async src="//www.instagram.com/embed.js"></script></p><p>La noticia fue confirmada públicamente por su hermano, Dean Saunders —quien también es cantante y ganador de la versión neerlandesa del programa <i>Popstars</i>—, a través de una publicación en su cuenta oficial de Instagram.</p><p><b>“Mi querido hermano pequeño falleció. </b>Nunca había experimentado un dolor como el que siento ahora… Qué día tan terrible para todos nosotros…<b> Tenemos que aprender a vivir con esto y espero que se maneje con respeto”</b>, expresó Dean Saunders en su mensaje.</p><p>Por su parte, el músico <b>Marco Borsato, quien se desempeñó como su entrenador durante la competencia televisiva, </b>manifestó sus condolencias en redes sociales dirigidas a la prometida y allegados del artista: </p><p><b>“Querido y especial hombre, ¡mi corazón está destrozado! No encuentro palabras para expresar el vacío que dejas. Querida Janita, amigos y familiares, mucha fuerza para sobrellevar esta enorme pérdida”.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QJPN4VWUF5GKDG4OZSLI5HSUTA.jpg?auth=f385d8bdbb2952fa90885e1751a51c347e24e49d008cc4d9ebf328849688a822&amp;smart=true&amp;width=375&amp;height=240" type="image/jpeg" height="240" width="375"><media:description type="plain"><![CDATA[Trágico final para querido ganador de la primera edición de ‘La Voz’: fue hallado sin vida]]></media:description></media:content></item><item><title><![CDATA[Tecnología e inteligencia artificial marcarán la agenda del Congreso de Petróleo en Bucaramanga]]></title><link>https://www.semana.com/economia/capsulas/articulo/tecnologia-e-inteligencia-artificial-marcaran-la-agenda-del-congreso-de-petroleo-en-bucaramanga/202633/</link><guid isPermaLink="true">https://www.semana.com/economia/capsulas/articulo/tecnologia-e-inteligencia-artificial-marcaran-la-agenda-del-congreso-de-petroleo-en-bucaramanga/202633/</guid><dc:creator><![CDATA[Redacción Economía Revista Semana]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:03:33 +0000</pubDate><content:encoded><![CDATA[<p>El<b> XXIII Congreso Colombiano de Petróleo, Gas y Energía de la Asociación Colombiana de Ingenieros de Petróleos, Energía y Tecnologías Afines (ACIPET),</b> que se realizará en Bucaramanga, tendrá entre sus principales temas de discusión el papel de la tecnología y la inteligencia artificial en las operaciones del sector de hidrocarburos.</p><p>La agenda académica del encuentro incluirá discusiones sobre el uso de inteligencia artificial en procesos de automatización para la toma de decisiones en tiempo real y sobre su impacto en el futuro de la industria de petróleo y gas. <b>También se abordarán asuntos relacionados con el gas natural como parte de la seguridad energética y la relación entre energía y desarrollo.</b></p><p>El debate tecnológico se desarrolla en un contexto en el que el sector de hidrocarburos busca recuperar los niveles de extracción registrados en años anteriores, después de un periodo de desaceleración de las actividades. En 2022, el promedio nacional de extracción de petróleo y gas se ubicó en 754.000 barriles por día (kbd), frente a los 736.000 kbd registrados en 2021, un incremento de 2,4 %.</p><p>En este escenario también se encuentra la Resolución No. 0651 del 27 de agosto de 2025 de la Agencia Nacional de Hidrocarburos (ANH), que establece condiciones para que las compañías operadoras incorporen sistemas automatizados y sensores conectados para medir la producción de crudo y gas en tiempo real.</p><p>Ricardo Rodríguez, gerente general de Colsof, señaló que la aplicación de esta medida puede facilitar la integración de información proveniente de las operaciones. “La unificación de las fuentes de información dentro de las empresas tiene la capacidad de convertirse en una base sólida de datos confiables que permite el despliegue de analítica avanzada e inteligencia artificial en la operación diaria, a todas luces mejorando transversalmente la gestión y aportando a su competitividad”, asegura Rodríguez.</p><p>El Congreso de ACIPET pondrá así estos desarrollos tecnológicos en discusión junto con otros asuntos relacionados con el futuro de la industria energética en Colombia.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PP6ZHF2Y7NCJXD6DB3T44WJPDQ.jpg?auth=14b352b5bb528e93901bce8b642be089175dc9fde3c46ef3a06e2e8b858fceb1&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Imagen de referencia.]]></media:description></media:content></item><item><title><![CDATA[Tres hermosas ciudades latinoamericanas que fueron declaradas patrimonio del humanidad]]></title><link>https://www.semana.com/turismo/articulo/tres-hermosas-ciudades-latinoamericanas-que-fueron-declaradas-patrimonio-del-humanidad/202601/</link><guid isPermaLink="true">https://www.semana.com/turismo/articulo/tres-hermosas-ciudades-latinoamericanas-que-fueron-declaradas-patrimonio-del-humanidad/202601/</guid><dc:creator><![CDATA[Andrés Felipe Romero]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:01:01 +0000</pubDate><content:encoded><![CDATA[<p>En las últimas décadas, varias ciudades de Latinoamérica han sido reconocidas por la Unesco como Patrimonio de la Humanidad. Estos lugares representan la riqueza y diversidad de la región y permiten conocer parte de su historia a través de sus calles, monumentos, edificios y tradiciones.</p><p>A continuación, tres urbes que han recibido este reconocimiento:</p><h2>Cusco</h2><p>Esta ciudad recibió la declaratoria de la Unesco en 1983. Cuenta con edificios coloniales que sumergen a los turistas en su historia y magia. Allí es posible aventurarse en sus altas montañas y vivir una experiencia única e inolvidable mientras se recorre su catedral, una de las muestras de arte religioso más importantes de todo Perú.</p><p>También se destacan templos como el de Santo Domingo, construido después de la toma de Cusco por los invasores españoles, o <b>el Templo de la Compañía de Jesús, que se construyó sobre el Amaru Kancha, antiguo palacio del inca Wayna Cápac.</b></p><h2>Ouro Preto</h2><p>Debido a su importancia histórica, artística y arquitectónica, la pequeña ciudad brasileña de Ouro Preto recibió la declaratoria de la Unesco en 1980. Actualmente, es uno de los destinos culturales más importantes de su país.</p><p>Fundada a finales del siglo XVII, Ouro Preto fue el epicentro de la fiebre del oro en Brasil durante el siglo XVIII.</p><p>“Aunque la influencia de la ciudad decayó tras el agotamiento de las minas de oro en el siglo XIX, aún perduran numerosas iglesias, puentes y fuentes que dan testimonio de su antigua prosperidad”, destaca la Unesco en una reseña publicada en su sitio web. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HT76RVWJSFGK7ACAORYGS2CV5Y.jpg?auth=e8af6c5316a00ddc063ba3fcf1a7cf8f3199d97e088adece85db85878b079387&smart=true&width=594&height=395" alt="Ouro Preto." height="395" width="594"/><h2>Lima</h2><p>El centro de Lima, la capital de Perú, fue declarado Patrimonio de la Humanidad en 1991.</p><p>De acuerdo con <i>Perú Travel</i>, las edificaciones que rodean la Plaza Mayor de la ciudad parecen estar detenidas en el tiempo por su conservada arquitectura colonial.</p><p>“Si es un ferviente religioso, puede visitar la Basílica Catedral de Lima, ubicada a unos pasos de la Plaza Mayor de Lima, y distintas iglesias (Las Nazarenas, por ejemplo) y monasterios (de Santa Rosa de Lima, por citar uno) que mantienen su esencia desde que fueron creados: ninguno ha sufrido modificaciones forzosas”, señala la publicación sobre esta zona de la ciudad, que tiene numerosos museos.</p><p>“El Museo Nacional de Arqueología, Antropología e Historia del Perú cuenta en su interior con la mejor colección de la época prehispánica. A su vez, puede visitar el Museo Larco, Museo de Arte de Lima (MALI), Museo de Arte Contemporáneo (MAC) y el Museo Pedro de Osma, que están a la vanguardia artística de la sociedad global”, subraya <i>Perú Travel</i>.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MJ7J6O4KZVB4JPEICTSVP3JPAE.jpg?auth=0f401f9a563f20016470b1f7313a9bf015cd074f24411a19167c6901b9cb67eb&amp;smart=true&amp;width=4957&amp;height=3399" type="image/jpeg" height="3399" width="4957"><media:description type="plain"><![CDATA[Plaza de Armas y la iglesia católica en Cusco, Perú.]]></media:description><media:credit role="author" scheme="urn:ebu">Buena Vista Images</media:credit></media:content></item><item><title><![CDATA[Medellín celebrará su Semana del Turismo; estos son los detalles]]></title><link>https://www.semana.com/turismo/articulo/medellin-celebrara-su-semana-del-turismo-estos-son-los-detalles/202635/</link><guid isPermaLink="true">https://www.semana.com/turismo/articulo/medellin-celebrara-su-semana-del-turismo-estos-son-los-detalles/202635/</guid><dc:creator><![CDATA[Andrés Felipe Romero]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 00:00:35 +0000</pubDate><content:encoded><![CDATA[<p>La Alcaldía de Medellín realizará del 22 al 25 de septiembre la Semana del Turismo 2026, un espacio que reunirá a <b>empresarios, prestadores de servicios turísticos, academia, comunidades y entidades.</b></p><p>“La Semana del Turismo es una oportunidad para seguir fortaleciendo la oferta turística de Medellín y consolidar el trabajo articulado entre empresarios, comunidades, academia y sector público. Cada una de estas acciones deja capacidades, conocimiento y legados que permanecen en el territorio, promoviendo un turismo sostenible, responsable y seguro, que genera bienestar para las comunidades y experiencias de calidad para quienes nos visitan”, expresó la secretaria de Turismo y Entretenimiento, Ana María López Acosta.</p><p>De acuerdo con la Alcaldía de Medellín, la agenda incluirá espacios de relacionamiento empresarial, experiencias inmersivas, actividades académicas, un recorrido de sensibilización sobre la explotación sexual y comercial de niñas, niños y adolescentes (Escnna), así como acciones orientadas a la sostenibilidad y la innovación turística.</p><p>“Uno de los componentes será la Ruta de Formalización de nuevos negocios, emprendimientos y empresas del sector, asimismo, se incluirán sensibilizaciones sobre los delitos asociados al turismo, promoviendo un turismo responsable, seguro y comprometido con la protección de las comunidades”, destacó la entidad.</p><p>La programación culminará con un espacio de reconocimiento a quienes impulsan el turismo y el entretenimiento de Medellín a través de experiencias, cultura, gastronomía y conexión. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CSRFPK7GSZBNRBBCLWPOXTNJUM.png?auth=405713af391ce7a488ba0668543561c69c3b7f98baa61e315a6af94532c0e5df&smart=true&width=1640&height=924" alt="Basílica de Nuestra Señora de la Candelaria, Medellín." height="924" width="1640"/><h3>Turismo en Medellín: estos son los mercados que han registrado un incremento de visitantes extranjeros en 2026</h3><p>Recientemente, la Alcaldía de Medellín presentó su informe semestral del Sistema de Inteligencia Turística y Entretenimiento (SITE) que reúne información sobre conectividad aérea, hotelería, viviendas, gasto, oferta turística formal y movilidad terrestre.</p><p>De acuerdo con el reporte, Estados Unidos continúa siendo el principal mercado emisor de turistas internacionales con <b>194.488 visitantes</b> y presentó una variación de <b>-0,7%</b> frente a 2025. México registró <b>40.045 visitantes</b>, Costa Rica <b>37.980</b> y España <b>9.900</b>.</p><p>Al mismo tiempo, otros mercados muestran crecimientos importantes frente al año anterior: Países Bajos aumentó <b>37,7%</b>, Ecuador <b>30,3%</b>, Chile <b>23,1%</b> y México <b>7,2%</b>. Ecuador alcanzó <b>19.374 visitantes</b>, mientras Países Bajos llegó a <b>11.602 visitantes</b>.</p><p>Durante los primeros seis meses del año, el aeropuerto José María Córdova superó por primera vez el millón de entradas de pasajeros en un primer semestre, alcanzando <b>1.003.756</b>.</p><p>En los primeros seis meses del año se registraron <b>199.286 pasajeros internacionales en enero</b>; <b>146.908 en febrero</b>; <b>163.707 en marzo</b>; <b>162.867 en abril </b>y <b>163.458 en mayo</b>. En junio fueron <b>167.530 pasajeros internacionales</b>, frente a <b>175.545 en 2025</b>, una variación de<b>-4,6%</b>.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/L6NQPLMCWVFHVJMZVLXWMP3IEI.jpg?auth=06ec18e133b2e952506b4193b9376344116d1e96d9a73bbf8da4e12fda3c68b2&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[La capital antioqueña es uno de los principales destinos del país.]]></media:description><media:credit role="author" scheme="urn:ebu">Getty Images</media:credit></media:content></item><item><title><![CDATA[Abelardo De La Espriella mostró video de cómo son los operativos de la Policía en su Gobierno: “No tendrán tregua” ]]></title><link>https://www.semana.com/politica/articulo/abelardo-de-la-espriella-mostro-video-de-como-son-los-operativos-de-la-policia-en-su-gobierno-no-tendran-tregua/202624/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/abelardo-de-la-espriella-mostro-video-de-como-son-los-operativos-de-la-policia-en-su-gobierno-no-tendran-tregua/202624/</guid><dc:creator><![CDATA[Javier Barragán Ramos]]></dc:creator><description></description><pubDate>Fri, 18 Sep 2026 23:41:24 +0000</pubDate><content:encoded><![CDATA[<p>Las redes sociales del presidente de la República, Abelardo De La Espriella, se han convertido en una de las herramientas más importantes que tiene su Gobierno para divulgar información sobre su estrategia para garantizar el orden público en las diferentes regiones del país.</p><p>Y en medio de esas acciones que ha desplegado la Fuerza Pública, este viernes 18 de septiembre, <b>el mandatario colombiano reveló un video de un operativo que realizó la Policía contra una red que se dedica al apoderamiento ilegal de hidrocarburos. </b>El material deja en evidencia cómo están actuando las autoridades siguiendo sus instrucciones.</p><p>“¡Seguimos golpeando las economías criminales! En desarrollo de la campaña militar y policial URANO, nuestra Policía Nacional, en coordinación con el Ejército Nacional, capturó a siete personas en Aguachica, Ocaña y Ábrego por concierto para delinquir y apoderamiento de hidrocarburos”, expresó el mandatario colombiano.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">¡Seguimos golpeando las economías criminales!<br><br>En desarrollo de la campaña militar y policial URANO, nuestra Policía Nacional, en coordinación con el Ejército Nacional, capturó a siete personas en Aguachica, Ocaña y Ábrego por concierto para delinquir y apoderamiento de… <a href="https://t.co/Jk5IKjP4Kj">pic.twitter.com/Jk5IKjP4Kj</a></p>&mdash; Abelardo De La Espriella (@ABDELAESPRIELLA) <a href="https://x.com/ABDELAESPRIELLA/status/2101081805348536560?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p>También indicó el jefe de Estado en sus redes sociales: “La estructura operaba en San Alberto, San Martín, Aguachica, Pelaya y Pailitas. Según la información operacional, coordinaba y financiaba la instalación de válvulas para hurtar hidrocarburos con apoyo del grupo narcoterrorista ELN. Vamos tras sus cabecillas, sus redes y el dinero que financia el terror. ¡No tendrán tregua!”.</p><p>Cabe señalar que este viernes también el mandatario colombiano entregó detalles de otro operativo en contra de estructuras criminales: “¡Golpe contundente al grupo narcoterrorista Autodefensas Conquistadoras de la Sierra Nevada! En La Esperanza, Norte de Santander, el Ejército y la Policía capturaron a cinco de sus integrantes, entre ellos alias Miguel, cabecilla de escuadra dedicado a coordinar extorsiones, amenazas y labores de inteligencia criminal contra nuestra Fuerza Pública”.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">¡Golpe contundente al grupo narcoterrorista Autodefensas Conquistadoras de la Sierra Nevada!<br><br>En La Esperanza, Norte de Santander, el Ejército y la Policía capturaron a cinco de sus integrantes, entre ellos alias “Miguel”, cabecilla de escuadra dedicado a coordinar extorsiones,… <a href="https://t.co/4bq58UFfDa">pic.twitter.com/4bq58UFfDa</a></p>&mdash; Abelardo De La Espriella (@ABDELAESPRIELLA) <a href="https://x.com/ABDELAESPRIELLA/status/2101039543797375459?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p>“Fueron incautados un fusil, tres pistolas, una escopeta, explosivos y abundante munición. Seguimos debilitando sus estructuras y recuperando el control del territorio. ¡<a href="https://www.semana.com/politica/articulo/no-habra-canje-abelardo-de-la-espriella-fue-categorico-con-el-eln-que-confirmo-que-tiene-secuestrados-a-tres-policias/202626/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/no-habra-canje-abelardo-de-la-espriella-fue-categorico-con-el-eln-que-confirmo-que-tiene-secuestrados-a-tres-policias/202626/">Los vamos a acabar</a>!”, puntualizó el presidente de la República en sus redes sociales.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LRO6SGONANDBFLTGAKK6VMCXKQ.jpg?auth=15934bfd1c14506f0f4ff1fa4653d92355cd6c4cf0e5361887e87a3ad24113b4&amp;smart=true&amp;width=3264&amp;height=2099" type="image/jpeg" height="2099" width="3264"><media:description type="plain"><![CDATA[Abelardo De la Espriella y operativos de la Policía.]]></media:description></media:content></item><item><title><![CDATA[Audios VAR del polémico gol anulado a Inter Bogotá contra Nacional: voces arbitrales salen a la luz]]></title><link>https://www.semana.com/deportes/articulo/audios-var-del-polemico-gol-anulado-a-inter-bogota-contra-nacional-voces-arbitrales-salen-a-la-luz/202613/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/audios-var-del-polemico-gol-anulado-a-inter-bogota-contra-nacional-voces-arbitrales-salen-a-la-luz/202613/</guid><dc:creator><![CDATA[Miguel Alejandro Cruz Ruiz]]></dc:creator><description></description><pubDate>Fri, 18 Sep 2026 23:41:13 +0000</pubDate><content:encoded><![CDATA[<p>Dos días después de la gran polémica, este viernes 18 de septiembre, el YouTube de <b>la Federación Colombiana de Fútbol publicó los audios VAR del partido entre Internacional de Bogotá y </b><a href="https://www.semana.com/noticias/atletico-nacional/" target="_blank" rel="" title="https://www.semana.com/noticias/atletico-nacional/"><b>Atlético Nacional</b></a>.</p><p>La polémica llegó a los 66′ de partido, cuando Nacional ganaba 2-1. En ese momento, <a href="https://www.semana.com/deportes/articulo/polemica-por-el-gol-que-le-anularon-a-inter-de-bogota-en-el-debut-de-james-nacional-se-salvo/202616/" target="_blank" rel="" title="https://www.semana.com/deportes/articulo/polemica-por-el-gol-que-le-anularon-a-inter-de-bogota-en-el-debut-de-james-nacional-se-salvo/202616/">Fabricio Sanguinetti anotó un gol que fue anulado por fuera de juego</a>.</p><p>No hay discusión alguna, pues Sanguinetti sí estaba en un claro fuera de juego. No obstante, cuando él recibe el balón, parecía que no recibía la asistencia de su compañero (Larry Vásquez) sino de un defensor de Atlético Nacional (Xavi Ríos).</p><p>El gol fue anulado por el juez de línea, y el propio central del compromiso, Carlos Betancur, avaló la anulación. Sin embargo, el colegiado principal recibió un llamado del VAR, Nicolás Gallo, para que revisara la acción.</p><h2>Audios VAR: “Para mi es fuera de juego, no es un juego deliberado claro”</h2><p>Es bastante extensa la charla entre los árbitros del compromiso. Desde el VAR Gallo y su AVAR, Ariel Quintana, le mostraron a Betancur varios ángulos de la acción, y <b>le explicaban la intencionalidad o no del jugador de Nacional para hacer el pase a Sanguinetti</b>.</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/QyvytteYNIU?si=1iX-i-yFKtIZlfvY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p>Finalmente, Carlos Betancur decidió que era fuera de juego, anuló el gol y el partido siguió. </p><p>El marcador definitivo del compromiso, disputado en el estadio Nemesio Camacho El Campín de Bogotá, fue <a href="https://www.semana.com/deportes/articulo/primera-asistencia-de-james-rodriguez-con-atletico-nacional-su-zurda-dio-el-gol-salvador-en-el-campin/202651/" target="_blank" rel="" title="https://www.semana.com/deportes/articulo/primera-asistencia-de-james-rodriguez-con-atletico-nacional-su-zurda-dio-el-gol-salvador-en-el-campin/202651/">3-2 a favor de Atlético Nacional sobre Internacional</a>.</p><h2>Analistas arbitrales opinan</h2><p>José Borda, uno de los analistas arbitrales más reconocidos del país, reaccionó en su cuenta de X a los audios VAR publicados por la Federación Colombiana de Fútbol.</p><p>“La FCF publicó el audio VAR del juego Inter vs. Nacional. Indican que, de acuerdo a las consideraciones de Ley 11, la acción de Ríos y Sanguinetti es OFFSIDE ¡Cómo les había dicho!”, escribió Borda.</p><p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">PUBLICARON AUDIOS VAR<br>La <a href="https://x.com/FCF_Oficial?ref_src=twsrc%5Etfw">@FCF_Oficial</a> publicó el audio VAR del juego INTER vs NACIONAL Indican que de acuerdo a las consideraciones de Ley 11, la acción de Rios y Sanguinetti es OFFSIDE <br>¡Cómo les les había dicho! Escuchen y vean los argumentos reglamentarios de árbitros y VAR <a href="https://t.co/pJH9zG876C">https://t.co/pJH9zG876C</a></p>&mdash; Jose Borda (@Borda_analista) <a href="https://x.com/Borda_analista/status/2101051743488364707?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>Andrés Grimaldos, conocido como El Var Central, también analizó los audios VAR. De hecho, mencionó una particularidad en ellos: hubo indecisión entre el VAR y el AVAR, por lo que el central tuvo que entrar a decidir.</p><p>“Se escucha la deliberación entre Nicolás Gallo y Ariel Quintana y luego el llamado a Betancur. Para el VAR Gallo es offside, para Quintana, su AVAR es juego deliberado y gol legal”, escribió Grimaldos.</p><p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">🥳 ¡Liberaron los audios! <br><br>🔊 Audio sobre la jugada del gol anulado a Inter Bogotá vs Nacional. Se escucha la deliberación entre Nicolás Gallo y Ariel Quintana y luego el llamado a Betancur. Para el VAR Gallo es offside, para Quintana, su AVAR es juego deliberado y gol legal.…</p>&mdash; EL VAR CENTRAL (Andrés) (@ElVarCentral) <a href="https://x.com/ElVarCentral/status/2101039849268732331?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>Y añadió: “Al final entre Betancur y su asistente Fuentes deciden que es desvío y que el gol debe ser anulado. Ustedes saben mi posición, pero independiente de eso... Es maravilloso poder escuchar esto. La deliberación, la interpretación de cada uno, etc. No nos quiten los audios”.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7DXHAPEU2FAMXM2IF43SRKY7WU.png?auth=f014ab77a4f30754f8f795d687281290d51e24360c9376affab39a4a4a1806d6&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Salen los audios VAR del gol anulado a Internacional de Bogotá contra Atlético Nacional.]]></media:description></media:content></item><item><title><![CDATA[Yina Calderón reveló la dura conversación que tuvo con ‘Epa Colombia’ en prisión: “Dijo que no quiere vivir más”]]></title><link>https://www.semana.com/gente/articulo/yina-calderon-revelo-la-dura-conversacion-que-tuvo-con-epa-colombia-en-prision-dijo-que-no-quiere-vivir-mas/202640/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/yina-calderon-revelo-la-dura-conversacion-que-tuvo-con-epa-colombia-en-prision-dijo-que-no-quiere-vivir-mas/202640/</guid><dc:creator><![CDATA[Valentina Rueda Rodríguez]]></dc:creator><description></description><pubDate>Fri, 18 Sep 2026 23:38:40 +0000</pubDate><content:encoded><![CDATA[<p>La empresaria e influenciadora Daneidy Barrera Rojas, conocida públicamente como ‘Epa Colombia’, <b>atraviesa un complejo momento tras su ingreso al centro penitenciario donde cumple la condena ratificada por la Justicia colombiana.</b></p><p>La creadora de contenido Yina Calderón reveló detalles de una <b>conversación telefónica que sostuvo recientemente con ella, manifestando su inquietud por la salud mental</b> y las condiciones en las que permanece recluida la empresaria de keratinas.</p><p>Durante una entrevista concedida a la emisora radial<b> La Mega, en el programa </b><i><b>El Mañanero</b></i><b>, Calderón relató que logró comunicarse directamente con Barrera Rojas </b>después de casi dos años de distanciamiento. </p><p>Según explicó la influenciadora, ambas habían decidido apartarse temporalmente para evitar controversias mediáticas que pudieran perjudicar la situación judicial de Barrera.</p><p>En la entreviste radial, Calderón sostuvo que notó a Barrera en una condición emocional difícil. Según el testimonio ofrecido por la influenciadora, durante la conversación telefónica la empresaria le habría manifestado sensaciones de desánimo severo y preocupación por el futuro de su hija menor, indicando que le encomendaría su cuidado a su pareja actual, Karol Samantha.</p><p><b>“Ella está muy mal, me decía: ‘Ya no quiero vivir, ¿cómo hago para mi niña? La voy a dejar a Karol"</b> relató Calderón a los micrófonos de <i>La Mega.</i></p><p><b>“Por eso la única solución que tenemos es el presidente, que le concedan la casa por cárcel (...) A mí me da miedo que Epa aparezca muerta y que el Estado no hizo nada; si no hablamos de ella, no va a aparecer viva”</b>, expresó.</p><p>Asimismo, al ser indagada por los locutores sobre si la empresaria cuenta con apoyo psicológico institucional dentro del establecimiento carcelario, Calderón respondió:<b> “¿Cuál ayuda psicológica si la sacan para una cita médica con brazaletes en los pies como si hubiera matado a quién sabe cuántas personas? La comida de ella es diferente, tiene un trato inhumano"</b>, añadió.</p><p>Daneidy Barrera Rojas cumple una condena de 63 meses y 15 días de prisión (5 años y 3 meses aproximadamente) tras la ratificación judicial <b>emitida por los delitos de perturbación en servicio de transporte público, instigación a delinquir con fines terroristas y daño en bien ajeno. </b></p><p>Los hechos se remontan a noviembre de 2019, cuando la influenciadora grabó y difundió videos realizando actos vandálicos contra la infraestructura del sistema TransMilenio en Bogotá durante las jornadas de protesta social.</p><p>En el marco del cumplimiento de la condena, Barrera Rojas fue privada de la libertad a finales de enero de 2025. Posteriormente, el 7 de agosto de ese mismo año, las autoridades ordenaron su traslado desde la Escuela de Carabineros en la capital hacia el Complejo Carcelario y Penitenciario de Ibagué, en el departamento del Tolima, donde permanece custodiada.</p><p>A la situación jurídica y personal de la empresaria se suman recientes decisiones administrativas en el ámbito comercial. La Superintendencia de Industria y Comercio (SIC) impuso <b>una sanción económica a su compañía de productos capilares por un valor de $140.476.000,</b> tras determinar incumplimientos en las normas de protección al consumidor. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/IARMQMQZNBHZJK5L2SE467QKPY.jpg?auth=900658597f86d8e13b8e55a6f7c8d04b9c3befe646d0b870814a44d1f6da0013&amp;smart=true&amp;width=739&amp;height=415" type="image/jpeg" height="415" width="739"><media:description type="plain"><![CDATA[El alarmante relato de Yina Calderón tras hablar con 'Epa Colombia]]></media:description></media:content></item><item><title><![CDATA[Video del momento en que capturan al señalado de asesinar a vigilante de TransMilenio: encadenado a un poste]]></title><link>https://www.semana.com/nacion/articulo/video-del-momento-en-que-capturan-al-senalado-de-asesinar-a-vigilante-de-transmilenio-encadenado-a-un-poste/202630/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/video-del-momento-en-que-capturan-al-senalado-de-asesinar-a-vigilante-de-transmilenio-encadenado-a-un-poste/202630/</guid><dc:creator><![CDATA[Daniel Armando Méndez Suárez]]></dc:creator><description></description><pubDate>Fri, 18 Sep 2026 23:32:30 +0000</pubDate><content:encoded><![CDATA[<p>Un hecho de intolerancia <a href="https://www.semana.com/nacion/bogota/articulo/por-evitar-que-se-colaran-un-guardia-de-transmilenio-termino-muerto-en-la-estacion-terreros/202600/" target="_blank" rel="" title="https://www.semana.com/nacion/bogota/articulo/por-evitar-que-se-colaran-un-guardia-de-transmilenio-termino-muerto-en-la-estacion-terreros/202600/">cobró la vida de un funcionario de seguridad dentro del sistema masivo de transporte de TransMilenio</a>, en el municipio de Soacha.</p><p>El suceso se registró aproximadamente a las 9:30 de la mañana de este viernes, 18 de septiembre, cuando la víctima, <a href="https://www.semana.com/nacion/bogota/articulo/revelan-impactantes-videos-de-los-ultimos-momentos-de-vigilante-de-transmilenio-asesinado-por-colados-companeros-intentaron-salvarlo/202651/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/bogota/articulo/revelan-impactantes-videos-de-los-ultimos-momentos-de-vigilante-de-transmilenio-asesinado-por-colados-companeros-intentaron-salvarlo/202651/">un hombre de 27 años</a>, que trabajaba como vigilante de TransMilenio, se encontraba en las instalaciones del servicio público.</p><p>Según los datos preliminares recolectados en el lugar por la Policía Metropolitana de Soacha, la alteración del orden se desencadenó cuando un usuario intentó ingresar al sistema evadiendo el pago correspondiente del pasaje.</p><p>Ante la irregularidad, <b>se generó una confrontación entre la persona y el personal de control</b>, situación que derivó en la agresión directa contra el trabajador mediante el uso de un arma cortopunzante.</p><h2>El trágico momento de la muerte</h2><p>Debido a la severidad del ataque, el guarda de seguridad gravemente herido fue auxiliado de inmediato y remitido a un centro asistencial de la zona.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr"><a href="https://x.com/hashtag/ATENCI%C3%93N?src=hash&amp;ref_src=twsrc%5Etfw">#ATENCIÓN</a>. Cristian Garzón, un guarda de TransMilenio de 27 años, murió este viernes tras ser atacado con arma blanca en el pecho en la estación Terreros, en Soacha, cuando intervino para defender a una compañera de una pareja que intentaba ingresar al sistema sin pagar. Aunque… <a href="https://t.co/XcEJHSZKwa">pic.twitter.com/XcEJHSZKwa</a></p>&mdash; Colombia Oscura (@ColombiaOscura) <a href="https://x.com/ColombiaOscura/status/2101013265950048767?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>Sin embargo, minutos después de su ingreso, <b>el personal médico de turno confirmó su fallecimiento como consecuencia del impacto de las lesiones sufridas</b> en el altercado.</p><p>El caso movilizó de manera inmediata a la Policía Metropolitana de Soacha, cuyos uniformados desplegaron un plan de reacción institucional en los alrededores para ubicar a los presuntos responsables de la agresión contra el trabajador.</p><h2>Así capturaron a los sopechosos</h2><p>Como resultado del procedimiento oportuno de la fuerza pública, <b>las autoridades lograron la captura de dos personas mayores de edad involucradas en los hechos</b>.</p><p>Los sospechosos fueron puestos a disposición de la autoridad competente para adelantar su correspondiente proceso de judicialización e imputación de cargos por la agresión mortal.</p><p>En imágenes difundidas en redes sociales se pudo apreciar cómo se llevó a cabo el procedimiento de detención, <b>el cual contó con una gran cantidad de uniformados y se llevó a cabo entre gritos y rechiflas.</b> Además, se puede apreciar cómo los sospechosos están esposados a un poste de la calle mientras se hacía efectiva la captura.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr"><a href="https://x.com/hashtag/ATENTOS?src=hash&amp;ref_src=twsrc%5Etfw">#ATENTOS</a> 🚨 Revelan un video del momento en el que Policía, guardas y ciudadanos lograron la captura del presunto responsable del homicidio de Cristian Garzón, el guarda de TransMilenio de 27 años que fue asesinado tras defender a una compañera en la estación Terreros, en Soacha. <a href="https://t.co/Evwdztu1I0">https://t.co/Evwdztu1I0</a> <a href="https://t.co/t7q3DLVFax">pic.twitter.com/t7q3DLVFax</a></p>&mdash; Colombia Oscura (@ColombiaOscura) <a href="https://x.com/ColombiaOscura/status/2101039790208483786?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>Actualmente, unidades especializadas de la Seccional de Investigación Criminal (Sijín) y de Inteligencia Policial (Sipol) adelantan la recolección de elementos materiales probatorios, análisis de campo y labores investigativas para esclarecer con precisión lo ocurrido.</p><p>La Policía Nacional expresó su rechazo a cualquier manifestación de violencia que altere la convivencia ciudadana e hizo un llamado a utilizar la línea de atención 123 para denunciar oportunamente estos casos.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CA4IU3W6N5FATPGP2F2IUITDRY.jpeg?auth=eda1d5bae75dcc788645c70aa6b638188163dac2b190e8e2f587e4e762724c35&amp;smart=true&amp;width=728&amp;height=483" type="image/jpeg" height="483" width="728"><media:description type="plain"><![CDATA[Capturan a dos personas por la muerte de un guarda de seguridad de 27 años en Soacha.]]></media:description></media:content></item><item><title><![CDATA[Denuncian “persecución a conductores” en Bogotá: concejal cuestiona 5 medidas lesivas del Distrito]]></title><link>https://www.semana.com/vehiculos/articulo/denuncian-persecucion-a-conductores-en-bogota-concejal-cuestiona-5-medidas-lesivas-del-distrito/202632/</link><guid isPermaLink="true">https://www.semana.com/vehiculos/articulo/denuncian-persecucion-a-conductores-en-bogota-concejal-cuestiona-5-medidas-lesivas-del-distrito/202632/</guid><dc:creator><![CDATA[Camilo Eduardo Velásquez]]></dc:creator><description></description><pubDate>Fri, 18 Sep 2026 23:27:27 +0000</pubDate><content:encoded><![CDATA[<p>En las últimas semanas, <a href="https://www.semana.com/vehiculos/articulo/bogota-instalara-un-nuevo-semaforo-en-una-de-sus-glorietas-mas-transitadas-asi-cambiara-la-movilidad/202606/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/bogota-instalara-un-nuevo-semaforo-en-una-de-sus-glorietas-mas-transitadas-asi-cambiara-la-movilidad/202606/">la Secretaría de Movilidad de Bogotá ha tomado una serie de decisiones que involucran la inhabilitación de carriles, la instalación de una semaforización,</a> nuevas cámaras de fotodetección, entre otras,<b> generando la reacción de concejales como Julián Forero ‘Fuchi’, quien categorizó esta situación como una “persecución a los conductores de la capital”.</b></p><p>Forero reveló a <i>SEMANA</i> 5 problemáticas que para él, como cabildante y representante de moteros en Bogotá, se han convertido en un dolor de cabeza para los conductores de la capital.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/NG65IINIOREC7LQAIYOCK7VJQM.jpg?auth=c47c86b5f61c96d5a2aa58309e6e991c5723428ddcf90c90f56907aca1841fa2&smart=true&width=2000&height=1125" alt="Julián Forero " Fuchi", concejal de Bogotá y líder del gremio de motociclistas, expresó su opinión en SEMANA. Foto: Guillermo Torres Reina - SEMANA" height="1125" width="2000"/><h2>Las 5 problemáticas que denuncia Forero</h2><h3><b>1. Cierre de bahías y zonas de parqueo temporal</b></h3><p>El concejal aseguró que el Distrito “elimina espacios donde los conductores podían detenerse unos minutos para dejar un pasajero, recoger a una persona o cargar mercancía, pero no ofrecen alternativas”.</p><p><b>Este punto hace referencia a los operativos de Movilidad con los que buscan recuperar el espacio vial de los que la Alcaldía llama “mal parqueados”. </b>Según Forero, esto se estaría traduciendo en más multas para los conductores y la imposibilidad para que usen cómodamente sus vehículos.</p><h3><b>2. Las cámaras fotomultas</b></h3><p>Cuando el presidente Abelardo De La Espriella denunció una revisión exhaustiva a estas cámaras de fotodetección, coincidencialmente <a href="https://www.semana.com/vehiculos/articulo/alcaldia-galan-mantiene-la-presencia-de-fotomultas-en-bogota-nuevos-puntos-imponen-medidas-sancionatorias-para-los-conductores/202613/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/alcaldia-galan-mantiene-la-presencia-de-fotomultas-en-bogota-nuevos-puntos-imponen-medidas-sancionatorias-para-los-conductores/202613/">la Alcaldía de Bogotá instaló 16 nuevas cámaras para la ciudad,</a> argumentando que estas influyen para la reducción de los accidentes viales.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/S2ZCYVIL3FEKREGZH5NVT3OCPE.jpg?auth=f8ca40f7ac5731f52424a1b5445bef770c4009d4c87942b63e13c78c061e684d&smart=true&width=1000&height=530" alt="Estas cámaras han sido objeto de cuestionamientos a la Alcaldía en repetidas ocasiones." height="530" width="1000"/><p>Al respecto, Forero aseguró: “<b>Instalan cámaras con toda la capacidad para sancionar, pero no demuestran claramente cuántas vidas han salvado ni cuánto han mejorado la movilidad. </b>Para cobrar sí son eficientes; para prevenir y educar, no”.</p><p>El cabildante justifica esta afirmación con su denuncia previa donde revelaba que <a href="https://www.semana.com/vehiculos/articulo/fotomultas-en-bogota-concejal-revela-quien-se-estaria-beneficiando-con-su-millonario-recaudo/202627/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/fotomultas-en-bogota-concejal-revela-quien-se-estaria-beneficiando-con-su-millonario-recaudo/202627/">entre 2024 y 2025, el Distrito recaudó $396.608 millones con las fotomultas</a> para destinarlas al funcionamiento de TransMilenio. </p><h3><b>3. Cierre de carriles para los conductores particulares</b></h3><p><b>El concejal arremetió contra una de las más recientes medidas de la Secretaría de Movilidad,</b> que consistió en que un carril de la Calle 63 fuera exclusivo para el tránsito de los buses del SITP.</p><p>“No estamos en contra del transporte público, pero no pueden quitarles espacio a los demás vehículos sin ampliar las vías ni ofrecer rutas alternativas. Reducen los carriles y después culpan a los conductores por los trancones que la administración distrital provoca”, dijo Forero a este medio.</p><h3><b>4. Nuevos taches, bolardos y resaltos</b></h3><p>El cabildante cuestionó que la Alcaldía instalara estos “obstáculos” en las vías bogotanas sin explicar el criterio técnico para ello.</p><p><b>Esto estaría provocando que las vías se vuelvan más estrechas, peligrosas y difíciles de transitar para los conductores,</b> afectando especialmente a motociclistas y vehículos de emergencia, según Forero.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZQYN2H22ZVAZHORCCOLMKKU4P4.jpg?auth=03f9383adbc895ed25ed6dfe0c8433152546b1f36593193ff4a38a2a42d01691&smart=true&width=4500&height=2994" alt="Según Forero, estos "obstáculos" están afectando a los conductores de Bogotá." height="2994" width="4500"/><h3><b>5. Cepos, grúas y patios</b></h3><p>En la comunicación con <i>SEMANA</i>, <b>Forero también insistió en una “cadena de cobros” que inicia con la inmovilización de los cepos en los vehículos para posteriormente inmovilizarlos</b> y que estos sean llevados en grúa a los patios.</p><p>“El ciudadano paga tarifas exageradas mientras operadores privados hacen un negocio redondo con su necesidad de recuperar el carro o la moto”, denunció el cabildante.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/W66G6XYM6VH7PGU36FZ4XQN3GY.jpg?auth=b9f335487afca9265a3a44596a8c2278e0d8d217c9acbf64eeda88a2787d48ec&smart=true&width=5942&height=3966" alt="El distrito podrá instalar cepos a vehículos que no cancelen el servicio de parqueo en Bogotá." height="3966" width="5942"/><p>En esta misma línea, <a href="https://www.semana.com/vehiculos/articulo/adios-a-patios-y-gruas-en-colombia-asi-funcionaria-la-inmovilizacion-inteligente-que-propone-daniel-briceno/202658/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/adios-a-patios-y-gruas-en-colombia-asi-funcionaria-la-inmovilizacion-inteligente-que-propone-daniel-briceno/202658/">el congresista Daniel Briceño propuso en el Senado una “nueva estrategia” para los patios y grúas,</a> citando una problemática similar en la inmovilización de los vehículos de los bogotanos.</p><p>Haciendo referencia a las zonas de parqueo autorizadas por la Alcaldía, el concejal aseguró que son inseguras y costosas: “<b>Pagamos por usar una calle que ya financiamos con nuestros impuestos y, aun así, dejamos el vehículo bajo nuestro propio riesgo”, dijo.</b></p><p><i><b>SEMANA</b></i><b> se puso en contacto con la Secretaría de Movilidad de Bogotá para conocer su versión sobre esta posición del concejal;</b> sin embargo, su equipo de prensa comunicó que por el momento no van a reaccionar a la aseveración del cabildante.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4H2ZKQUQGFE73GCPX56I4UKNPI.jpg?auth=26c0f411729060c90c9278c3826b3bc23dfc6a7d8530e80b3e54844ff89f63ef&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[SEMANA se contactó con la Secretaría Distrital de Movilidad para conocer su versión sobre esta posición del concejal; sin embargo, su equipo de prensa comunicó que por el momento no van a reaccionar a la aseveración del cabildante.]]></media:description></media:content></item><item><title><![CDATA[Rifirrafe por faltante en Colpensiones para pagar mesadas de fin de año: Petro y Asofondos tienen cuentas distintas]]></title><link>https://www.semana.com/economia/macroeconomia/articulo/rifirrafe-por-faltante-en-colpensiones-para-pagar-mesadas-de-fin-de-ano-petro-y-asofondos-tienen-cuentas-distintas/202626/</link><guid isPermaLink="true">https://www.semana.com/economia/macroeconomia/articulo/rifirrafe-por-faltante-en-colpensiones-para-pagar-mesadas-de-fin-de-ano-petro-y-asofondos-tienen-cuentas-distintas/202626/</guid><dc:creator><![CDATA[Martha Morales Manchego]]></dc:creator><description></description><pubDate>Fri, 18 Sep 2026 23:02:26 +0000</pubDate><content:encoded><![CDATA[<p>Nada más sagrado en Colombia que el pago de las mesadas a los pensionados. Por ello, ha causado inquietud la posibilidad de que <b>esté en riesgo el giro de las correspondientes a noviembre y diciembr</b>e, como quedó en el ambiente luego de una intervención de la ministra de Trabajo, Natalia López, en un debate en la Comisión Séptima de Senado.</p><p><b>En esos estrados en lo que se pronunció López, se estudia el Presupuesto 2027</b>, que fue aforado en 635 billones de pesos, luego de que el nuevo ministro de Hacienda, Miguel Gómez, sincerara las cuentas, lo que llevó a aumentar en 60 billones las necesidades financieras, en comparación con el proyecto que había radicado el gobierno saliente, por 575 billones de peso.</p><p>Pese a la abultada cifra, la plata no alcanza, por lo que cada sector empieza a poner el sombrero y a pedir más recursos, para cumplir con sus compromisos, tanto de funcionamiento como de inversiones.</p><p>Pero en el caso de la ministra de Trabajo, el hueco de 5 billones de pesos es en el presupuesto de este año, <b>que, además, pondría en riesgo el pago de las mesadas</b> de los pensionados correspondientes a los meses de noviembre y diciembre.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/BEZOQ2Q43VEO3K2GZSPX7DCHPE.jpg?auth=37737a0aad83b725608b835b61b888f4de009c5b016f2805329cc7fd60781f2c&smart=true&width=1358&height=768" alt="Pensionados de Colombia, en su mayoría, reciben mesadas de un salario mínimo. " height="768" width="1358"/><h2>El rifirrafe</h2><p>Un revuelo ha causado la posibilidad de un atraso con el pago de pensiones, pues se buscan las razones por las cuales se tiene un hueco de tal magnitud.</p><p><b>Desde la perspectiva de Asofondos</b>, gremio de fondos privados de pensiones, la situación se debe al desmedido aumento del salario mínimo que decretó el gobierno pasado, el cual fue de 23 %, en un país en el que gran parte de los jubilados: más del 60 %, tiene ese ingreso. Teniendo en cuenta que las proyecciones presupuestales para Colpensiones, que maneja el régimen público o de prima media, se hacen antes de la negociación del incremento del salario mínimo (que generalmente en diciembre), en las cuentas no se contaba con un incremento salarial de tal magnitud.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">No señor es producto del robo y la estafa que hicieron como banqueros los señores del grupo aval y de Bancolombia al robarse el ahorro de los trabajadores que es propiedad de los trabajadores que se trasladaron.ñ a Colpensiones para cumplir el sueño de disfrutar de una pensión… <a href="https://t.co/xrZufvbHNd">https://t.co/xrZufvbHNd</a></p>&mdash; Gustavo Petro (@petrogustavo) <a href="https://x.com/petrogustavo/status/2100652378437591475?ref_src=twsrc%5Etfw">September 17, 2026</a></blockquote><p>A esa sustentación respondió el expresidente Gustavo Petro, quien atribuyó el déficit a lo que llamó <b>“robo” y “estafa”, </b>haciendo referencia a que los fondos privados trasladaron afiliados que querían pasarse para Colpensiones, pero no giraron los recursos que debían llegar a la entidad pública.</p><p>Hasta el momento, <b>la ministra López ha dicho que está buscando los recursos para pagar</b> las mesadas de los jubilados en este año, teniendo en cuenta que en Colombia, el derecho a la pensión es inalienable e irrenunciable porque está protegido por el artículo 48 de la Constitución Política y la ley.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JPKZ5MWZW5GRBK7SSO5WFOKS2Q.jpg?auth=1079f0e6cc8177819e3c795796ddcd3408657f61cd7f8721d4ac614dc6764ff9&amp;smart=true&amp;width=2000&amp;height=1000" type="image/jpeg" height="1000" width="2000"><media:description type="plain"><![CDATA[Gustavo Petro, expresidente de Colombia, y Andrés Velasco, presidente de Asofondos.]]></media:description></media:content></item><item><title><![CDATA[Revelan que presidente de la JEP ha ganado casi 4.500 millones de pesos desde 2018: hoy hace llamados por recorte presupuestal]]></title><link>https://www.semana.com/politica/articulo/revelan-que-presidente-de-la-jep-ha-ganado-casi-4500-millones-de-pesos-desde-2018-hoy-hace-llamados-por-recorte-presupuestal/202624/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/revelan-que-presidente-de-la-jep-ha-ganado-casi-4500-millones-de-pesos-desde-2018-hoy-hace-llamados-por-recorte-presupuestal/202624/</guid><dc:creator><![CDATA[Esteban Felipe  Feria Quintero]]></dc:creator><description></description><pubDate>Fri, 18 Sep 2026 22:58:52 +0000</pubDate><content:encoded><![CDATA[<p>El partido Salvación Nacional, en cabeza del senador Enrique Gómez Martínez, propuso esta semana que<a href="https://www.semana.com/politica/articulo/tormenta-politica-por-recorte-de-dinero-a-la-jep-proponen-reducir-el-50-de-su-presupuesto/202647/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/tormenta-politica-por-recorte-de-dinero-a-la-jep-proponen-reducir-el-50-de-su-presupuesto/202647/"> se hiciera un importante recorte a la Jurisdicción Especial para la Paz (JEP) en unos 100.000 millones de pesos</a>, al considerar que sus resultados son insuficientes y que el presupuesto sería clave para destinarlo al resto de la justicia. Tras la medida, el mandatario Abelardo De La Espriella anunció su respaldo.</p><p>La noticia le cayó como un balde de agua fría al presidente del organismo, Alejandro Ramelli, quien <b>advirtió sobre las consecuencias que tendría el eventual recorte en la entidad,</b> asegurando que pondría en riesgo las garantías de las víctimas. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ONIOXMT34NCLVAX75YYP6OHAP4.jpeg?auth=657df7f54a37a18bece8ad74d119f2f05b7e10462178b57c0560ed82a52de196&smart=true&width=1600&height=900" alt="El eventual recorte de $ 100.000 millones a la JEP generó un pronunciamiento de su presidente, Alejandro Ramelli." height="900" width="1600"/><p>Tras estos hechos,<a href="https://www.semana.com/nacion/articulo/el-presidente-de-la-jep-responde-a-la-propuesta-del-senador-enrique-gomez-es-el-mas-grave-ataque/202613/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/el-presidente-de-la-jep-responde-a-la-propuesta-del-senador-enrique-gomez-es-el-mas-grave-ataque/202613/"> el magistrado puso la decisión en conocimiento del Consejo de Seguridad de las Naciones Unidas,</a> la Oficina del Alto Comisionado para los Derechos Humanos, la Comisión Interamericana de Derechos Humanos, el relator de Naciones Unidas para la Independencia Judicial, así como de la Fiscalía de la Corte Penal Internacional.</p><p>En medio del pronunciamiento del magistrado, se hizo evidente en redes sociales la trayectoria de ingresos brutos estimados del presidente de la JEP. <b>El director de la Fundación Libremente, Ariel Ricardo Armel, reveló los datos e hizo una crítica en su cuenta de X. </b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DKTAFU7YRBGR5BTZVF5OTN52DA.jpg?auth=2a5e452fe35718825230b2382b41a78c4a2d733a8a68f3e92d9c0e6ccce6953a&smart=true&width=1280&height=720" alt="En medio de la controversia por el presupuesto de la JEP, fueron divulgadas cifras sobre los ingresos brutos estimados de Alejandro Ramelli durante su trayectoria como magistrado de la jurisdicción." height="720" width="1280"/><p><b>“Alejandro Ramelli está en la JEP desde 2018 y ha devengado alrededor de 4.500 millones de pesos. </b>Durante estos 10 años han logrado tres fallos, donde todos han sido beneficiosos para los criminales de las Farc. Servicio social como penas, llamados ‘trabajos restaurativos’. Hoy está quejándose y haciendo llamados internacionales por un recorte presupuestal a la JEP”, dijo. </p><p>En el reporte que mostró se puede evidenciar que su salario aumentó con el paso del tiempo y los nombramientos allí hechos. Entre 2018 y 2023, su salario <b>pasó de $ 32 millones de pesos mensuales a $ 47,5 millones de pesos mensuales</b>, siendo magistrado titular. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/Z2EA2GJTJVBRNGPO4NEIQDRAEQ.jpg?auth=413e674192b35006f3e1b1f2f11e819e428edaed59c845d7b1936c0829eeb3d4&smart=true&width=1280&height=720" alt="“Alejandro Ramelli está en la JEP desde 2018 y ha devengado alrededor de 4.500 millones de pesos”, indicó el director de la Fundación Libremente, Ariel Ricardo Armel." height="720" width="1280"/><p>Luego, al subir a magistrado presidente, empezó a devengar $ 51 millones de pesos en 2024 y, <b>entre 2025 y 2026, empezó a devengar $ 55,3 millones como presidente de la JEP.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TLN3LJ4BLZHVPNBXB32N5FJDQU.jpg?auth=78dcdbe8747408eebc643c3f2d6a46d45c66ee5c4b12d7720ba35d397df314cd&amp;smart=true&amp;width=900&amp;height=599" type="image/jpeg" height="599" width="900"><media:description type="plain"><![CDATA[El presidente de la JEP, Alejandro Ramelli, se pronunció contra el eventual recorte de $ 100.000 millones al presupuesto de la entidad, al advertir sobre posibles afectaciones a las víctimas.]]></media:description></media:content></item><item><title><![CDATA[Antes de celebrar Amor y Amistad, tenga esto en cuenta: así estará el clima este fin de semana]]></title><link>https://www.semana.com/nacion/articulo/antes-de-celebrar-amor-y-amistad-tenga-esto-en-cuenta-asi-estara-el-clima-este-fin-de-semana/202642/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/antes-de-celebrar-amor-y-amistad-tenga-esto-en-cuenta-asi-estara-el-clima-este-fin-de-semana/202642/</guid><dc:creator><![CDATA[Daniel Armando Méndez Suárez]]></dc:creator><description></description><pubDate>Fri, 18 Sep 2026 22:50:42 +0000</pubDate><content:encoded><![CDATA[<p>El <a href="https://www.semana.com/nacion/articulo/pronostico-del-clima-para-hoy-ideam-alerta-por-lluvias-tormentas-y-temperaturas-elevadas-en-varias-regiones-de-colombia/202627/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/pronostico-del-clima-para-hoy-ideam-alerta-por-lluvias-tormentas-y-temperaturas-elevadas-en-varias-regiones-de-colombia/202627/">Instituto de Hidrología, Meteorología y Estudios Ambientales (Ideam)</a> emitió el reporte oficial <a href="https://www.semana.com/nacion/articulo/ideam-pronostica-como-sera-el-clima-en-colombia-este-fin-de-semana-estas-son-las-regiones-donde-mas-llovera/202631/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/ideam-pronostica-como-sera-el-clima-en-colombia-este-fin-de-semana-estas-son-las-regiones-donde-mas-llovera/202631/">sobre las condiciones atmosféricas</a> que se registrarán en el país durante el fin de semana del 18 al 20 de septiembre de 2026.</p><p>La entidad advirtió sobre variaciones en las precipitaciones que podrían incidir en las actividades al aire libre programadas con motivo de la celebración del Día de Amor y Amistad.</p><p>El comportamiento del clima mantendrá nubosidad variable e intercalación entre periodos secos y episodios lluviosos en las distintas regiones geográficas del territorio nacional.</p><h2>Viernes 18 de septiembre</h2><p>El inicio de la jornada festiva está marcado por un incremento en la nubosidad y la presencia de lluvias. Se prevén lluvias entre moderadas y fuertes, acompañadas en algunos sectores por actividad eléctrica, en departamentos del Caribe como La Guajira, Cesar, Magdalena, Atlántico, Bolívar, Sucre y Córdoba. </p><p>De igual forma, las precipitaciones intensas afectarán las regiones Andina y Pacífica en Antioquia, Norte de Santander, Santander, Boyacá, Cundinamarca, Caldas, Risaralda, Chocó, Valle del Cauca, Cauca y Nariño.</p><p>Asimismo, se reportarán precipitaciones en Casanare, Vichada, Meta, Guainía, Guaviare y Vaupés, mientras que en Tolima, sur del Huila, Arauca, Putumayo y Amazonas se registrarán lluvias de carácter disperso.</p><p>En el archipiélago de San Andrés, Providencia y Santa Catalina se mantendrá tiempo predominantemente seco con cielo parcialmente nublado. </p><h2>Sábado 19 de septiembre</h2><p>Durante las primeras horas de la mañana y la tarde del sábado, prevalecerán las condiciones de tiempo seco en la mayor parte del territorio nacional, con cielos entre despejados y parcialmente nublados.</p><p>Sin embargo, hacia el final de la tarde y el transcurso de la noche, se presentará un cambio en el patrón atmosférico con lluvias de variada intensidad.</p><p>Las precipitaciones de mayor consideración, acompañadas de tormentas eléctricas locales, se concentrarán principalmente en sectores del Caribe, la región Andina, la franja Pacífica, la Orinoquia y la Amazonia, afectando zonas del Urabá, Antioquia, Santanderes, Eje Cafetero y la costa pacífica.</p><p>Por su parte, en Cundinamarca, Tolima, Huila, Meta, Caquetá y Putumayo se pronostican únicamente lluvias ligeras, mientras que la región insular presentará posibilidad de precipitaciones en el sur y occidente de las islas.</p><h2>Domingo 20 de septiembre</h2><p>Para el cierre del fin de semana, el reporte técnico señala la consolidación de tiempo seco en amplios sectores de las regiones Orinoquia y Amazonia, al igual que en el centro-sur de la región Andina y la zona oriental del Caribe.</p><p>Por el contrario, a partir del mediodía y durante la noche se esperan precipitaciones de diversa intensidad en la franja occidental del país, abarcando departamentos del litoral Caribe, la región Pacífica y el noroccidente andino. En áreas de Cundinamarca, Tolima, Huila y la Amazonia se mantendrá la probabilidad de lloviznas intermitentes.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DVLFNYHEEZG37KXJOXEIY3COZE.jpg?auth=aae26e056050af259f4e5b8498ac7e3089bc68febf614f1cfe10b709d7aa08d4&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[Entre el calor intenso y las lluvias, el clima en Colombia tendrá a más de uno sacando sombrilla y bloqueador.]]></media:description></media:content></item></channel></rss>