<?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 15:24:06 +0000</lastBuildDate><language>es</language><ttl>1</ttl><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><item><title><![CDATA[“En Colombia no se realizan cirugías de reafirmación de género a personas menores”: fuerte llamado de la Asociación Colombiana de Sociedades Científicas ]]></title><link>https://www.semana.com/politica/articulo/en-colombia-no-se-realizan-cirugias-de-reafirmacion-de-genero-a-personas-menores-fuerte-llamado-de-la-asociacion-colombiana-de-sociedades-cientificas/202634/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/en-colombia-no-se-realizan-cirugias-de-reafirmacion-de-genero-a-personas-menores-fuerte-llamado-de-la-asociacion-colombiana-de-sociedades-cientificas/202634/</guid><dc:creator><![CDATA[ Francisco  Argüello]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 15:19:34 +0000</pubDate><content:encoded><![CDATA[<p>La Asociación Colombiana de Sociedades Científicas envió un contundente llamado este sábado, 19 de septiembre, a las autoridades, medios de comunicación, influenciadores, líderes políticos, entre otros, donde confirmó que, pese al debate que se ha abierto recientemente, en Colombia “no se realizan cirugías de reafirmación de género a menores de edad”. </p><p>En otras palabras, según la asociación que tiene como propósito fundamental <b>agrupar y representar a las sociedades científicas del área de la salud</b>, en el país no se adelantan procedimientos quirúrgicos para cambiar de sexo a niños, niñas y adolescentes.</p><p>“De acuerdo con la evidencia clínica y la práctica asistencial reconocida por nuestras sociedades, en Colombia no se realizan cirugías de reafirmación de género a personas menores de edad. <b>Presentarlo como un hecho comprobado distorsiona la realidad clínica, incrementa la incertidumbre de las familias y puede alejarlas de los servicios de salud cuando requieren orientación</b> y acompañamiento profesional”, se lee en el comunicado.</p><p>Las sociedades científicas que suscribieron el pronunciamiento consideraron necesario “aportar rigor, responsabilidad y evidencia a la conversación pública sobre la atención en salud de niñas, niños y adolescentes”. </p><p>La controversia reciente alrededor del documental<i> Colombia fábrica de niños trans </i>y de las actuaciones judiciales relacionadas, “ha dado lugar a información inexacta y a señalamientos contra profesionales de la salud, circunstancias que no contribuyen a la protección efectiva de la niñez ni a decisiones clínicas y públicas responsables”. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AEOJ3A35RBCFPJCIY3W4KAEDAI.jpeg?auth=a287121c4e1e7356cd4e42c0250d40b455c911a2714cfdb9d24182bfa2419881&smart=true&width=1280&height=720" alt="Presentan proyecto de ley Laura para prohibir cambio de sexo y género en menores de edad." height="720" width="1280"/><p>Los especialistas consideraron que “la atención de una niña, niño o adolescente que explora o expresa una identidad de género exige valoración individual, gradual e interdisciplinaria, con consideración de sus necesidades de salud y de su entorno familiar. Debe regirse por la ética profesional, la bioética, el respeto por la dignidad humana, la autonomía progresiva, el interés superior de la niñez y la participación informada de las familias o cuidadores cuando corresponda”, añadieron.</p><p>Reconocieron que este tema puede suscitar opiniones y posiciones diversas, las cuales deben ser escuchadas con respeto. Sin embargo, a juicio de la asociación, los pronunciamientos públicos, las decisiones institucionales y las iniciativas normativas que incidan en la salud y los derechos de niñas, niños y adolescentes deben fundarse en la evidencia técnico-científica disponible, su evaluación crítica y una deliberación ética cualificada. </p><p><b>“La legítima controversia no justifica la difusión de afirmaciones no verificadas, las generalizaciones, la estigmatización ni el descrédito de pacientes,</b> familias o profesionales de la salud”, precisaron.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/GHRMVKUEKZFMJCT5P7XABXW7IA.jpg?auth=6d5c35b347ec5bbeedb97656b891bfff98662ab7770ed8fe9716f3a31eaf8316&smart=true&width=1280&height=720" alt="El Congreso, uno de los escenarios donde se debatirá el polémico tema. " height="720" width="1280"/><p>Invitaron a autoridades, medios de comunicación, líderes de opinión y ciudadanía a acudir a fuentes científicas confiables, a la experiencia clínica pertinente y al marco ético, constitucional y legal aplicable. El propósito del debate - se lee en el comunicado- debe ser proteger el bienestar y el derecho a la salud de niñas, niños y adolescentes, <a href="https://www.semana.com/politica/articulo/freno-de-mano-a-cualquier-tipo-de-tratamiento-hormonal-para-cambio-de-genero-de-menores-de-edad-este-es-el-proyecto-que-circula-en-el-congreso/202337/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/freno-de-mano-a-cualquier-tipo-de-tratamiento-hormonal-para-cambio-de-genero-de-menores-de-edad-este-es-el-proyecto-que-circula-en-el-congreso/202337/">prevenir daños y asegurar una atención humana, segura, oportuna y libre de discriminación.</a></p><p>“Queremos expresar nuestro firme respaldo al doctor Mario Ángulo, especialista en endocrinología pediátrica quien ha sido víctima de señalamientos en los últimos días. Las discrepancias legítimas deben tramitarse mediante discusión académica seria, revisión de la evidencia y respeto irrestricto por el derecho fundamental al debido proceso de las personas, evitando descalificaciones personales <a href="https://www.semana.com/politica/articulo/partidos-politicos-piden-a-de-la-espriella-apoyar-proyecto-que-sancionaria-procedimientos-medicos-por-cambio-de-sexo-en-menores/202645/#google_vignette" target="_blank" rel="" title="https://www.semana.com/politica/articulo/partidos-politicos-piden-a-de-la-espriella-apoyar-proyecto-que-sancionaria-procedimientos-medicos-por-cambio-de-sexo-en-menores/202645/#google_vignette">o afirmaciones que desconozcan la autonomía, la formación y la responsabilidad ética de los profesionales de la salud”.</a></p><p>También hicieron una invitación a la Comisión Séptima de la Cámara: “promover e instalar una mesa técnica nacional, plural, interdisciplinaria y transparente sobre este tema puntual. Esta mesa deberá integrar al Gobierno Nacional, la Corte Constitucional, al mismo órgano legislativo, quienes, en compañía de: las sociedades científicas, expertos en bioética, salud pública, salud mental y desarrollo infantil y adolescentes, representantes de pacientes y familias, academia, sociedad civil, autoridades competentes, para crear un marco normativo que legitime de manera definitiva los avances que se han presentado tanto en la Corte Constitucional como en el Ministerio de Salud y Protección Social”.</p><p>El Congreso ya entró en la batalla por las terapías de cambio de género en Colombia.<a href="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/" target="_blank" rel="" title="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/"> Un proyecto de ley así lo contempla. </a></p><h1> </h1>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JYGLBNULDVEQVEUJIKVQHJZEYI.jpg?auth=31efd7045babbeee43d433748c5361e1d774cee71720b78998f1f91e658a8d4f&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[“En Colombia no se realizan cirugías de reafirmación de género a personas menores”: fuerte llamado de la Asociación Colombiana de Sociedades Científicas]]></media:description></media:content></item><item><title><![CDATA[Daniel Briceño arremete ante las decisiones de movilidad de Alcaldía Galán: “Secretaría de Inmovilidad de Bogotá”]]></title><link>https://www.semana.com/vehiculos/articulo/daniel-briceno-arremete-ante-las-decisiones-de-movilidad-de-alcaldia-galan-secretaria-de-inmovilidad-de-bogota/202646/</link><guid isPermaLink="true">https://www.semana.com/vehiculos/articulo/daniel-briceno-arremete-ante-las-decisiones-de-movilidad-de-alcaldia-galan-secretaria-de-inmovilidad-de-bogota/202646/</guid><dc:creator><![CDATA[Julián Mateo Candela Suescún]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 15:16:46 +0000</pubDate><content:encoded><![CDATA[<p>El abogado y representante a la Cámara de Bogotá, <a href="https://www.semana.com/vehiculos/articulo/daniel-briceno-comparte-su-postura-ante-la-propuesta-de-abelardo-de-la-espriella-de-beneficiar-a-conductores-cuente-conmigo/202617/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/daniel-briceno-comparte-su-postura-ante-la-propuesta-de-abelardo-de-la-espriella-de-beneficiar-a-conductores-cuente-conmigo/202617/">Daniel Briceño</a>, <b>compartió su punto de vista ante las múltiples decisiones y acciones que ha realizado la Alcaldía de Bogotá en materia de movilidad para la capital del país. </b></p><p>Durante los últimos meses, la administración del alcalde Carlos Fernando Galán ha estado realizando varios operativos con el objetivo de <a href="https://www.semana.com/vehiculos/articulo/bogota-busca-ponerle-fin-al-desorden-en-las-vias-alcaldia-galan-se-alia-con-motociclistas-para-promover-la-seguridad-vial/202655/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/bogota-busca-ponerle-fin-al-desorden-en-las-vias-alcaldia-galan-se-alia-con-motociclistas-para-promover-la-seguridad-vial/202655/">mejorar la circulación en la ciudad</a>, además de realizar demoliciones para brindar un mejor espacio para los ciudadanos. </p><p>Dentro de los hechos más recientes que realizó el distrito, se encuentra la instalación de una nueva semaforización en la glorieta de la calle 63 con carrera 50, la cual comenzará sus operaciones a partir del próximo 20 de septiembre. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/GRESOAUHIJDH7KD3XSHN6DWYDU.jpg?auth=5de8651e0f004efd9ecc507591b36e2f7d5611687c912f1bbbe95bd09af223ff&smart=true&width=631&height=340" alt="El nuevo semáforo estará en la glorieta de la calle 63 con carrera 50." height="340" width="631"/><p>La razón por la que la alcaldía está colocando estos nuevos semáforos es para poder organizar los flujos vehiculares, además de brindar un cruce seguro para los peatones que transitan por el sector.<b> El Distrito indica que durante un día hábil, más de 3.500 ciclistas y 590 peatones cruzan por este corredor, el cual ha tenido registros de accidentes viales. </b></p><p>“Con esta nueva semaforización<b> ordenamos los flujos vehiculares, mitigando los riesgos de choques y conflictos, priorizando la seguridad vial de todos</b>, en una intersección que registra 19 personas lesionadas en siniestros viales graves entre 2023 y 2025″, afirmó la secretaria de Movilidad, María Fernanda Ortiz.</p><h2>Respuesta de Briceño</h2><p>Luego del anuncio por parte de la Alcaldía de Bogotá<b>, el representante a la Cámara, Daniel Briceño, rechazó las acciones realizadas por el distrito. </b></p><p>En palabras del abogado, <b>la llegada de esta nueva semaforización no trae beneficios a los ciudadanos de la capital, sino que, de lo contrario, generará más problemas de movilidad. </b></p><p>Briceño no solamente arremetió ante el caso de la semaforización de la glorieta de la calle 63, sino que <b>también critica otras gestiones que ha realizado la administración Galán. </b></p><p>“Semáforos en glorietas, cámaras de recaudo que les llaman ‘salvavidas’, taches y resaltos en todas las vías, reducción de carriles a diestra y siniestra en una ciudad colapsada, reductores de velocidad sin criterio: <b>Secretaría de Inmovilidad de Bogotá</b>”, comentó.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">Semáforos en glorietas, cámaras de recaudo que les llaman ‘salvavidas’, taches y resaltos en todas las vías, reducción de carriles a diestra y a siniestra en una ciudad colapsada,, reductores de velocidad sin criterio:<br><br>Secretaría de INMOVILIDAD de Bogotá</p>&mdash; Daniel F. Briceño (@Danielbricen) <a href="https://x.com/Danielbricen/status/2101065108529332298?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p>El representante a la Cámara también se ha pronunciado acerca de la implementación de las <a href="https://www.semana.com/vehiculos/articulo/representante-daniel-briceno-propone-suspender-las-nuevas-camaras-de-fotomultas-en-bogota-que-busca-con-su-iniciativa/202653/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/representante-daniel-briceno-propone-suspender-las-nuevas-camaras-de-fotomultas-en-bogota-que-busca-con-su-iniciativa/202653/">nuevas cámaras de fotomultas en Bogotá</a>, en donde ha pedido al presidente Abelardo De La Espriella y a la ministra de Transporte, Elsa Noguera, suspender estos dispositivos. </p><p>“Por favor, revisen el tema de Bogotá.<b> En Bogotá estamos cansados de la persecución; estamos cansados de que, a través de un discurso de cuidado de la vida, lo que hayan montado realmente sea un mecanismo efectivo de recaudo de plata para alimentar burocráticamente a esa Secretaría</b>”, afirmó.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">Le pedimos al presidente <a href="https://x.com/ABDELAESPRIELLA?ref_src=twsrc%5Etfw">@ABDELAESPRIELLA</a> y la ministra <a href="https://x.com/elsanoguerabaq?ref_src=twsrc%5Etfw">@elsanoguerabaq</a> intervenir en la instalación de las nuevas cámaras de fotomultas que pretende instalar la alcaldía de Galán en la NQS, la Calle 26 y la Avenida de las Américas. Son un abuso <a href="https://t.co/KjV7Dn5wcs">pic.twitter.com/KjV7Dn5wcs</a></p>&mdash; Daniel F. Briceño (@Danielbricen) <a href="https://x.com/Danielbricen/status/2091932941739823129?ref_src=twsrc%5Etfw">August 24, 2026</a></blockquote>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/J4GLA3BQJ5HXJB7SC3ILOGLKMU.jpg?auth=8050919b1b3f17e782fee517426a4d89ead7dc2f95f9cf75ab8627945d404e00&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[El representante Daniel Briceño cuestionó la instalación de semáforos, reductores y otros elementos en las vías de Bogotá.]]></media:description></media:content></item><item><title><![CDATA[Se va al descenso equipo del ‘Big Six’ de la Premier League: tabla de posiciones, cruda]]></title><link>https://www.semana.com/deportes/articulo/se-va-al-descenso-equipo-del-big-six-de-la-premier-league-tabla-de-posiciones-cruda/202627/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/se-va-al-descenso-equipo-del-big-six-de-la-premier-league-tabla-de-posiciones-cruda/202627/</guid><dc:creator><![CDATA[Sergio Alejandro Calderón Calderón]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 15:14:27 +0000</pubDate><content:encoded><![CDATA[<p>Aston Villa logró su primera victoria en la Premier League, este sábado en el campo del <a href="https://www.semana.com/noticias/tottenham/" target="_blank" rel="noreferrer" title="https://www.semana.com/noticias/tottenham/">Tottenham</a><b> (3-2), un rival a la deriva y en puestos de descenso con cinco fechas disputadas.</b></p><p>Esta derrota deja en la cuerda floja al DT de los Spurs, Roberto De Zerbi, toda vez que da tranquilidad a su homólogo del Villa, Unai Emery, cuyo equipo llegó a Londres con tres derrotas en cuatro partidos y un solo gol marcado.</p><p><b>Nada va bien para el Tottenham, decimoctavo antes de los demás partidos del fin de semana, y cuyo balance muestra tres derrotas y dos empates.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4JTVUKYYRBF5NLH5CEANYPDZNQ.jpg?auth=3d461485987f6bea089994bc7854a502ad6f9ce306067c44f6445bf70ce40a73&smart=true&width=5071&height=3435" alt="Tottenham es considerado uno de los clubes tradicionales y grandes de Inglaterra." height="3435" width="5071"/><p>El equipo de Roberto De Zerbi pagó cara su falta de eficacia y el Aston Villa, al contrario, transformó una de sus escasas ocasiones en gol justo antes del descanso por medio del prodigio suizo Johan Manzambi (45+4′).</p><p>Los locales vieron cómo les era anulado un gol a Mohammed Kudus por el VAR por fuera de juego de su pasador, Andy Robertson (60’).</p><p>De Zerbi sustituyó a su delantero centro Dominic Solanke por James Maddison pero, acto seguido, fue el Villa el que volvió a marcar: un saque largo de Suzuki, una combinación Manzambi-Jackson entre cuatro defensas y el senegalés acertó con la portería (67′).</p><p>La diferencia se vio ampliada tras una joya del argentino Emiliano Buendía (79′), ante una defensa apática.</p><p><b>Los Spurs salvaron el honor por partida doble en la recta final, por medio de Conor Gallagher (86’, 3-1) y Jan Paul van Hecke (90+8, 3-2)</b>; sus primeros goles en cinco jornadas.</p><h2>Tabla de posiciones de la Premier League</h2><ul><li>Arsenal — 12 pts </li><li>Manchester City — 12 pts </li><li>Brentford — 9 pts </li><li>Leeds United — 8 pts </li><li>Hull City — 8 pts </li><li>Brighton — 7 pts </li><li>Chelsea — 7 pts </li><li>Liverpool — 6 pts </li><li>Everton — 6 pts </li><li>Ipswich Town — 6 pts </li><li>Nottingham Forest — 5 pts </li><li>Newcastle United — 5 pts </li><li>Manchester United — 4 pts </li><li>Sunderland — 4 pts </li><li>Aston Villa — 4 pts </li><li>Bournemouth — 3 pts </li><li>Crystal Palace — 3 pts </li><li><b>Tottenham — 2 pts </b></li><li><b>Fulham — 1 pt </b></li><li><b>Coventry City — 0 pts</b></li></ul><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/2PNNYXPN5RGVPG43FQDBRRDV5Y.png?auth=137b72beab0c0ee3d8cc7b416b038cd1b9debd921d72f7da686bdf83b0f9544d&smart=true&width=1280&height=720" alt="Afición y jugador del Tottenham lamentan la actual situación del club en Premier League" height="720" width="1280"/><h2>Complemento de la fecha 5</h2><p>En el segundo turno de la jornada sabatina de la Premier League entraron en acción Newcastle, Everton y Arsenal, que enfrentaban a Hull City, Ipswich y Brighton, respectivamente.</p><p>Sin duda el juego de mayor atractivo tenía era el del vigente campeón, <b>Arsenal, que a la altura del minuto 45 iba perdiendo con su rival de turno en condición de visita por 2-0.</b></p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">¡AY DIOS MIO, KOSTOULAS, ES UN GOLAZO! El griego del Brighton definió de forma magnífica para marcarle al Arsenal en la fecha 5 de la <a href="https://x.com/hashtag/PREMIERxESPN?src=hash&amp;ref_src=twsrc%5Etfw">#PREMIERxESPN</a>.<br><br>📺 Mirá la Premier League por ESPN en el Plan Premium de <a href="https://x.com/hashtag/DisneyPlus?src=hash&amp;ref_src=twsrc%5Etfw">#DisneyPlus</a> <a href="https://t.co/RJm2iKzfT4">pic.twitter.com/RJm2iKzfT4</a></p>&mdash; SportsCenter (@SC_ESPN) <a href="https://x.com/SC_ESPN/status/2101322498440647082?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p><a href="https://www.semana.com/deportes/articulo/la-tabla-de-la-premier-league-tras-el-golpe-del-leeds-se-trepa-en-la-zona-alta-y-avisa-al-city-y-arsenal/202650/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/la-tabla-de-la-premier-league-tras-el-golpe-del-leeds-se-trepa-en-la-zona-alta-y-avisa-al-city-y-arsenal/202650/">Por como se ha movido la tabla en las primeras jornadas del campeonato inglés</a>, la batalla Arsenal vs. Manchester City por el título seguirá una campaña más. <b>En caso de que los </b><i><b>gunners </b></i><b>no logren remontar y los celestes triunfen el domingo vs. Sunderland, se dará el primer sacudón en la cima. </b></p><p>Otros juegos que se destacan de la fecha antes del parón que va a darse en Europa por la fecha de amistosos Fifa es que el que llevarán Bournemouth vs. Liverpool y Fulham frente al Manchester United.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CYIYOP4XJZAIHM32NDUDNFY4SY.png?auth=b6000437b5045b629dfaa5a9de3a039598eeb0a49623e570ce9a459f85482c33&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Tabla de la Premier League manda a un grande al descenso y líder pincha en la fecha 5]]></media:description></media:content></item><item><title><![CDATA[Amor y Amistad llega con nueva música: Shakira, Maluma, Beéle, Elvis Crespo, Miley Cyrus y más artistas sorprenden con estrenos ]]></title><link>https://www.semana.com/cultura/musica/articulo/amor-y-amistad-llega-con-nueva-musica-shakira-maluma-beele-elvis-crespo-miley-cyrus-y-mas-artistas-sorprenden-con-estrenos/202638/</link><guid isPermaLink="true">https://www.semana.com/cultura/musica/articulo/amor-y-amistad-llega-con-nueva-musica-shakira-maluma-beele-elvis-crespo-miley-cyrus-y-mas-artistas-sorprenden-con-estrenos/202638/</guid><dc:creator><![CDATA[María Fernanda Orjuela Espitia]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 15:00:38 +0000</pubDate><content:encoded><![CDATA[<p>Amor y Amistad se toma este fin de semana en Colombia y la música también llega como protagonista. Artistas nacionales e internacionales presentaron <b>canciones, colaboraciones, EP y álbumes que pasan por el merengue, el reguetón, el pop, los corridos</b> y la música popular.</p><p>Shakira y Maluma volvieron a encontrarse después de varios años, Beéle se juntó con una figura del merengue y Feid presentó nueva música. A ellos se suman nombres como <b>Jessi Uribe, Blessd, Piso 21 y Zaider. En el panorama internacional, Miley Cyrus </b>encabeza las novedades con su décimo álbum de estudio.</p><h2>Los colombianos que llegan con nueva música</h2><h3>Shakira y Maluma vuelven a encontrarse en <i>Agua</i></h3><p>Shakira y Maluma encabezan los lanzamientos nacionales con <i><b>Agua</b></i><b>, colaboración que marca su reencuentro musical ocho años después de ‘Clandestino’.</b> Esta vez, los colombianos apuestan por el merengue y los sonidos tropicales para hablar de la atracción entre dos personas, sumando un nuevo capítulo a una dupla que anteriormente dejó canciones como ‘Chantaje’, ‘Trap’ y ‘Clandestino’.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/2-NkuLjtGNY?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="Maluma &amp; Shakira - AGUA (Official Video)"></iframe><h3>Beéle y Elvis Crespo ponen a bailar con <i>Pa’ Bailar</i></h3><p><b>Beéle se unió a Elvis Crespo en </b><i><b>Pa’ Bailar</b></i><b>, una colaboración que lleva al barranquillero al terreno del merengue</b> junto a una de las figuras más reconocidas del género. El sencillo refuerza la presencia de los ritmos tropicales entre los estrenos de Amor y Amistad y cruza dos generaciones de artistas caribeños.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/_oCrIGbeDno?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="Elvis Crespo, @beele I PA´BAILAR  (Official Video)"></iframe><h3>Feid regresa con <i>El Club de las 19 Flores</i></h3><p>Feid presentó El Club de las 19 Flores, un nuevo capítulo de EL GREEN PRINT: La Saga con la que vuelve sobre el universo de 19. Entre las novedades está <i>Se puso feo</i>, junto a Divino y Baby Ranks, mientras<b> el proyecto también reúne colaboraciones con nombres como Bad Gyal y Yandel.</b></p><iframe width="560" height="315" src="https://www.youtube.com/embed/QSR2XjlFVGU?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="Feid, Divino, Baby Ranks - SE PUSO FEO (Visualizer)"></iframe><h3>Luis Alfonso, Silvestre Dangond y Xavi sirven <i>Sabor a Tequila</i></h3><p>Luis Alfonso, Silvestre Dangond y Xavi unieron Colombia y México en <i>Sabor a Tequila</i>, su primera colaboración juntos. El tema mezcla sus estilos con elementos de los corridos mexicanos para contar una<b> historia de infidelidad, traición y abandono en la que el tequila se convierte en la metáfora</b> de beber para olvidar y terminar recordando aún más. </p><iframe width="453" height="340" src="https://www.youtube.com/embed/RD002_TJZWI?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="Sabor a Tequila - Luis Alfonso x Silvestre Dangond x Xavi | Video Oficial"></iframe><h3>Jessi Uribe revive <i>Pa’ Que No Me Anden Contando</i></h3><p>Jessi Uribe se unió a Juan Pablo Márquez y Voz de Mando para presentar el remix de <i>Pa’ Que No Me Anden Contando</i>, recuperando una canción del regional mexicano desde un encuentro con la música popular colombiana. El tema, compuesto por Joss Favela y Luciano Luna, gira alrededor de <b>vivir las experiencias por cuenta propia</b> y no quedarse únicamente con lo que otros cuentan.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/5Bd8TCrMmy4?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="Juan Pablo Marquez, Jessi Uribe, Voz De Mando - Pa Que No Me Anden Contando Remix (Video Oficial)"></iframe><h3><b>Blessd presenta </b><i><b>Ella</b></i></h3><p>Blessd también tiene estreno con <i><b>Ella</b></i><b>, junto a The Money Makers. </b>La canción figura entre las novedades urbanas de la semana y mantiene al artista antioqueño como uno de los representantes colombianos con mejor posicionamiento. </p><iframe width="560" height="315" src="https://www.youtube.com/embed/kLNwlamNawY?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="ELLA | BLESSD ( VIDEO OFICIAL )"></iframe><h3>Piso 21 tiene una <i>Segunda Cita</i></h3><p>Piso 21 volvió a encontrarse con Micro TDH y sumó a Gangsta para presentar <i>Segunda Cita</i>. La colaboración <b>retoma la conexión musical que la agrupación colombiana y el venezolano</b> habían construido anteriormente y agrega un nuevo capítulo a su historia conjunta.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/UqCOEO8oUV8?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="Piso 21, Micro TDH &amp; Gangsta - Segunda Cita (Video Oficial)"></iframe><h3>Aria Vega continúa creciendo con <i>Compa Coleto</i></h3><p>La barranquillera Aria Vega estrenó <i>Compa Coleto</i> <i>(uy como)</i>, una canción construida alrededor de la atracción de un primer encuentro y atravesada por expresiones y sonidos del Caribe. El lanzamiento llega además en un momento de c<b>recimiento para la artista, quien continúa consolidando su propuesta de identidad costeña.</b> La canción ya era tendencia en TikTok sin ser lanzada. </p><iframe width="560" height="315" src="https://www.youtube.com/embed/_RZQcpPViMA?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="ARIA VEGA - COMPA COLETO (uy_como) (Lyric Video)"></iframe><h3>Zaider estrena <i>Plenitud</i></h3><p>Desde Cartagena, Zaider llegó con<i> Plenitud</i>, una canción que <b>aborda el vacío que queda después de una ruptura </b>y el proceso de volver a encontrar tranquilidad. El artista mantiene su identidad caribeña sobre una base de afrobeat, combinando una historia de desamor con un sonido pensado también para bailar.</p><iframe width="453" height="340" src="https://www.youtube.com/embed/B_DxJR0IKLY?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="Zaider - Plenitud (Video Oficial)"></iframe><ul><li><b>Juan Duque y DFZM llegan con </b><i><b>Aviona</b></i></li></ul><p>Juan Duque y DFZM unen fuerzas en <i>Aviona</i>, otra de las colaboraciones que representa a la <b>nueva generación de la música urbana colombiana </b>dentro de los estrenos de esta semana.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/BryhPLXeEmI?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="Juan Duque, DFZM - Aviona (Video Oficial)"></iframe><ul><li><b>Varela lleva los corridos hasta Cali</b></li></ul><p>Varela presentó Los corridos del Valle, un EP de cinco canciones tres de ellas inéditas, con el que busca contar historias de Cali a través de los corridos tumbados.<b> Amor, lealtad y calle </b>atraviesan un proyecto que pretende abrirle espacio a la capital del Valle dentro de un género que sigue cogiendo fuerza en Colombia. </p><iframe width="560" height="315" src="https://www.youtube.com/embed/5HahVAKbggI?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 PACTO - VARELA (Official video)"></iframe><h2>Miley Cyrus encabeza los estrenos internacionales</h2><h3>Miley Cyrus abre una nueva etapa con su décimo álbum</h3><p>Miley Cyrus protagoniza las novedades internacionales con <b>Bass Persuades, su décimo álbum de estudio</b> y el comienzo de una nueva etapa en su carrera. Junto con el proyecto llegó el videoclip de ‘Let’s Get Married’, en el que aparece su prometido, el músico y productor Maxx Morando, y que conecta especialmente con una semana marcada por las canciones sobre el amor.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/qwaVhOZkAek?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="MILEY - Let&#39;s Get Married (Official Video)"></iframe><h3>Juan Luis Guerra y Manny Cruz hacen posible <i>Nieve en verano</i></h3><p>Juan Luis Guerra y Manny Cruz reunieron dos generaciones del merengue dominicano en <i>Nieve en verano</i>, una canción sobre<b> la llegada inesperada de un amor que parecía imposible</b>. Precisamente, el título utiliza la nieve en pleno verano como metáfora de aquello que parecía improbable hasta que una persona termina transformándolo todo.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/xAiW0AnSxdg?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="Juan Luis Guerra ❌ Manny Cruz - NIEVE EN VERANO (Video Oficial)"></iframe><h3>Rels B vuelve al mar y a sus raíces</h3><p>Rels B presentó <b>Fill de la Mar, un álbum inspirado en sus raíces baleares, el mar, la playa y los atardeceres,</b> en el que incorpora influencias mediterráneas, lo-fi y bossa nova. Entre las canciones aparecen <i>Preso </i>y <i>Esperanza</i>, esta última junto a AMYNATA.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/xiiNKZV72eQ?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="Rels B, AMYNATA - esperanza | fill de la mar (2026)"></iframe><h3>Rauw Alejandro llega con <i>Macacoa 2000</i></h3><p>Rauw Alejandro también se suma con <i>Macacoa 2000</i>, canción vinculada a GTA VI: The Album. El lanzamiento lleva al puertorriqueño <b>al universo musical de una de las franquicias de videojuegos más reconocidas</b> y lo ubica entre las principales novedades urbanas de la semana.</p><iframe width="453" height="340" src="https://www.youtube.com/embed/DShU-ly9BdM?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="Macacoa 2000 (from GTAVI: The Album)"></iframe><h3>Pablo López y Lola Índigo unen sus estilos</h3><p>Desde España, Pablo López y Lola Índigo presentaron <i>Casi Siempre</i>, colaboración incluida en <i>El Cuatro</i>, el nuevo trabajo discográfico del cantante malagueño. El encuentro muestra a Lola Índigo en <b>un registro diferente al de sus propuestas más bailables </b>y une dos universos del pop español.</p><iframe width="453" height="340" src="https://www.youtube.com/embed/hBiEWZGEjOE?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="Casi Siempre"></iframe><h3>Rosé presenta <i>New Trick</i></h3><p>Rosé, integrante de BLACKPINK, aparece entre las novedades internacionales con <i>New Trick</i>, una canción que<b> explora influencias del pop-rock de los años 2000</b> y continúa desarrollando su faceta como solista en paralelo a su trayectoria con el grupo surcoreano.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/Lufa9QAFFeY?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="ROSÉ - new trick (OFFICIAL MUSIC VIDEO)"></iframe><h3>Troye Sivan pone la fiesta</h3><p>Troye Sivan regresó con <i>Party</i>, otra de las novedades pop de la semana. <b>El australiano se suma así a una jornada internacional</b> particularmente movida, en la que artistas de distintas generaciones presentaron nuevo material.</p><iframe width="453" height="340" src="https://www.youtube.com/embed/Yvl4QSAyWR4?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="Troye Sivan - Party (Official Music Video)"></iframe><h2><b>Otros estrenos para tener en el radar</b></h2><p>La lista todavía guarda más novedades.<b> Apolo 7 presentó </b><i><b>Todo me habla de ti</b></i><b>,</b> una canción sobre la nostalgia después de una ruptura que abre una nueva etapa sonora para la banda al combinar pop rock, guitarras y elementos electrónicos. El tema fue producido por Steven Baquero Vargas y llegó acompañado de un videoclip que utiliza situaciones extremas como metáforas de la pérdida.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/-M4EnTB0M8A?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="APOLO 7 - Todo me habla de ti (official Video )"></iframe><p>También <b>Caloncho y Jaze volvieron a trabajar juntos en </b><i><b>Fue Amor</b></i><b>, </b>su segunda colaboración, una canción sobre aquellos recuerdos que permanecen incluso cuando una relación ya terminó y que abre una nueva etapa del proyecto<i> Vivo En El Tiempo</i>, de Caloncho.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/1aOwlsrL4VE?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="Caloncho, Jaze - Fue Amor"></iframe><p>Por su parte, <b>Fifty estrenó </b><i><b>Nunca es tarde</b></i><b>, mezcla de afropop</b> y afrohouse que convierte la friendzone en una invitación a arriesgarse y descubrir si entre dos amigos puede existir algo más.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/95l1UJ_f2KU?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="Fifty - Nunca es Tarde (Video Oficial)"></iframe><p>A este recorrido se suman Gangsta, Jory Boy y Red Fox con <i>Que se reporten</i>; TURR y Jombriel con <i>Sexy Diva</i>; RIOA y <b>Anuel AA con </b><i><b>Vamo a vel</b></i><b>’</b>; y Freya Skye con <i>Bad taste</i>. Además, nombres como <b>Carly Rae Jepsen, Neil Young y Vetusta Morla </b>también aparecen entre las novedades musicales de estos días.</p><iframe width="560" height="315" src="https://www.youtube.com/embed/ivX_Bule86Q?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="ROA, Anuel AA - Vamo a Vel (Official Video)"></iframe><p>Con propuestas para enamorados, amigos, despechados y quienes simplemente quieren bailar, <b>Amor y Amistad llega acompañado de música para prácticamente cualquier estado sentimental,</b> con una amplia presencia colombiana y estrenos internacionales.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XSQAIHTSVNG3HBA23BFSU3FUW4.jpeg?auth=512f3e52991e9bd0f0bf98d96c45aee6732ae50ec8f0279cf7088698c8e4196f&amp;smart=true&amp;width=1474&amp;height=1067" type="image/jpeg" height="1067" width="1474"><media:description type="plain"><![CDATA[Amor y Amistad llega acompañado de música para cualquier estado sentimental.]]></media:description></media:content></item><item><title><![CDATA[Más de 100 hijos y decenas de gestantes: el polémico caso del multimillonario chino en EE. UU.]]></title><link>https://www.semana.com/mundo/noticias-estados-unidos/articulo/mas-de-100-hijos-y-decenas-de-gestantes-el-polemico-caso-del-multimillonario-chino-en-ee-uu/202605/</link><guid isPermaLink="true">https://www.semana.com/mundo/noticias-estados-unidos/articulo/mas-de-100-hijos-y-decenas-de-gestantes-el-polemico-caso-del-multimillonario-chino-en-ee-uu/202605/</guid><dc:creator><![CDATA[Margarita Briceño Delgado]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 14:49:05 +0000</pubDate><content:encoded><![CDATA[<p>Lo que parecía ser un contrato de gestación subrogada por 120.000 dólares terminó revelando una historia mucho más grande. </p><p>Una mujer estadounidense descubrió durante su embarazo que el padre del bebé era el multimillonario chino Xu Bo, a quien se le atribuyen más de 100 hijos nacidos mediante este procedimiento en Estados Unidos.</p><h2>Un embarazo que destapó el millonario secreto</h2><p>El caso volvió a generar atención después de una investigación de <i>CBS News</i> sobre la experiencia de una gestante identificada como Judy, quien decidió mantener su nombre en reserva.</p><p>La mujer encontró en Instagram un anuncio de una agencia de gestación subrogada. Según su relato, <b>aceptó el proceso porque le ofrecían 120.000 dólares y entendió que llevaría en su vientre al hijo de un padre soltero que quería ampliar su familia.</b></p><p>Judy aseguró que intentó conocer al hombre para quien estaba gestando, pero nunca logró reunirse con él. También preguntó a la agencia cuántas mujeres estaban llevando hijos para ese mismo padre y, según su testimonio, le dijeron que eran cerca de dos docenas.</p><p>La verdadera identidad del hombre salió a la luz cuando periodistas revisaron documentos filtrados y le mostraron información relacionada con Xu Bo.</p><p><b>La mujer contó que se sintió sorprendida al descubrir que el padre era un empresario que, según investigaciones periodísticas, había recurrido a numerosas gestantes en Estados Unidos</b>.</p><p>A pesar de lo ocurrido, Judy decidió continuar con el embarazo después de hablar con familiares y amigos. </p><p>Para entonces, ya había firmado el contrato y dependía del dinero acordado.</p><p>La agencia involucrada anunció posteriormente cambios en sus procedimientos para entregar más información a las futuras gestantes y permitirles acceder a asesoría legal y psicológica independiente cuando aparezcan nuevos elementos durante el proceso.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CXAJ3CVJI5FMJBBEMSROLMKNYM.jpg?auth=6e89b9c5a4cdff4c0690918f99df3ba81b3ee695513988febf40e6b02aea7927&smart=true&width=5330&height=3553" alt="Una mujer embarazada representa el proceso de gestación subrogada, una práctica que quedó bajo el foco a raíz del caso del empresario chino Xu Bo en Estados Unidos." height="3553" width="5330"/><h2>El multimillonario que quería una familia numerosa</h2><p>Xu Bo es el fundador de <b>Duoyi Network</b>, una compañía china dedicada al desarrollo de videojuegos. </p><p>El empresario ha declarado que no cree en el matrimonio ni en las relaciones de pareja convencionales y ha defendido las uniones sin formalidades como una alternativa que, según él, evita las consecuencias de un eventual divorcio.</p><p>Su historia comenzó a llamar la atención en California cuando empleados de un tribunal de familia detectaron un patrón inusual. </p><p><b>El mismo hombre aparecía en numerosas solicitudes de reconocimiento de paternidad,</b> incluso para niños que todavía no habían nacido.</p><p>La jueza Amy Pellman citó a Xu a una audiencia confidencial en 2023. </p><p>El empresario participó por videollamada desde China y, según personas familiarizadas con el proceso citadas por <i>The Wall Street Journal</i>, dijo que esperaba tener alrededor de 20 hijos nacidos en Estados Unidos mediante gestación subrogada y que quería que algunos pudieran hacerse cargo de sus negocios.</p><p>Sin embargo, la investigación del <i>Wall Street Journal</i>, basada en documentos judiciales y otras fuentes, reveló que la magnitud de su familia era mucho mayor. </p><p>Una compañía vinculada con Xu confirmó que tenía <b>más de 100 hijos nacidos mediante gestación subrogada en Estados Unidos</b>, después de que su expareja, Tang Jing, afirmara que la cifra podía llegar a 300. </p><p>La empresa negó esta última versión, pero confirmó que eran más de 100.</p><p>No está confirmado que todos sean varones. El <i>Wall Street Journal</i> señaló que los menores que aparecen en un video relacionado con Xu parecían ser mayoritariamente niños, pero no existe una cifra pública que permita determinarlo con precisión.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/VT46BFI5CFH3XLA4IWWEZ4XUXM.jpg?auth=f3fed4b3dc84648cdcd4b37ce9b5d95387505a80fdc014cbe9efe0db604ff2d0&amp;smart=true&amp;width=6720&amp;height=4480" type="image/jpeg" height="4480" width="6720"><media:description type="plain"><![CDATA[Controversia por los contratos de gestación subrogada vinculados al caso de Xu Bo en Estados Unidos.]]></media:description><media:credit role="author" scheme="urn:ebu">TolikoffPhotography</media:credit></media:content></item><item><title><![CDATA[Paloma Valencia se metió en la pelea entre Salvación Nacional y el Centro Democrático: “No se equivoquen, la gente eligió porque se parece a Álvaro Uribe”]]></title><link>https://www.semana.com/politica/articulo/paloma-valencia-se-metio-en-la-pelea-entre-salvacion-nacional-y-el-centro-democratico-no-se-equivoquen-la-gente-eligio-porque-se-parece-a-alvaro-uribe/202615/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/paloma-valencia-se-metio-en-la-pelea-entre-salvacion-nacional-y-el-centro-democratico-no-se-equivoquen-la-gente-eligio-porque-se-parece-a-alvaro-uribe/202615/</guid><dc:creator><![CDATA[ Francisco  Argüello]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 14:47:15 +0000</pubDate><content:encoded><![CDATA[<p>La excandidata presidencial se metió en la pelea política que hoy tiene enfrentados a Salvación Nacional, el partido que lidera el senador Enrique Gómez Martínez, y el Centro Democrático, cuyo jefe máximo es el expresidente Álvaro Uribe.</p><p>Desde Villa de Leyva, Valencia se refirió, entre otras cosas, a la forma como Enrique Gómez llamó a Álvaro Uribe en un programa digital de la periodista Eva Rey, cuando dijo que era “socialdemócrata”, un calificativo que enfadó al uribismo y lo llevó, una vez más, a separar cobijas del hoy senador de Salvación.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/L7WZQEPEJVBE5GF6OXMRXDZZYM.jpg?auth=b3261cddc00625fe9a8e4a12498c8b4bbc79702e2dd47d4a977e87a9c9977f3b&smart=true&width=1280&height=720" alt="Álvaro Uribe Vélez" height="720" width="1280"/><p>“Están entendiendo muy mal el problema. Aquí las etiquetas, de derecha, izquierda, de socialdemócrata, no le interesan a nadie. No le importan al ciudadano. <b>Se les está olvidando que la gente votó (por Abelardo De La Espriella) porque creen que se parece a Uribe, porque la ciudadanía lo que quiere es un presidente como Álvaro Uribe,</b> comprometido con la seguridad, con capacidad de ejercer un gran liderazgo, con un gran corazón para ejercer política social. Lo que la gente quiere es otro Uribe. De manera que no se equivoquen con las etiquetas. Aquí lo que vale es ser uribista”, expresó Valencia.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LIYELDSPERE3FBWT6ICQQRQM2E.jpg?auth=fec6de6d2ded27788223dbebc83076415c47e03e205535a78682474da0ec7b49&smart=true&width=2000&height=1125" alt="Abelardo De La Espriella Casa Nariño" height="1125" width="2000"/><p>Aunque Salvación Nacional y el Centro Democrático son de derecha y defienden las mismas causas, las divisiones saltan a la vista. Al fin y al cabo, el primero respaldó <a href="https://www.semana.com/politica/articulo/tension-entre-el-centro-democratico-y-salvacion-nacional-el-partido-de-uribe-refresco-la-memoria-a-enrique-gomez-bravo-en-redes-oveja-en-el-congreso/202647/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/tension-entre-el-centro-democratico-y-salvacion-nacional-el-partido-de-uribe-refresco-la-memoria-a-enrique-gomez-bravo-en-redes-oveja-en-el-congreso/202647/">a Abelardo De La Espriella desde el inicio de la campaña y el segundo lo hizo en la última vuelta.</a></p><p>El Centro Democrático no se ha quedado callado en esta tensión política. Y divulgó mensajes a través de su cuenta oficial de X donde le refresca la memoria a Gómez Martínez y reveló la cercanía <a href="https://www.semana.com/politica/articulo/enrique-gomez-acuso-a-petro-de-robar-para-el-para-su-mujer-y-para-su-haren-de-mozas-aseguro-que-lo-van-a-demostrar/202617/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/enrique-gomez-acuso-a-petro-de-robar-para-el-para-su-mujer-y-para-su-haren-de-mozas-aseguro-que-lo-van-a-demostrar/202617/">que tuvieron sus familiares con el uribismo, el sector político que hoy ataca el senador.</a></p><p><b>“Qué obsesión la del senador Enrique Gómez con las etiquetas. Bravo en redes, pero una oveja en el Congreso</b>. Ya que le gusta repartir adjetivos, debería repasar primero los pilares del Centro Democrático: seguridad, Estado austero, economía fraterna y cohesión social”, afirmó la colectividad.</p><p>El Centro Democrático confesó que <b>“hace apenas unos meses, Enrique Gómez Martínez fue a la casa del expresidente Álvaro Uribe a pedirle que fusionaran la lista de Salvación Nacional con la del Centro Democrático”</b>.</p><p>El partido también recordó: “Su hijo, senador Enrique Gómez, hoy secretario del presidente Abelardo De La Espriella, trabajó en el Centro Democrático. Allí siempre fue recibido y tratado con generosidad y respeto”.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/FHSHHHNR6VFSZN6OO4NSXTLJH4.png?auth=853b68432cac18394a6370f7b91e3b09322a06552e7dc894af7d2c692cdaf9b8&smart=true&width=1640&height=924" alt="Las declaraciones se dieron en medio de una entrevista en el programa de Eva Rey, mEVAle." height="924" width="1640"/><p>Y remató: “El doctor Miguel Gómez Martínez, su hermano, hoy ministro de Hacienda, participó en el gobierno de Álvaro Uribe y fue testigo de lo que se hizo en austeridad. El presidente Uribe le agradece que, entre 2010 y 2014, con Juan Carlos Vélez y Juan Lozano, asumieron su defensa en el Senado”.</p><p>El senador Gómez Martínez ha guardado prudencia recientemente sobre el tema. El expresidente Álvaro Uribe ha hecho lo propio.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/J54XJSHBXJBZTMXOCWXSJU6BTE.jpg?auth=793a12fb5287aeb9c97082de9323bfb180adf7100993fc6b48ac1dcaa1c08933&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Enrique Gómez Martínez, Paloma Valencia y Álvaro Uribe.]]></media:description></media:content></item><item><title><![CDATA[Prensa alemana ‘liquida’ a Luis Díaz luego del Bayern vs. Unión Berlín: calificación en el piso]]></title><link>https://www.semana.com/deportes/articulo/prensa-alemana-liquida-a-luis-diaz-luego-del-bayern-vs-union-berlin-calificacion-en-el-piso/202621/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/prensa-alemana-liquida-a-luis-diaz-luego-del-bayern-vs-union-berlin-calificacion-en-el-piso/202621/</guid><dc:creator><![CDATA[Sergio Alejandro Calderón Calderón]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 14:22:21 +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/">Para nadie es un secreto el mal momento que atraviesa Luis Díaz en Bayern Múnich luego de varios partidos de la temporada 2026/2027.</a></p><p>Su falta de gol es lo que más preocupa en el cuadro bávaro. <a href="https://www.semana.com/deportes/articulo/vincent-kompany-fue-sincero-y-confeso-lo-que-pasa-con-luis-diaz-en-los-entrenamientos-del-bayern/202601/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/vincent-kompany-fue-sincero-y-confeso-lo-que-pasa-con-luis-diaz-en-los-entrenamientos-del-bayern/202601/">En Colombia inquieta también ver que ya no es titular indiscutido y se convirtió en el primer cambio para Vincent Kompany.</a></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7MOH3GQ2SBHU5NIK3NZELDAFIA.jpg?auth=162575557dcad8f13fc17105396e935a5cf33ec484ba589a4f5a10f0151162c7&smart=true&width=6974&height=4664" alt="Luis Díaz en un calentamiento previo a un partido con Bayern Múnich" height="4664" width="6974"/><p>La situación oscura es reflejada con claridad por la prensa deportiva germana, que ha cambiado el discurso positivo de la campaña anterior por uno donde <b>las críticas y calificaciones bajas hacia el colombiano ahora son constantes.</b></p><h2>Así describen la crisis de Lucho</h2><p>Al consultar los portales web de varias páginas con gran relevancia en Alemania, se logra encontrar un patrón común: ‘Luis Díaz, mala racha’.</p><p>En el portal Tz hicieron una evaluación jugador por jugador de lo que fue el partido más reciente vs. Unión Berlín. A la hora de ver su análisis de Díaz escribieron:<b> “Las cosas no le van bien al colombiano. Mala suerte, sin goles, algo desconcertado”</b>.</p><p>Adicionalmente, le otorgaron al cafetero una calificación de tres puntos nada más, lo que lo deja por el piso en comparación con sus compañeros de ataque, como Harry Kane o Michael Olise.</p><p><i>T Online</i> de Berlín indicó: <b>“Sigue sin encontrar su mejor forma desde su gol en la primera jornada. No ha llegado a brillar esta temporada”</b>.</p><p>“Luis Díaz (hasta el minuto 63): Estaba en fuera de juego cuando marcó su gol de vaselina (minuto 30). <b>Falló</b> <b>una buena ocasión ante el arquero”, y complementó con otras aproximaciones que vieron de Lucho.</b></p><p>Para complementar las reacciones de la prensa alemana al nuevo decepcionante partido de Díaz Marulanda, se hizo una revisión de lo dicho por Abendzeitung, también conocido como Az.</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>De manera tajante publicaron que “Díaz se había visto sobrecargado en las primeras semanas de la nueva temporada, no tan fresco como la temporada pasada. Esto se confirmó contra el Union”. </p><p>También hacen comparaciones con sus propios compañeros, quienes se fueron de triplete y doblete, respectivamente: <b>“El jugador de 29 años, en cambio, careció de cierta chispa, aunque su determinación fue evidente”.</b></p><p>“Luis Díaz, en particular, aún no ha recuperado la capacidad goleadora que demostró la temporada pasada”, terminan certificando lo que es apenas evidente.</p><h2>Reemplazo de Díaz va tomando fuerza</h2><p>A pesar de que Ismael Saibari no haya llegado propiamente como un extremo que reemplazaría a Luis Díaz en caso de cansancio o una mala racha como la que vive,<b> el marroquí se ha adaptado y hace méritos para ser considerado titular.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XOSBYQWCVRA53MMWME5UEEJA5Y.jpg?auth=2633cdf209fb277b550188bbd1726961f81b0e2087bdd6c6b1bc71f8c32b06e2&smart=true&width=2561&height=1735" alt="Ismael Saibari es abrazado por Michael Olise y celebran juntos en Bayern Múnich." height="1735" width="2561"/><p>En el juego pasado, el DT del Bayern ya lo probó por el mismo costado por el que juega Lucho y rindió. <b>Durante el compromiso con Unión Berlín, el colombiano regresó a la titularidad, pero ante la poca influencia lo sacó al minuto 63, justamente por el marroquí.</b></p><p>Para hacer aún más compleja la situación de Díaz, Saibari,<a href="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/" target="_blank" rel="noreferrer" title="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/"> en el tiempo que estuvo en campo el pasado viernes, anotó su primer gol en medio de la faena que tuvieron los de Múnich, donde ganaron por 7-0.</a></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JWJSTORGINFVFE5F2JSLVPRPSQ.png?auth=f1336650b78ef5771d9fbc21312ca5c27a7f3f368c6ff9df46a8960ad25ec35c&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Titulares de la prensa de Alemania ya no son favorables para Luis Díaz en el inicio de la nueva temporada con Bayern Múnich.]]></media:description></media:content></item><item><title><![CDATA[Temblor de magnitud 4,6 se registró en Chocó este sábado, 19 de septiembre: este fue el epicentro]]></title><link>https://www.semana.com/nacion/articulo/temblor-de-magnitud-46-se-registro-en-choco-este-sabado-19-de-septiembre-este-fue-el-epicentro/202652/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/temblor-de-magnitud-46-se-registro-en-choco-este-sabado-19-de-septiembre-este-fue-el-epicentro/202652/</guid><dc:creator><![CDATA[Julián Mateo Candela Suescún]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 14:07:52 +0000</pubDate><content:encoded><![CDATA[<p>El Servicio Geológico Colombiano (SGC) reportó durante la mañana de este sábado 19 de septiembre <b>un</b><a href="https://www.semana.com/semana-tv/salud-hernandez/articulo/choco-no-es-solo-quibdo-salud-hernandez-mora-revelo-cruda-realidad-de-municipio-afectado-por-el-terremoto/202635/" target="_blank" rel="noreferrer" title="https://www.semana.com/semana-tv/salud-hernandez/articulo/choco-no-es-solo-quibdo-salud-hernandez-mora-revelo-cruda-realidad-de-municipio-afectado-por-el-terremoto/202635/"><b> fuerte temblor</b></a><b> de magnitud 4,6 que tuvo como epicentro el municipio de Istmina, ubicado en el departamento del Chocó.</b></p><p>De acuerdo con el SGC, el sismo se registró a las 08:44 a. m., tuvo una profundidad de 39 km y se localizó en las coordenadas<b> 4,7° de latitud y -76,77° de longitud.</b></p><p>Asimismo, <b>el evento sísmico se registró cerca de varios municipios, específicamente a 18 km de Sipí, a 48 km de Nóvita y a 59 km de El Dovio, en el Valle del Cauca.</b></p><blockquote class="twitter-tweet"><p lang="es" dir="ltr"><a href="https://x.com/hashtag/SismosColombiaSGC?src=hash&amp;ref_src=twsrc%5Etfw">#SismosColombiaSGC</a> Evento Sísmico - Boletín Actualizado 1, 2026-09-19, 08:44 hora local Magnitud 4.6. Profundidad 39 km, Istmina - Chocó, Colombia ¿Sintió este sismo? repórtelo <a href="https://t.co/pgC7OC2O7j">https://t.co/pgC7OC2O7j</a> <a href="https://t.co/63pt8nVsSe">https://t.co/63pt8nVsSe</a> <a href="https://x.com/hashtag/Temblor?src=hash&amp;ref_src=twsrc%5Etfw">#Temblor</a> <a href="https://x.com/hashtag/Sismo?src=hash&amp;ref_src=twsrc%5Etfw">#Sismo</a> <a href="https://t.co/Z2u7ZVLH11">pic.twitter.com/Z2u7ZVLH11</a></p>&mdash; Servicio Geológico Colombiano (@sgcol) <a href="https://x.com/sgcol/status/2101308525477568963?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote><p>Tras el anuncio por parte del Servicio Geológico Colombiano, se compartieron las actualizaciones más recientes sobre el sismo registrado esta mañana.</p><p>Hacia las 9 de la mañana, la entidad compartió los registros más actuales del evento sísmico, indicando que la magnitud del temblor ocurrido en el departamento del <b>Chocó era ahora de 3,1.</b></p><p>El sismo ahora se encuentra <b>localizado a 26 km del municipio de Sipí, con una latitud de 4,43° y una longitud de -76.71°.</b></p><blockquote class="twitter-tweet"><p lang="es" dir="ltr"><a href="https://x.com/hashtag/SismosColombiaSGC?src=hash&amp;ref_src=twsrc%5Etfw">#SismosColombiaSGC</a> Evento Sísmico - Boletín Actualizado 1, 2026-09-19, 09:10 hora local Magnitud 3.1. Profundidad 43 km, Istmina - Chocó, Colombia ¿Sintió este sismo? repórtelo <a href="https://t.co/pgC7OC2O7j">https://t.co/pgC7OC2O7j</a> <a href="https://t.co/63pt8nVsSe">https://t.co/63pt8nVsSe</a> <a href="https://x.com/hashtag/Temblor?src=hash&amp;ref_src=twsrc%5Etfw">#Temblor</a> <a href="https://x.com/hashtag/Sismo?src=hash&amp;ref_src=twsrc%5Etfw">#Sismo</a> <a href="https://t.co/x7JDSXqJsg">pic.twitter.com/x7JDSXqJsg</a></p>&mdash; Servicio Geológico Colombiano (@sgcol) <a href="https://x.com/sgcol/status/2101314658867044643?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote><p>Los hechos ocurridos en la mañana de este sábado 19 de septiembre en el departamento del Chocó recuerdan que el país sigue propenso a temblores tras lo ocurrido el <a href="https://www.semana.com/nacion/articulo/asi-responde-la-gobernadora-del-choco-a-las-criticas-por-las-ayudas-tras-el-terremoto-destaca-el-respaldo-del-gobierno/202654/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/asi-responde-la-gobernadora-del-choco-a-las-criticas-por-las-ayudas-tras-el-terremoto-destaca-el-respaldo-del-gobierno/202654/">pasado 10 de agosto</a>, <b>cuando un sismo de magnitud 7,4 derivó en varias afectaciones en el país, específicamente en estas zonas, siendo una de las más afectadas.</b></p><h2>Recomendaciones del Servicio Geológico Colombiano ante un sismo</h2><p><b>Durante un sismo, el SGC aconseja mantener la calma. Lo más importante es buscar protección de inmediato.</b> Si se encuentra en una edificación construida con normas sismorresistentes, ubíquese cerca de columnas, debajo de un escritorio o en zonas previamente identificadas como seguras. Evite permanecer cerca de ventanas, vidrios u objetos que puedan caer.</p><p>La entidad también enfatiza la importancia de evacuar tan pronto como sea posible, siempre prestando atención al entorno para detectar peligros. Durante la evacuación, no utilice ascensores y evite refugiarse debajo de los marcos de las puertas, ya que estos no son zonas seguras: pueden fracturarse o colapsar al disipar la energía del sismo.</p><p>La entidad comparte estos consejos específicos de acuerdo con la zona en la que el ciudadano se encuentre durante un temblor:</p><ul><li><b>En su vivienda:</b>&nbsp;si tiene la posibilidad, abra la puerta principal y las de las habitaciones, porque podrían trabarse y dejarlo encerrado a usted y a su familia.</li><li><b>En la calle:&nbsp;</b>observe a su alrededor y busque un lugar seguro, lejos de postes, cables eléctricos y fachadas de edificios, que podrían desprender fragmentos como vidrios o ladrillos. Diríjase con precaución hacia el centro de la calle, pero tenga cuidado con el tránsito, ya que los conductores podrían no haber percibido el temblor.</li><li><b>Si conduce un vehículo:&nbsp;</b>reduzca la velocidad y, si es posible, deténgase en un lugar seguro, alejado de postes, cables o vallas publicitarias.</li></ul>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QZBT65SFLNHZ5CG6HTGFCSY5RM.jpg?auth=8c508cfa2f990a698ff2df84efaded86b651f6d455f424dc7ad834dd93ec25ce&amp;smart=true&amp;width=1600&amp;height=900" type="image/jpeg" height="900" width="1600"><media:description type="plain"><![CDATA[El Servicio Geológico Colombiano (SGC) reportó un nuevo temblor en el país este sábado 19 de septiembre]]></media:description></media:content></item><item><title><![CDATA[Luis Eduardo Arango lanzó una fuerte advertencia sobre la inteligencia artificial en la actuación: “Es como un carnaval peligrosísimo”]]></title><link>https://www.semana.com/gente/articulo/luis-eduardo-arango-lanzo-fuerte-advertencia-sobre-la-inteligencia-artificial-en-la-actuacion-es-como-un-carnaval-peligrosisimo/202637/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/luis-eduardo-arango-lanzo-fuerte-advertencia-sobre-la-inteligencia-artificial-en-la-actuacion-es-como-un-carnaval-peligrosisimo/202637/</guid><dc:creator><![CDATA[Margarita Briceño Delgado]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 14:04:37 +0000</pubDate><content:encoded><![CDATA[<p>El actor se refirió al tema a propósito de su participación en la obra teatral <i>1:11 (Uno y Once)</i>, una producción de la <i>Casa del Teatro Nacional</i> que busca llevar al público a reflexionar sobre la inteligencia artificial.</p><h2>Luis Eduardo Arango y su preocupación por la inteligencia artificial</h2><p>En la obra, Arango interpreta al narrador. Según explicó, este papel también lo ha llevado a pensar en una tecnología que reconoce que todavía no comprende completamente.</p><p>El actor aseguró que, para personas de su generación, los cambios asociados con la inteligencia artificial pueden resultar especialmente inquietantes.</p><p>“Para mí las reflexiones apenas están comenzando. Para personas como yo, de mi edad, es algo que realmente asusta”, expresó Arango, durante una conversación con<i> Vea</i>.</p><p>En la misma publicación, explicó que <b>su preocupación está relacionada con lo que considera un proceso acelerado de despersonalización. </b></p><p>El actor cuestionó el entusiasmo con el que, desde su perspectiva, muchas personas reciben los avances tecnológicos.</p><p>“Me aterra porque siento que es un poco un fenómeno de despersonalización muy fuerte, acelerado y dominante”, afirmó.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/M2YMRDQEAVBIFF35RXXF4K7524.jpg?auth=bc9c45c2da5a9011dd55f9799a30b8cee87df285fa5d9446aacd8d107818a0eb&smart=true&width=1600&height=900" alt="Luis Eduardo Arango habló sobre sus preocupaciones frente al avance de la inteligencia artificial y su impacto en el trabajo artístico." height="900" width="1600"/><h2>“La inteligencia artificial es como un carnaval peligrosísimo”</h2><p>Arango utilizó una comparación para explicar cómo percibe actualmente el fenómeno. </p><p>Dijo que existe una especie de entusiasmo general alrededor de los avances tecnológicos, pero que detrás de esa apariencia también ve motivos de preocupación.</p><p><b>“La inteligencia artificial es como un carnaval, todo el mundo anda feliz, pero está disfrazado,</b> siempre tiene una máscara que dice ‘estoy feliz, estoy contento’, pero es como un carnaval peligrosísimo”, señaló.</p><p>El actor también manifestó en la entrevista que todavía no comprende completamente hacia dónde puede llevar este proceso y expresó una preocupación personal frente a la velocidad con la que está avanzando.</p><p>“Todavía no lo comprendo y creo que ya no voy a tener tiempo de entenderlo realmente, porque siento que estamos siendo destruidos”, dijo.</p><p>Estas declaraciones corresponden a la percepción personal de Arango sobre la inteligencia artificial y no a una afirmación sobre un efecto tecnológico demostrado. Su reflexión hace parte precisamente del tema que aborda actualmente desde el teatro.</p><p>La reflexión sobre la inteligencia artificial llega mientras Arango continúa vinculado a la televisión y al teatro. Actualmente interpreta a Octavio en ‘Pa’ seguirte queriendo’, producción en la que continúa apareciendo ante el público colombiano.</p><p>Pero <b>su carrera también le ha permitido vivir de cerca las transformaciones de la industria audiovisual.</b></p><p>El actor explicó que hace tres o cuatro décadas un intérprete podía permanecer durante largos periodos vinculado a una producción televisiva. </p><p>Según relató, las condiciones actuales son diferentes y los proyectos pueden durar apenas unos meses.</p><p><b>Arango señaló que actualmente realiza un proyecto de unos tres meses cada año y que esa realidad también representa dificultades económicas para quienes viven de la actuación.</b></p><p>En ese contexto, la llegada de nuevas herramientas tecnológicas se suma a una profesión que, de acuerdo con su experiencia, ya ha cambiado considerablemente.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/OIBOUR6F7NDADDDLCT7XQBY7EU.jpg?auth=b6f14fed9c0591fa104f5c651dacf6232cac70904093805e8005174fb58d0246&amp;smart=true&amp;width=1600&amp;height=900" type="image/jpeg" height="900" width="1600"><media:description type="plain"><![CDATA[El actor colombiano reflexionó sobre los cambios que la inteligencia artificial podría generar en la industria audiovisual.]]></media:description></media:content></item><item><title><![CDATA[La compleja misión para llegar a la avioneta accidentada en Chocó: rescatistas ya avanzan por tierra]]></title><link>https://www.semana.com/nacion/articulo/la-compleja-mision-para-llegar-a-la-avioneta-accidentada-cerca-de-choco-rescatistas-ya-avanzan-por-tierra/202610/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/la-compleja-mision-para-llegar-a-la-avioneta-accidentada-cerca-de-choco-rescatistas-ya-avanzan-por-tierra/202610/</guid><dc:creator><![CDATA[Julián Mateo Candela Suescún]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 13:37:10 +0000</pubDate><content:encoded><![CDATA[<p>El pasado 16 de septiembre de 2026, <a href="https://www.semana.com/politica/articulo/abelardo-de-la-espriella-confirmo-el-hallazgo-de-la-avioneta-que-cayo-en-choco-todos-sus-ocupantes-fueron-hallados-sin-vida/202642/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/abelardo-de-la-espriella-confirmo-el-hallazgo-de-la-avioneta-que-cayo-en-choco-todos-sus-ocupantes-fueron-hallados-sin-vida/202642/"><b>el presidente Abelardo De La Espriella informó sobre el hallazgo de la avioneta desaparecida en el departamento de Chocó</b></a>, en la que viajaban cinco ocupantes y cuyo destino era el aeropuerto de Guaymaral, en Chía, Cundinamarca.</p><p>Por medio de su cuenta de X,<b> el jefe de Estado informó sobre el lamentable fallecimiento de</b><a href="https://www.semana.com/nacion/articulo/estas-son-las-cinco-personas-que-iban-en-la-avioneta-con-la-que-se-perdio-contacto-rumbo-a-guaymaral/202655/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/estas-son-las-cinco-personas-que-iban-en-la-avioneta-con-la-que-se-perdio-contacto-rumbo-a-guaymaral/202655/"><b> todas las personas </b></a><b>que se encontraban a bordo </b>de esta aeronave y expresó sus condolencias a los familiares y seres queridos afectados por el hecho. </p><p>“Con profundo pesar y tristeza confirmo al país el hallazgo del avión Cessna T206, de matrícula HK-4985, que <b>se accidentó mientras cubría la ruta entre Condoto, Chocó, y Guaymaral, en Bogotá</b>. Lamentablemente, las autoridades confirmaron que todos sus ocupantes fueron hallados sin vida. Abrazo de corazón a sus familias, amigos y seres queridos en este momento de inmenso dolor”, comentó De La Espriella. </p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">Con profundo pesar y tristeza confirmo al país el hallazgo del avión Cessna T206, de matrícula HK-4985, que se accidentó mientras cubría la ruta entre Condoto, Chocó, y Guaymaral, en Bogotá.<br><br>Lamentablemente, las autoridades confirmaron que todos sus ocupantes fueron hallados sin…</p>&mdash; Abelardo De La Espriella (@ABDELAESPRIELLA) <a href="https://x.com/ABDELAESPRIELLA/status/2100274654132785563?ref_src=twsrc%5Etfw">September 16, 2026</a></blockquote><p>Tras el hallazgo, la <b>Fuerza Aeroespacial Colombiana (FAC) continúa con las labores para recuperar los cuerpos de los ocupantes de la aeronave accidentada, pese a las complejas condiciones de la zona.</b></p><p>La entidad ha compartido los más recientes avances del operativo e indicó que, en horas de la mañana de este sábado 18 de septiembre, <b>la tripulación de un helicóptero UH-60 Black Hawk de la FAC logró trasladar a rescatistas militares hasta el Parque Nacional Natural Tatamá, </b>ubicado cerca de la zona del accidente de la avioneta. </p><p>Desde allí, personal especializado en búsqueda y rescate de la Fuerza Aeroespacial Colombiana <b>ha comenzado el desplazamiento terrestre para establecer la ruta e instalar el sistema que permita llegar hasta el fuselaje de la aeronave</b> y realizar las maniobras necesarias para la extracción de los cuerpos. </p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr"><a href="https://x.com/hashtag/EnDesarrollo?src=hash&amp;ref_src=twsrc%5Etfw">#EnDesarrollo</a> | En el Parque Nacional Natural Tatamá, la Fuerza Aérea Colombiana continúa con las labores de recuperación. Desde tierra y aire, sus capacidades humanas, aéreas y tecnológicas permanecen desplegadas para avanzar en la misión, pese a la complejidad del terreno y la… <a href="https://t.co/1hcGVcoR5A">pic.twitter.com/1hcGVcoR5A</a></p>&mdash; Fuerza Aeroespacial Colombiana (@FuerzaAereaCol) <a href="https://x.com/FuerzaAereaCol/status/2101260221477728478?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>No obstante, <b>la entidad ha informado que esta operación ha tenido múltiples dificultades, principalmente por las difíciles condiciones climáticas del sector.</b> Las fuertes y constantes lluvias, sumadas a las irregularidades del terreno, han dificultado el avance de los rescatistas. </p><p>Aun así, la entidad indica que el profesionalismo de sus agentes ha permitido que la misión avance, todo esto bajo estrictos protocolos de seguridad operacional.</p><p>“Por medio de las capacidades humanas, aéreas y tecnológicas disponibles en la zona,<b> la Fuerza Aérea Colombiana continúa con los esfuerzos para realizar las labores de recuperación, empleando sus recursos al servicio de quienes los necesitan</b>”, comenta la entidad. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7CR4SVJ32JDPJIPV5IEVU4S2YM.jpg?auth=3b1e23b8129fb5d73ebd881a2d6d6f5de03d918a4490d39b9239db9d2e418095&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[La Fuerza Aeroespacial Colombiana continúa con las labores de recuperación de los ocupantes de la avioneta accidentada en Chocó.]]></media:description></media:content></item><item><title><![CDATA[“La tragedia de la niñez no puede convertirse en reflector, escudo ni parapeto de nadie”: directora del ICBF a Jennifer Pedraza]]></title><link>https://www.semana.com/politica/articulo/la-tragedia-de-la-ninez-no-puede-convertirse-en-reflector-escudo-ni-parapeto-de-nadie-directora-del-icbf-a-jennifer-pedraza/202621/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/la-tragedia-de-la-ninez-no-puede-convertirse-en-reflector-escudo-ni-parapeto-de-nadie-directora-del-icbf-a-jennifer-pedraza/202621/</guid><dc:creator><![CDATA[Javier  Molina Castillo]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 13:29:21 +0000</pubDate><content:encoded><![CDATA[<p>La directora del Instituto Colombiano de Bienestar Familiar (ICBF), Carolina Restrepo Cañavera, le envió un mensaje a la senadora de la oposición Jennifer Pedraza, por su intervención en el debate de control político al ministro de Defensa, general (r) Jorge Mora, esta semana.</p><p>El titular de la cartera de Defensa afrontó una moción de censura que fue citada por parte del Pacto Histórico, <a href="https://www.semana.com/nacion/articulo/asi-fue-el-bombardeo-de-las-fuerzas-militares-en-contra-de-las-disidencias-de-alias-calarca-en-el-guaviare/202648/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/asi-fue-el-bombardeo-de-las-fuerzas-militares-en-contra-de-las-disidencias-de-alias-calarca-en-el-guaviare/202648/">tras los operativos realizados por la Fuerza Pública, </a>en los que se han dado golpes contundentes a los criminales.</p><p>La inconformidad de los 19 congresistas que citaron la moción de censura se debe a que durante los bombardeos a las estructuras criminales <a href="https://www.semana.com/politica/articulo/abelardo-de-la-espriella-se-pronuncia-por-muerte-de-menores-en-bombardeo-todo-mi-respaldo-a-las-operaciones-militares/202616/" target="_blank" rel="" title="https://www.semana.com/politica/articulo/abelardo-de-la-espriella-se-pronuncia-por-muerte-de-menores-en-bombardeo-todo-mi-respaldo-a-las-operaciones-militares/202616/">han resultado menores de edad muertos</a> y señalan que el ministro tiene responsabilidad política por estos acontecimientos.</p><p>En medio del debate, la senadora Jennifer Pedraza cuestionó cuánto dinero destina Colombia para prevenir el reclutamiento de niños. “<b>Cero pesos para prevenir el reclutamiento de niños, niñas y adolescentes</b>, pero para justificar un bombardeo sí hay que pagar bodegas en redes sociales”, dijo.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">“Nos enteramos después de que ya había pasado.” Así respondió el ICBF sobre la muerte de tres niños reclutados en Guaviare 😡<br>Había una alerta de reclutamiento desde 2025. ¿Qué hicieron? Nada distinto. Después de la Operación Amón ni siquiera hubo una reunión de emergencia.<br>Pero… <a href="https://t.co/qRxv4luNou">pic.twitter.com/qRxv4luNou</a></p>&mdash; Jennifer Pedraza Sandoval (@JenniferPedraz) <a href="https://x.com/JenniferPedraz/status/2100991172608921753?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p>Además, destacó el siguiente mensaje a través de sus redes sociales, el cual acompañó con un video de su intervención en el Congreso de la República.</p><p>“‘Nos enteramos después de que ya había pasado’. Así respondió el ICBF sobre la muerte de tres niños reclutados en Guaviare. Había una alerta de reclutamiento desde 2025. ¿Qué hicieron? Nada distinto”, escribió Pedraza.</p><p>Frente a esto, la directora del ICBF se pronunció a través de sus redes sociales, cuestionando la intervención de la senadora y el oportunismo frente a la temática de la niñez para hacer política.</p><p>“Senadora Jennifer Pedraza, qué curioso que una administración que comienza hace poco más de un mes termine siendo el escenario perfecto <b>para cobrarle años de reclutamiento</b>, violencia y abandono de nuestra niñez”, señaló Restrepo en su mensaje.</p><p>La funcionaria fue enfática en que “el control político es su derecho. Ejérzalo. Pero la tragedia de la niñez no puede convertirse en reflector, escudo ni parapeto de nadie”.</p><p>Restrepo Cañavera aseguró que “<b>durante demasiado tiempo la niñez ha servido de bandera, de consigna y hasta de moneda de cambio en las disputas políticas</b> de este país”, por lo que resaltó que este es un tema que tiene que empezar a cambiar. </p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">Senadora <a href="https://x.com/JenniferPedraz?ref_src=twsrc%5Etfw">@JenniferPedraz</a> qué curioso que una administración que comienza hace poco más de un mes termine siendo el escenario perfecto para cobrarle años de reclutamiento, violencia y abandono de nuestra niñez.<br><br>El control político es su derecho. Ejérzalo. Pero la tragedia de la…</p>&mdash; Carolina Restrepo Cañavera (@carorestrepocan) <a href="https://x.com/carorestrepocan/status/2101276343849685396?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote><p>“<b>Eso tiene que terminar</b>. Colombia está mirando, y cada vez resulta más fácil distinguir entre quienes trabajan por proteger a la niñez y quienes aparecen cuando su tragedia ofrece una buena tribuna”, concluyó.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/UM3QVWSL2VG7NOUWGRPDKOUJHI.jpg?auth=e04bcac820300949927750a93c7cae4695cbb208151bdec970fea57640878e16&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[La directora del Instituto Colombiano de Bienestar Familiar, Carolina Restrepo, y la senadora Jennifer Pedraza.]]></media:description></media:content></item><item><title><![CDATA[El convocado a Colombia que dice tener “cosas de Bellingham y Enzo Fernández”: estará en los amistosos]]></title><link>https://www.semana.com/deportes/articulo/el-convocado-a-colombia-que-dice-tener-cosas-de-bellingham-y-enzo-fernandez-estara-en-los-amistosos/202615/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/el-convocado-a-colombia-que-dice-tener-cosas-de-bellingham-y-enzo-fernandez-estara-en-los-amistosos/202615/</guid><dc:creator><![CDATA[Sergio Alejandro Calderón Calderón]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 13:26:15 +0000</pubDate><content:encoded><![CDATA[<p>Matías Orozco de apenas 17 años es uno de los convocados más jóvenes en la nueva citación de Néstor Lorenzo para los amistosos de la fecha Fifa de septiembre. </p><p><a href="https://www.semana.com/deportes/articulo/jugador-del-deportivo-cali-dara-el-salto-a-europa-seguira-su-carrera-en-la-premier-league/202633/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/jugador-del-deportivo-cali-dara-el-salto-a-europa-seguira-su-carrera-en-la-premier-league/202633/">El volante surgido en Deportivo Cali, comprado por Brighton de la Premier League</a> y prestado al Castellón de la segunda división de España, es uno de los nombres a tener en cuenta en el recambio generacional.</p><p>Recientemente fue entrevistado por el medio deportivo AS, donde <b>dijo tener una semejanza en su juego con dos estrellas mundiales como los son Jude Bellingham (Real Madrid) y Enzo Fernández (Manchester City).</b></p><h2>Ambiciosa semejanza de Orozco</h2><p>Su respuesta a la pregunta en cuestión fue ambiciosa, además de dejarle la vara alta de cara a los juegos de preparación que se vienen vs. México, Paraguay y Perú en las próximas semanas.</p><p>“No sé si me estoy creyendo, ya me estoy agrandando, pero <b>me gusta mucho y siento que tengo cosas de Bellingham. Me gusta, es mi referente, aparte de Enzo Fernández también”, zanjó. </b></p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">🗣️&quot;Tengo cosas de Bellingham y Enzo Fernández&quot;: Matías Orozco, volante del Castellón, en <a href="https://x.com/hashtag/ElVbar?src=hash&amp;ref_src=twsrc%5Etfw">#ElVbar</a> de <a href="https://x.com/hashtag/ASColombia?src=hash&amp;ref_src=twsrc%5Etfw">#ASColombia</a> <a href="https://t.co/YSnU1Wr2W2">pic.twitter.com/YSnU1Wr2W2</a></p>&mdash; AS Colombia 🇨🇴 (@AS_Colombia) <a href="https://x.com/AS_Colombia/status/2101048838530212251?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>Después de la respuesta que retumbó desde España hasta Colombia, se centró en hablar en sus sueños y anhelos donde la convocatoria con el cuadro Tricolor era uno de los que tenía en su lista personal.</p><p>Citando una entrevista reciente que dio, allí contó que una buena parte de sus anhelos para su carrera deportiva ya se había cumplido con haber sido llamado al equipo absoluto de Colombia.</p><p>“Quedar campeón con el Cali, y respondí lo primero que se me vino a la mente fue jugar en la selección. Ya, bueno, <b>está la oportunidad que se me presenta y soy un privilegiado por Dios de estar en este microciclo”</b>, destacó. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/F3TWAUA3LNHFXBH7T7QA743SNE.png?auth=27c6d33c3be313799bb25d401fa101250280899b05f67d3ac50d0274dd741a97&smart=true&width=1912&height=1002" alt="Primera convocatoria postMundial de Néstor Lorenzo en Selección Colombia" height="1002" width="1912"/><p>Su ambición por lograr establecerse en la selección se alínea con los objetivos que se trazó Lorenzo para ese primer llamado luego del Mundial 2026.</p><p>“Crecer, como el profe lo dijo ayer en la entrevista, <b>en estos microciclos todo lo que hace el objetivo siempre es crecer, siempre ser un poco mejor, ser mejor, mejor”, apuntó alto. </b></p><p>Pensando en el futuro con la Selección Colombia se mostró deseoso de cambiar la historia del equipo cafetero. La conquista de títulos es algo que le augura al país, estando Orozco siendo parte del cuadro en cabeza de Néstor Lorenzo.</p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">🇨🇴🗣️ Orozco: “Es un sueño y un orgullo que todo niño colombiano quiere”<br><br>🔝 ¡Enhorabuena, Maty! <a href="https://x.com/hashtag/PPO?src=hash&amp;ref_src=twsrc%5Etfw">#PPO</a>👂 <a href="https://t.co/aZUfKk6Uya">pic.twitter.com/aZUfKk6Uya</a></p>&mdash; CD Castellón (@CDCastellon) <a href="https://x.com/CDCastellon/status/2100888003186962848?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script></p><p>“Ojalá ir construyendo un camino ya desde muy joven en la selección y <b>obviamente alcanzar el sueño de todo colombiano que es quedar campeón de un mundial, obviamente primero quedando campeón de Copa América</b>, clasificando en eliminatorias, todo”, cerró deseoso de gloria con el país.</p><h2>Grandes referencias</h2><p>Con trabajo y esfuerzo Orozco se ha ganado el ya saltar a Europa sin haber jugado mucho en Deportivo Cali. </p><p>Justamente su exentrenador en los azucareros, Rafael Dudamel, fue quien <a href="https://www.semana.com/deportes/articulo/odiosa-comparacion-a-gustavo-puerta-tecnico-lo-baja-de-la-nube-al-decir-que-otro-es-mas/202636/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/odiosa-comparacion-a-gustavo-puerta-tecnico-lo-baja-de-la-nube-al-decir-que-otro-es-mas/202636/">semanas atrás lo destacó al punto de llegar a decir que era “más que Gustavo Puerta”, actual figura de la Tricolor.</a></p><p>“<b>Matías Orozco es más que Gustavo Puerta, </b>pero la evolución en el proceso de Puerta ha sido fantástica”, apuntó el DT venezolano.</p><p>“Si lo de Matías sigue en el recorrido normal, <b>es un muchacho que va a estar en el abanico de posibilidades de la selección absoluta dentro de muy poco”, anticipó a inicios de septiembre del llamado que se dio semanas después.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JL2YF653PVAA5OUIBEIC4XW6PM.png?auth=9c541b8caa34f83543ce3a9349c71d4346db2719139b75f7ade27a35bcd1ebba&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Matías Orozco asemejó su juego al de Jude Bellingham y Enzo Fernández. Recién llega a la Selección Colombia de Mayores]]></media:description></media:content></item><item><title><![CDATA[Gobierno revela posibles irregularidades en cajas de compensación intervenidas por Petro]]></title><link>https://www.semana.com/confidenciales/articulo/gobierno-revela-posibles-irregularidades-en-cajas-de-compensacion-intervenidas-por-petro/202603/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/gobierno-revela-posibles-irregularidades-en-cajas-de-compensacion-intervenidas-por-petro/202603/</guid><dc:creator><![CDATA[Juan Diego Mercado Hidalgo]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 13:05:03 +0000</pubDate><content:encoded><![CDATA[<p>Miller Soto, vocero del Gobierno nacional, informó que se identificaron presuntas irregularidades en la administración de las <a href="https://www.semana.com/politica/articulo/procuraduria-pone-la-lupa-sobre-antonio-sanguino-por-movidas-en-cajas-de-compensacion-como-superintendente-e-estas-son-las-denuncias/202626/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/procuraduria-pone-la-lupa-sobre-antonio-sanguino-por-movidas-en-cajas-de-compensacion-como-superintendente-e-estas-son-las-denuncias/202626/">cajas de compensación</a> que fueron intervenidas por Gustavo Petro.</p><p>Se trata de hallazgos administrativos y financieros en once de las 42 cajas del país, <b>un sector que solo en 2025 administró cerca de 14,1 billones de pesos</b> provenientes del aporte del 4 por ciento de la nómina de los trabajadores. </p><p>“Entre los casos más críticos se encuentra Comfenalco Antioquia, <b>bautizada como ‘la telaraña azul’</b>, por una presunta red de intereses políticos que habría buscado controlar de manera irregular más de 1 billón de pesos”, afirmó Soto.</p><p>No solo eso. En la lista también está <b>Comfamiliar Atlántico</b>, intervenida en julio, tras detectarse modificaciones administrativas de última hora, contratos de larga duración que superaban el periodo de intervención, presunto acoso laboral, posibles incompatibilidades y maniobras fraudulentas con impactos económicos millonarios. </p><p>“La documentación completa fue puesta a disposición de la Fiscalía General de la Nación, la Procuraduría y la Contraloría para que determinen responsabilidades, ratificando que los recursos de los empleados no serán instrumentalizados por intereses ulteriores y que se llegará hasta las últimas consecuencias para proteger el patrimonio de las familias colombianas”, concluyó el vocero.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/BRXK4WLGANAWZK5WMAMOWO4LB4.jpg?auth=98e8ac2f889a07d7f42518e51e4e87fa9cc57dbfa90e12668a73fe39f0b18df6&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[Abelardo De La Espriella y Gustavo Petro.]]></media:description></media:content></item><item><title><![CDATA[¿Va a celebrar Amor y Amistad en Cali? Así funcionará el operativo con más de 1.700 policías en las calles  ]]></title><link>https://www.semana.com/nacion/cali/articulo/va-a-celebrar-amor-y-amistad-en-cali-asi-funcionara-el-operativo-con-mas-de-1700-policias-en-las-calles/202641/</link><guid isPermaLink="true">https://www.semana.com/nacion/cali/articulo/va-a-celebrar-amor-y-amistad-en-cali-asi-funcionara-el-operativo-con-mas-de-1700-policias-en-las-calles/202641/</guid><dc:creator><![CDATA[Margarita Briceño Delgado]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 13:02:41 +0000</pubDate><content:encoded><![CDATA[<p>Cali se prepara para el fin de semana de Amor y Amistad con un dispositivo especial de seguridad que tendrá más de 1.700 policías en las calles y vigilancia desde el aire con helicóptero y drones.</p><p><b>El operativo fue anunciado por la Policía Nacional para acompañar las celebraciones en Cali y su área metropolitana.</b> </p><p>Tendrá presencia en lugares donde se espera una mayor concentración de personas, como centros comerciales, zonas gastronómicas, sitios turísticos y corredores viales.</p><p>La estrategia también busca prevenir hechos que puedan afectar la vida, la integridad y el patrimonio de los ciudadanos durante las celebraciones.</p><h2>Helicóptero y drones estarán en el operativo</h2><p>La seguridad no estará solamente en las calles. <b>La Policía informó que la vigilancia aérea contará de manera continua con el helicóptero Halcón y drones</b>, que estarán comunicados con el Centro Automático de Despacho y con las zonas de atención ubicadas en comunas y barrios.</p><p>Esto permitirá complementar el trabajo de los uniformados que estarán desplegados en diferentes sectores de la ciudad durante las jornadas de celebración.</p><p>Además, la operación de la Policía no se limitará a Cali. Las acciones también se extenderán a <b>Candelaria, Jamundí, La Cumbre, Vijes y Yumbo</b>.</p><p>Por eso, las personas que tengan previsto celebrar Amor y Amistad en estos municipios también encontrarán presencia de las autoridades dentro del operativo anunciado para el área metropolitana.</p><p>Para quienes planean salir a celebrar, uno de los principales llamados de las autoridades está relacionado con la seguridad vial.</p><p>La <b>Secretaría de Movilidad de Cali</b> <b>anunció controles en corredores de alta circulación</b>, entradas y salidas de la ciudad y sectores donde se han identificado mayores índices de siniestros. También habrá operativos de alcoholemia.</p><p>El mensaje entregado por las autoridades es directo: si va a consumir alcohol, no conduzca. </p><p>La dependencia también pidió respetar los límites de velocidad y utilizar los elementos de protección, especialmente en el caso de quienes se movilicen en motocicleta.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MFYSIVLGZJAPROEEMRFIVCINWM.jpg?auth=3749777f1440b6d97189dd7d3825a6b2eeacd4ca47b885c86a6a5d06509c021a&smart=true&width=3781&height=2556" alt="Drones de la Policía harán parte de la vigilancia aérea durante el operativo de seguridad por Amor y Amistad en Cali." height="2556" width="3781"/><h2>Los lugares en donde habrá mayor vigilancia</h2><p>La Policía anunció diferentes planes de prevención y acompañamiento dependiendo del lugar y la situación.</p><p>En los <b>establecimientos nocturnos</b>, <b>el Grupo de Infancia y Adolescencia realizará controles para proteger a niños, niñas y adolescentes.</b> </p><p>A esto se suma la Patrulla Púrpura, que tendrá acciones dirigidas a prevenir las violencias basadas en género.</p><p>También estarán activos los planes Baliza, en intersecciones; Betas, en zonas gourmet; MIO Seguro, para acompañar a los usuarios del sistema de transporte masivo, y Turismo Seguro, en zonas hoteleras y otros puntos estratégicos.</p><p>Uno de los dispositivos será el <b>Plan Arcángel</b>, <b>en el que policías realizarán acompañamientos preventivos a los ciudadanos</b>. </p><p>En una primera etapa estarán de manera discreta en diferentes espacios y, posteriormente, se acercarán a las personas para entregarles recomendaciones de seguridad y prevención, con el fin de evitar situaciones que puedan poner en riesgo su integridad o sus pertenencias. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7ZHB455X4ZCPHI6QG5BWZYR5U4.jpg?auth=05b9a078bb8f4814430c56be6764c151944e9cd157174a5315369c2154f333aa&amp;smart=true&amp;width=1600&amp;height=900" type="image/jpeg" height="900" width="1600"><media:description type="plain"><![CDATA[La Policía reforzará la seguridad en Cali durante el fin de semana de Amor y Amistad, con más de 1.700 uniformados desplegados en diferentes sectores de la ciudad.]]></media:description></media:content></item><item><title><![CDATA[Mientras salía la convocatoria de Colombia, fue MVP en su club y borrado por Lorenzo: su DT lo alabó]]></title><link>https://www.semana.com/deportes/articulo/mientras-salia-la-convocatoria-de-colombia-fue-mvp-en-su-club-y-borrado-por-lorenzo-su-dt-lo-alabo/202600/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/mientras-salia-la-convocatoria-de-colombia-fue-mvp-en-su-club-y-borrado-por-lorenzo-su-dt-lo-alabo/202600/</guid><dc:creator><![CDATA[Sergio Alejandro Calderón Calderón]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 12:30:00 +0000</pubDate><content:encoded><![CDATA[<p><b>Nelson Deossa sigue sin hacer los méritos suficientes para ir a la Selección Colombia de Mayores.</b> Aún cuando es figura de Real Betis en España cada vez que entra, sigue siendo invisible para Néstor Lorenzo.</p><p>Dicho volante que sirve también como un extremo y hasta 9 falso en los de Sevilla, volvió a quedarse fuera de la convocatoria, esta vez, renovada de la Tricolor después del Mundial 2026. </p><blockquote class="twitter-tweet"><p lang="und" dir="ltr">𝕄𝕍ℙ <a href="https://t.co/RitELmaRBu">pic.twitter.com/RitELmaRBu</a></p>&mdash; Real Betis Balompié 🌴💚 (@RealBetis) <a href="https://x.com/RealBetis/status/2100676680742326429?ref_src=twsrc%5Etfw">September 17, 2026</a></blockquote><p><a href="https://www.semana.com/deportes/articulo/todos-los-debutantes-en-seleccion-colombia-mas-de-10-elegidos-por-nestor-lorenzo-para-la-renovacion/202639/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/todos-los-debutantes-en-seleccion-colombia-mas-de-10-elegidos-por-nestor-lorenzo-para-la-renovacion/202639/">El argentino entregó la lista el pasado jueves en la tarde, metió más de diez nombres nuevos</a><b>, pero no sumó a Deossa que en ese mismo instante jugaba con su club en LaLiga de España.</b></p><h3>Convocados de la Selección Colombia — septiembre de 2026</h3><p><b>Arqueros:</b></p><ol><li>Kevin Mier </li><li>Álvaro Montero </li><li>Aldair Quintana </li></ol><p><b>Defensas:</b></p><ol><li>Jhon Lucumí </li><li>Daniel Muñoz </li><li>Dávinson Sánchez </li><li>Álvaro Angulo </li><li>Édier Ocampo </li><li>Kevin Andrade </li><li>Róyer Caicedo </li><li>Samuel Velásquez </li></ol><p><b>Volantes y delanteros</b></p><ol><li>Kevin Castaño </li><li>Gustavo Puerta </li><li>Jhon Solís </li><li>Richard Ríos </li><li>Jhon Arias </li><li>Yáser Asprilla </li><li>Jaminton Campaz </li><li>Daniel Arcila </li><li>Juan Manuel Rengifo </li><li>Matías Orozco </li><li>Luis Suárez </li><li>Carlos Andrés Gómez </li><li>Camilo Durán </li><li>Kevin Viveros </li><li>Óscar Perea</li></ol><h2>Salió como MVP y Pellegrini lo alabó</h2><p>Sobre las 3 de la tarde del 17 de septiembre en Bogotá <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/">el DT a cargo de la Tricolor mencionó los nombres que eligió junto a su cuerpo técnico.</a></p><p>A la misma hora estaba jugando Deossa con los suyos vs. Getafe de su compatriota, Johan Mojica.<b> El volante salió del campo al término del partido como el MVP del juego en la victoria por 1-0 frente a los de Madrid.</b></p><p>Aunque no logró reportarse con gol, el exjugador de Atlético Nacional, Junior de Barranquilla y otros oncenos en Latinoamérica fue elogiado por propios y extraños. Después de una primer campaña en la que no brilló, tuvo complicaciones llevándolo hasta a pensarse que saldría de Betis, ahora todo ha cambiado. </p><p>La relación con Manuel Pellegrini -el técnico en de Deossa en suelo ibérico- ha cambiado diametralmente. <b>Ante los medios de comunicación el chileno se extendió en elogios para el que recientemente fue ‘borrado’ por Néstor Lorenzo para iniciar la renovación en Colombia.</b></p><p><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="es" dir="ltr">🗣️ &quot;Creo que ahora es un jugador distinto, es honesto y muy abierto a oír críticas&quot;<br><br>👉 Manuel Pellegrini, entrenador del Betis, destacó la evolución que ha tenido Nelson Deossa en los últimos meses<a href="https://x.com/hashtag/ASColombia?src=hash&amp;ref_src=twsrc%5Etfw">#ASColombia</a> <a href="https://t.co/EKkzywKJwm">pic.twitter.com/EKkzywKJwm</a></p>&mdash; AS Colombia 🇨🇴 (@AS_Colombia) <a href="https://x.com/AS_Colombia/status/2100767640679555294?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 entrada Pellegrini le recordó que estuvo haciendo mal las cosas: “Es un jugador importante que quizás en su primer año en Europa no tuvo la madurez para hacer valer sus condiciones”.</p><p>Pero también le reconoció el hecho de que hoy día se hubiera comprometido de otra forma: <b>“Creo que ahora es un jugador distinto, muy abierto a oír críticas y tratar de aportar colectivamente donde juegue”.</b></p><p>Sobre todo lo que se dijo de una posible salida en el mercado pasado, el director de los verdiblancos aclaró: “Personalmente quería que se quedara, porque estaba recién llegado y a veces los jugadores se demoran en aclimatarse”. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KWJDFOZN55GNLOTFZHJPU53GCQ.jpg?auth=9be5115625e5c7ad7f07a8ef0ef5ffe8d4cdfe5d17e5353c4ca8ac602fb4e50b&smart=true&width=3336&height=5000" alt="Nelson Deossa, volante colombiano que milita en el Real Betis de España" height="5000" width="3336"/><p><b>“Ojalá que siga por el mismo camino que ha tomado desde esta pretemporada, porque nos aporta mucho”</b>, le auguró al colombiano al ver que cada vez aporta más al andamiaje del Real Betis.</p><p>Durante la campaña 2026/2027 los números de goles y asistencias (0) no reflejan el aporte de Deossa, pero el colectivo está a gusto con sus aportes.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7FS4ITSHPVFATDNGW3XCDVTYC4.png?auth=0c00e35db8ce55e6efd50ce249a0a3cb4b8ef2916ced9dafcf64b31c707c6287&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Néstor Lorenzo no tuvo en cuenta a Nelson Deossa para la nueva convocatoria de la Selección Colombia.]]></media:description></media:content></item><item><title><![CDATA[Diario británico, Financial Times, destaca crucero colombiano que recorre el río Magdalena y enaltece el Caribe del país]]></title><link>https://www.semana.com/turismo/articulo/diario-britanico-financial-times-destaca-crucero-colombiano-que-recorre-el-rio-magdalena-y-enaltece-el-caribe-del-pais/202600/</link><guid isPermaLink="true">https://www.semana.com/turismo/articulo/diario-britanico-financial-times-destaca-crucero-colombiano-que-recorre-el-rio-magdalena-y-enaltece-el-caribe-del-pais/202600/</guid><dc:creator><![CDATA[Mariana Lizeth Urrea Moreno]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 12:20:00 +0000</pubDate><content:encoded><![CDATA[<p>Cartagena vuelve a estar en el radar internacional del turismo de lujo. Esta vez, llegó desde el Financial Times, <b>reconocido medio británico que publicó un reportaje sobre los cruceros que recorren el río Magdalena y que tienen a la capital de Bolívar como punto de partida. </b></p><p><b>La publicación, titulada ‘Un viaje pionero por el río más grande de Colombia’ y firmada por Ruaridh Nicoll,</b> centra su atención en las embarcaciones AmaMagdalena y AmaMelodia, operadas por la compañía de Estados Unidos AmaWaterways. </p><p>Ambas parten del Muelle La Bodeguita, para iniciar una travesía que conecta el Caribe colombiano con destinos del interior. </p><p>El recorrido comienza en Cartagena, <b>donde los viajeros tienen la oportunidad de conocer la ciudad antes de embarcarse en esta experiencia.</b></p><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@cerraphilms/video/7493277676455595319" data-video-id="7493277676455595319" data-embed-from="oembed" style="max-width:605px; min-width:325px;"> <section> <a target="_blank" title="@cerraphilms" href="https://www.tiktok.com/@cerraphilms?refer=embed">@cerraphilms</a> <p>Creando para la nueva era de navegación en el Rio Magdalena, así luce el crucero de Ama Magdelana.  <a title="amamagdalena" target="_blank" href="https://www.tiktok.com/tag/amamagdalena?refer=embed">#AmaMagdalena</a> <a title="colombiajourney" target="_blank" href="https://www.tiktok.com/tag/colombiajourney?refer=embed">#ColombiaJourney</a> <a title="rivercruise" target="_blank" href="https://www.tiktok.com/tag/rivercruise?refer=embed">#RiverCruise</a> <a title="amawaterways" target="_blank" href="https://www.tiktok.com/tag/amawaterways?refer=embed">#AmaWaterways</a></p> <a target="_blank" title="♬ sonido original - CerraPhilms" href="https://www.tiktok.com/music/sonido-original-7493277679497661189?refer=embed">♬ sonido original - CerraPhilms</a> </section> </blockquote> <script async src="https://www.tiktok.com/embed.js"></script><p><b>“En el antiguo muelle de Cartagena, barcos piratas de aspecto poco convincente se llenan de fiesteros antes de zarpar hacia una puesta de sol al ritmo de la vibrante música de salsa y reguetón [...] </b>Saludo con un gesto amable desde el AmaMelodía, un elegante barco de 32 camarotes y 68 metros de eslora, que es la longitud del barco desde la proa hasta la popa”.</p><p>Después, la ruta avanza por el Canal del Dique, <b>infraestructura construida en 1582 que permite la conexión con el río Magdalena. </b></p><p>En el camino aparecen lugares de interés histórico y cultural, como San Basilio de Palenque, <b>comunidad que el medio británico describe como “una pieza esencial en el rompecabezas para entender a América Latina”. </b></p><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@danielaporelmundo/video/7528512689581100310" data-video-id="7528512689581100310" data-embed-from="oembed" style="max-width:605px; min-width:325px;"> <section> <a target="_blank" title="@danielaporelmundo" href="https://www.tiktok.com/@danielaporelmundo?refer=embed">@danielaporelmundo</a> <p>Viajando el Rio Magdalena en crucero, uffff Colombia ered magia ✨ crucero con @AmaWaterways </p> <a target="_blank" title="♬ original sound - Daniela Montoya" href="https://www.tiktok.com/music/original-sound-7528512670393584406?refer=embed">♬ original sound - Daniela Montoya</a> </section> </blockquote> <script async src="https://www.tiktok.com/embed.js"></script><p>Para Corpoturismo, la atención del Financial Times representa una vitrina para Cartagena y el Muelle La Bodeguita. Liliana Rodríguez Hurtado, presidenta ejecutiva de la entidad,<b> explicó que los barcos tienen salidas programadas cada semana y permanecen cerca de tres días en el muelle antes de comenzar la navegación. </b></p><p><b>“Nos llena de orgullo que medios de la talla del Financial Times destaquen la experiencia de zarpar desde Cartagena”,</b> señaló Rodríguez Hurtado, quien también resaltó las labores de abastecimiento, equipaje, seguridad y atención a los pasajeros durante la permanencia de las embarcaciones. </p><p>Los turistas pueden desembarcar para recorrer el Centro Histórico, probar la gastronomía y conocer espacios de la ciudad. </p><p>La funcionaria destacó que esta operación también tiene un impacto en la economía:<b> “Mientras los barcos están atracados, los turistas desembarcan, exploran nuestro Centro Histórico, disfrutan de la gastronomía y viven la magia de la ciudad”, </b>afirmó. </p><p>De esta forma, Cartagena no solo funciona como punto de partida, <b>ya que también hace parte de una experiencia que mezcla todo lo bueno: patrimonio, gastronomía, turismo y navegación de lujo por el Magdalena.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ANVMJRUHSJED7AMREOMBNOJEYI.jpg?auth=259eb906036028e3edd49bc9ce3b9e8a37619781750facab19fd8226c5bcc65b&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Más allá de la experiencia turística, la iniciativa se articula con inversiones en infraestructura, revitalización urbana y fortalecimiento del tejido empresarial en los municipios de la ruta.]]></media:description></media:content></item><item><title><![CDATA[Polémica por evento del embajador de China en el Metro de Bogotá: “Ahí no hubo ningún favor”]]></title><link>https://www.semana.com/politica/articulo/polemica-por-evento-del-embajador-de-china-en-el-metro-de-bogota-ahi-no-hubo-ningun-favor/202650/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/polemica-por-evento-del-embajador-de-china-en-el-metro-de-bogota-ahi-no-hubo-ningun-favor/202650/</guid><dc:creator><![CDATA[Juan Diego Mercado Hidalgo]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 12:18:50 +0000</pubDate><content:encoded><![CDATA[<p>Hay debate en las redes sociales por cuenta de <a href="https://www.semana.com/nacion/bogota/articulo/embajador-de-china-recorrio-obras-del-metro-de-bogota-asi-avanzan-las-pruebas-y-esto-falta-para-que-los-ciudadanos-puedan-usarlo/202642/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/bogota/articulo/embajador-de-china-recorrio-obras-del-metro-de-bogota-asi-avanzan-las-pruebas-y-esto-falta-para-que-los-ciudadanos-puedan-usarlo/202642/">la visita que lideró la Embajada de China en Colombia</a> esta semana en el Metro de Bogotá. Enrique Peñalosa, exalcalde de la capital, lanzó fuerte críticas.</p><p>El cuerpo diplomático convocó a los medios de comunicación y a políticos a visitar la obra que lidera una empresa de ese país. El protagonismo de los extranjeros no cayó bien en algunos sectores políticos.</p><p>Peñalosa describió: <b>“Que el embajador chino haga un show de una visita al Metro es equivalente a que el embajador de Estados Unidos hiciera show de visitar un avión Boeing nuevo de Avianca o que el de Brasil lo hiciera con aviones Tucano comprados por la FAC</b>”.</p><p>Él agregó que la obra de transporte, la más importante del país, se adquirió con recursos de los ciudadanos, sin ningún aporte de la administración china, “simplemente porque la empresa China, Harbour, hizo la mejor oferta”.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">Que el embajador chino haga un show de una visita al Metro es equivalente a que el embajador de Estados Unidos hiciera show de visitar un avión Boeing nuevo de AVIANCA o que el de Brasil lo hiciera con aviones Tucano comprados por la FAC.<br>El Metro lo compramos con recursos…</p>&mdash; Enrique Peñalosa (@EnriquePenalosa) <a href="https://x.com/EnriquePenalosa/status/2101058053798002816?ref_src=twsrc%5Etfw">September 18, 2026</a></blockquote><p>Esta fue la interpretación del exmandatario: “A<b>hí no hubo ningún favor ni nada por lo que debamos estar especialmente agradecidos con el gobierno chino</b>, como no tenemos por qué estarlo con el gobierno coreano si una entidad pública compra retroexcavadoras coreanas”.</p><p>Peñalosa también <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="noreferrer" 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/">reprochó la asistencia de Claudia López al evento</a>: “Y que el embajador invite a Claudia López a su show, quien incluso demandó el proyecto que habíamos contratado para matarlo, es todavía más fuera de lugar”.</p><p>El exalcalde de Bogotá concluyó en sus críticas: “Respeto y admiro a la China, y ojalá que el embajador promueva, por ejemplo, inversiones chinas en Colombia. Pero que le compremos productos a China en condiciones comerciales ordinarias no tiene nada especialmente meritorio”.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3UBQUTVV2JESNKQXL32CJ54GYM.jpg?auth=69ae5c5e3629cce28da8485e031ed956e1a109e091d1a9bc6a02c89b695f40cb&amp;smart=true&amp;width=1600&amp;height=900" type="image/jpeg" height="900" width="1600"><media:description type="plain"><![CDATA[El embajador de China en Colombia, Zhu Jingyang, recorrió la Línea 1 durante una jornada de pruebas del proyecto.]]></media:description></media:content></item><item><title><![CDATA[Defensa férrea a Luis Díaz por su falta de gol: interna expone la dificultad que pasaría en Bayern]]></title><link>https://www.semana.com/deportes/articulo/defensa-ferrea-a-luis-diaz-por-su-falta-de-gol-interna-expone-la-dificultad-que-pasaria/202614/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/defensa-ferrea-a-luis-diaz-por-su-falta-de-gol-interna-expone-la-dificultad-que-pasaria/202614/</guid><dc:creator><![CDATA[Sergio Alejandro Calderón Calderón]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 12:15:14 +0000</pubDate><content:encoded><![CDATA[<p>Jonathan Tah es defensa central en Bayern Múnich de Alemania donde también está el colombiano Luis Díaz.</p><p>Entre ambos desde la llegada del guajiro se ha visto una buena relación. El defensa suele saltar desde atrás del campo para felicitar al cafetero por sus goles, asistencias o intervenciones buenas en medio de los partidos.</p><p>Después del arranque poco productivo de Lucho en la actual temporada donde solo ha logrado anotar un gol en cuatro fechas disputadas, <b>Tah no le soltó la mano a Díaz y lo defendió recientemente.</b></p><h2>“Corre de un lado a otro”</h2><p>Para el zaguero que fue mundialista con su país en la edición 2026 <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/">el bajón de Luis Díaz puede ser apenas “normal”.</a> Los motivos relacionados serían un desgaste por la cantidad de minutos y entrega que hace el colombiano en el campo.</p><p><b>“Creo que es normal cuando juegas tantos partidos como él”, analizó Tah.</b> </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/GJ2UPFLU6VAT7LHTQNSY3EYFEY.jpg?auth=bba01ce03964562b4ecb0d719f9f66f84bb04bb843929553b81f26b9432741f1&smart=true&width=6000&height=4000" alt="Jonathan Tah junto a Luis Díaz en las fotos para el Oktoberfest" height="4000" width="6000"/><p>Después de ellos le preponderó el despliegue físico que le ve: “Siempre me he preguntado cómo logra correr de un lado a otro del campo en cada partido”.</p><p>Y es que <b>los indicadores de kilómetros recorridos por parte de Lucho en sus partidos jugados con los de Múnich es sumamente altos.</b> Por banda, tanto para defender como para atacar se le ve presente.</p><h2>Le pasa factura temporada y Mundial</h2><p>Luis Díaz desembarcó en Bayern Múnich para el inicio de la temporada 2025/2026 proveniente del Liverpool de Inglaterra.</p><p>Su impacto inmediato en los alemanes le signficó que Vincent Kompany le aprovechara ese gran momento para usarlo cuantas veces fuera posible antes de la Copa Mundo.</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 tampoco logró acabar la racha sin gol en Bayern Múnich." height="4000" width="6000"/><p>Según las cifras recopiladas de cuántas veces jugó el colombiano, qué cantidas de titular y minutos alcanzados, este es el resumen.</p><ul><li><b>Bayern 2025/26:</b> 51 partidos, 46 como titular y 33 completos. </li></ul><p><b>Minutos:</b> 4.052</p><p>Bundesliga: 32 partidos </p><p>Champions League: 12 </p><p>DFB-Pokal: 6 </p><p>Supercopa de Alemania: 1</p><ul><li><b>Mundial 2026:</b> 5 partidos, 5 como titular y 3 completos. </li></ul><p><b>Total entre ambos:</b> 56 partidos, 51 titularidades y <b>36 partidos completos</b>.</p><p>Esto lo que demuestra es que el temor de una fatiga de cara al Mundial 2026 para Lucho llegó fue en el arranque de la nueva campaña con Bayern. <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="noreferrer" 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/">El mismo entrenador de la Selección Colombia conversó con el involucrado al que le refirió que no lo veía con la misma potencia que se le conoce.</a></p><p>“<b>‘Te veo cansado, Lucho</b><i><b>. </b></i><b>No tienes el </b><i><b>sprint</b></i><b> que es tuyo, ¿qué te pasa?’,</b> y bueno, consensuamos que descanse esta fecha porque tiene más de 60 partidos”, reveló sobre lo que conversó con Díaz para no tenerlo en cuenta en la convocatoria de los amistoso Fifa de septiembre.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6XT672NXGZEFFFIQ2GIBBM5RVE.jpg?auth=5e10394d1233731df2c888e2967d5d3bff2e18d60ba60ca043835a94f391d253&smart=true&width=4354&height=2903" alt="Néstor Lorenzo anunciará la primera convocatoria luego del Mundial 2026. Luis Díaz es duda" height="2903" width="4354"/><p>Para fortuna de la máxima estrella de la Tricolor, ahora se viene una para en su club de casi un mes. Dicha falta de partidos con Bayern y Colombia podrían jugarle a favor si es que su cuerpo está fatigado de la cantidad de partidos que acumula.</p><p>Así pues, <b>hasta el 10 de octubre próximo que vuelve la Bundesliga con el enfrentamiento contra Ausburgo para los de Díaz y compañía.</b> Ese día se espera que acabe la mala racha y retorne al gol. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZIWGJUDBCRH3LP2SGAZCWRBLNA.png?auth=f90a517e87dc0cb95f3b8c1eef38385df75bff0e171f2265e7a2000a8e4cbe17&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Luis Díaz, jugador del Bayern Múnich y la Selección Colombia de Mayores]]></media:description></media:content></item><item><title><![CDATA[Álvaro Uribe lanza propuesta para que la banca ayude en la recuperación del terremoto: “Deberían”]]></title><link>https://www.semana.com/confidenciales/articulo/alvaro-uribe-lanza-propuesta-para-que-la-banca-ayude-en-la-recuperacion-del-terremoto-deberian/202645/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/alvaro-uribe-lanza-propuesta-para-que-la-banca-ayude-en-la-recuperacion-del-terremoto-deberian/202645/</guid><dc:creator><![CDATA[Javier  Molina Castillo]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 12:12:45 +0000</pubDate><content:encoded><![CDATA[<p>Colombia se empieza a levantar poco a poco tras la tragedia registrada en varias regiones del país por cuenta del terremoto que sorprendió en la mañana del 10 de agosto, mientras el Gobierno nacional, en cabeza del presidente Abelardo De La Espriella, adelanta una estrategia de recuperación. </p><p>Han pasado más de cuatro semanas desde que la tierra se movió con fuerza y el registro de sus consecuencias permite dimensionar lo que quedó detrás. <a href="https://www.semana.com/nacion/articulo/un-mes-del-terremoto-en-colombia-la-huella-invisible-que-permanece-en-la-mente-psiquiatra-explica-sus-efectos/202643/" target="_blank" rel="" title="https://www.semana.com/nacion/articulo/un-mes-del-terremoto-en-colombia-la-huella-invisible-que-permanece-en-la-mente-psiquiatra-explica-sus-efectos/202643/">A un mes del sismo, las cifras oficiales muestran la magnitud</a> de la emergencia y de las afectaciones que todavía hacen parte del proceso de recuperación.</p><p>De acuerdo con las cifras del Registro Único de Damnificados (RUD), aparecen registradas cerca de 364.671 familias y 778.279 personas. Además, se reportan 104.037 viviendas no habitables. A esto se suman 19.142 viviendas destruidas y otras 119.752 averiadas.</p><p>Ante este panorama, el expresidente Álvaro Uribe Vélez publicó un mensaje en el que<b> lanza una propuesta que podría ayudar de manera significativa en la reconstrucción de los daños que dejó el movimiento telúrico</b> y que tiene a miles de familias colombianas en jaque.</p><p>El ex jefe de Estado destacó que el Gobierno de Abelardo De La Espriella “<b>está comprometido con la diminución del tamaño del Estado</b> y la reactivación de la empresa privada”, lo que podría funcionar como un mensaje clave para la banca nacional e internacional. </p><p>Por eso, manifestó que “los bancos nacionales e internacionales, multilaterales y privados, <b>deberían otorgarle un crédito a 30 años para la recuperación del terremoto</b>, con seguro cambiario, crédito que también lo pudieran utilizar personas afectadas para reconstruir sus inmuebles”.</p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">Dado que este gobierno está comprometido con la disminución del tamaño del Estado y la reactivación de la empresa privada, los bancos nacionales e internacionales, multilaterales y privados, deberían otorgarle un crédito a 30 años para la recuperación del terremoto, con seguro…</p>&mdash; Álvaro Uribe Vélez (@AlvaroUribeVel) <a href="https://x.com/AlvaroUribeVel/status/2101267346669097175?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AVYR33BQHVASVPTVENSKM4IYEE.jpg?auth=49072135cc6376458998c91e9493296eda6dadb56f37d1f46ae659e287c999b8&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[El expresidente Álvaro Uribe Vélez habló sobre la reconstrucción tras el terremoto.]]></media:description></media:content></item><item><title><![CDATA[Soat y tecnomecánica en motos eléctricas: quiénes deben cumplir y quiénes se salvan]]></title><link>https://www.semana.com/vehiculos/articulo/soat-y-tecnomecanica-en-motos-electricas-quienes-deben-cumplir-y-quienes-se-salvan/202600/</link><guid isPermaLink="true">https://www.semana.com/vehiculos/articulo/soat-y-tecnomecanica-en-motos-electricas-quienes-deben-cumplir-y-quienes-se-salvan/202600/</guid><dc:creator><![CDATA[Camilo Eduardo Velásquez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 12:10:00 +0000</pubDate><content:encoded><![CDATA[<p>El Gobierno nacional ha establecido en el último tiempo una serie de <a href="https://www.semana.com/vehiculos/articulo/gobierno-impone-nuevas-reglas-para-patinetas-bicis-y-monociclos-electricos-estos-son-los-cambios-en-colombia/202659/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/gobierno-impone-nuevas-reglas-para-patinetas-bicis-y-monociclos-electricos-estos-son-los-cambios-en-colombia/202659/">reglas para el uso de las motos y bicicletas eléctricas en Colombia</a> y, entre estas, especifica que <b>los catalogados vehículos eléctricos livianos no deben cumplir con requisitos como Soat y la revisión técnico-mecánica, mientras que los demás no están eximidos de esta regla.</b></p><p>La Ley 2486 de 2025 de Colombia estableció que el Soat y la revisión técnico-mecánica no son obligatorios para los vehículos eléctricos de las siguientes categorías:</p><ul><li><b>Peso: </b>Que el automotor pese menos de 60 kilogramos.</li><li><b>Potencia: </b>Cuyo motor tenga un potencial igual o menor a los 1.000 vatios.</li><li><b>Velocidad: </b>Que no superen los 40 kilómetros por hora en su velocidad máxima.</li></ul><p>Esto significa que <b>todos los vehículos que no cumplan con estas tres características deben cumplir con las condiciones tradicionales del Soat y la revisión técnico-mecánica. </b></p><p>La excepción que brinda el Gobierno buscó incentivar la utilización de estos vehículos optimizadores de energías limpias. Expertos internacionales y diversos estudios coinciden en que estos autos y motos eléctricos no contaminan el medio ambiente debido a su nula producción de dióxido de carbono (CO2), realidad distinta a los automotores a combustión.</p><h2>Contexto del Soat y la revisión técnico-mecánica y sus excepciones en Colombia</h2><p>El Seguro Obligatorio de Accidentes de Tránsito (Soat) es un documento que, como lo dice su nombre, <b>no es opcional para los conductores en Colombia y el Código de Tránsito exige que esté vigente desde el momento en que el vehículo es matriculado ante el RUNT. </b>Situación distinta a la de la revisión técnico-mecánica.</p><p>La revisión tecnomecánica consiste en que los CDA del país evalúen que los vehículos estén en las óptimas condiciones para garantizar la seguridad vial de los ciudadanos; sin embargo, <a href="https://www.semana.com/vehiculos/articulo/listado-completo-de-los-carros-y-motos-que-no-deben-pagar-tecnomecanica-en-este-2026/202603/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/listado-completo-de-los-carros-y-motos-que-no-deben-pagar-tecnomecanica-en-este-2026/202603/">el Gobierno nacional estableció una serie de excepciones en las que permite que algunos vehículos no se sometan a esta obligación</a> a partir de su año de matrícula.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3QYVA4RSGNBFVOSKESCRCFMTM4.jpg?auth=55734dd9771d33a8fc1902cb3ff1a033d5ffd14e5053d7cd9acac255583049cb&smart=true&width=1280&height=720" alt="No todos los vehículos deben realizar la revisión este año." height="720" width="1280"/><p>La Ley 2294 de 2023, que modificó el Artículo 52 de la Ley 769 de 2002 del Código Nacional de Tránsito Terrestre, estableció que <b>todos los propietarios de motocicletas tienen dos años de gracia para no someter su vehículo a esta revisión mecánica. Excepción que también incluye a las motos eléctricas en mención.</b></p><p>Esta excepción está ligada directamente con la fecha de matrícula del vehículo; por ejemplo, una motocicleta matriculada el 2 de diciembre de 2024 deberá presentarse a la revisión técnico-mecánica el 2 de diciembre de 2026 para que pueda seguir circulando.</p><p>En caso de que el propietario haga caso omiso a esta revisión, el Código Nacional de Transporte (CNT) estableció que <b>el conductor puede ser requerido por un agente de tránsito y recibiría una multa económica que en 2026 equivale a $633.200 (15 SMDLV)</b>. </p><p>Se trata de la infracción C35, estipulada en el CNT, que también establece que, en caso de que un vehículo sea captado sin este requisito, puede ser inmovilizado y llevado a los patios, situación que también encarecería la infracción.</p><p>Aun si el conductor no es requerido por un agente de tránsito, diferentes mecanismos pueden seguir castigando al infractor. Las diversas <a href="https://www.semana.com/vehiculos/articulo/que-infracciones-de-transito-identifican-las-nuevas-camaras-de-fotomultas-en-bogota/202654/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/que-infracciones-de-transito-identifican-las-nuevas-camaras-de-fotomultas-en-bogota/202654/">secretarías de movilidad del país advirtieron que sus fotomultas castigan a los propietarios cuyos vehículos son captados circulando sin la respectiva revisión de la técnico-mecánica vigente.</a> </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/X7GE7VE2XJDUPBDNJ66DNGCPOI.jfif?auth=76f5b3a7577a1f017aae7297826504a05ab2d28a06ad2117b22e7842f22a0ff6&smart=true&width=900&height=600" alt="El Distrito anunció diferentes acciones para gestionar la velocidad y reducir los siniestros viales en Bogotá." height="600" width="900"/><h2>Descuentos para las motos eléctricas</h2><p>En cuanto a la revisión técnico-mecánica, es importante precisar que los vehículos eléctricos en Colombia tienen algunos beneficios. El Gobierno nacional estableció que los CDA deben hacer unos descuentos especiales.</p><p><b>“Los Centros de Diagnóstico Automotor aplicarán un descuento del treinta por ciento (30 %) en el valor del servicio de la revisión técnico-mecánica y de emisiones contaminantes </b>para vehículos eléctricos”, especifica la Resolución 20213040039485 del Ministerio de Ambiente y Transporte.</p><p>Teniendo en cuenta que <a href="https://www.semana.com/vehiculos/articulo/cuanto-cuesta-la-revision-tecnico-mecanica-en-2026-estas-son-las-tarifas-para-automoviles-motos-y-vehiculos-pesados-en-colombia/202635/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/cuanto-cuesta-la-revision-tecnico-mecanica-en-2026-estas-son-las-tarifas-para-automoviles-motos-y-vehiculos-pesados-en-colombia/202635/">esta revisión vale entre $217.781 y $247.490, dependiendo de la antigüedad del vehículo,</a> para estas motocicletas eléctricas puede oscilar entre los $160.000 y los $220.000.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/G3N6VUBLG5CZNLGQKCZKUFU5YQ.jpg?auth=bacaa061ae573666050cba7f620485db4a60771f49ac330fbc6152a2597b5ed8&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[La legislación colombiana también establece una serie de descuentos para algunos requisitos en los vehículos eléctricos.]]></media:description></media:content></item><item><title><![CDATA[“La ofensiva no se detiene”: Abelardo De La Espriella reporta capturas e incautaciones en tres regiones y advierte a criminales]]></title><link>https://www.semana.com/nacion/articulo/la-ofensiva-no-se-detiene-abelardo-de-la-espriella-reporta-capturas-e-incautaciones-en-tres-regiones-y-advierte-a-criminales/202640/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/la-ofensiva-no-se-detiene-abelardo-de-la-espriella-reporta-capturas-e-incautaciones-en-tres-regiones-y-advierte-a-criminales/202640/</guid><dc:creator><![CDATA[Julián Mateo Candela Suescún]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 12:02:40 +0000</pubDate><content:encoded><![CDATA[<p>El presidente de Colombia,<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="noreferrer" 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/"> Abelardo De La Espriella</a>,<b> anunció uno de los más recientes operativos realizados por parte de la Fuerza Pública</b> que se llevó a cabo en múltiples regiones del país. </p><p>Desde su llegada al cargo el pasado 7 de agosto de 2026, el jefe de Estado ha estado realizando <a href="https://www.semana.com/politica/articulo/abelardo-de-la-espriella-anuncio-golpe-a-banda-dedicada-al-hurto-de-mercancias-en-distintos-departamentos/202651/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/abelardo-de-la-espriella-anuncio-golpe-a-banda-dedicada-al-hurto-de-mercancias-en-distintos-departamentos/202651/">múltiples operaciones</a> con el objetivo de<b> atacar las estructuras, armamento, finanzas y economías ilícitas a posesión de organizaciones y bandas criminales. </b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SABSHPFMWBHYLAUINHAOJHTWAY.jpg?auth=fdeee3db22647cd2544cdbfcc2495be737cf7747a59245105cddf3c83653a559&smart=true&width=1280&height=720" alt="Presidente Abelardo De La Espriella lanzó delicada alerta." height="720" width="1280"/><p>Durante una de sus más recientes alocuciones presidenciales, De La Espriella había informado sobre <a href="https://www.semana.com/nacion/articulo/abelardo-de-la-espriella-da-por-terminadas-las-mesas-de-dialogo-sin-voluntad-de-paz-critica-la-falsa-paz-total/202610/" target="_blank" rel="noreferrer" title="https://www.semana.com/nacion/articulo/abelardo-de-la-espriella-da-por-terminadas-las-mesas-de-dialogo-sin-voluntad-de-paz-critica-la-falsa-paz-total/202610/">el fin de las mesas de paz con varias de estas estructuras delictuales</a>, al afirmar que no existe una voluntad real y verificable de paz en el país, denominando esto como “farsas”.</p><p>“<b>No voy a permitir que la palabra paz siga siendo utilizada como excusa para la impunidad, ni que una mesa de diálogo se convierta en refugio para quienes persisten en la violencia y la criminalidad. Se acabaron las mesas sin resultados y los beneficios, sin que haya contraprestaciones reales</b>”, comentó el presidente en su alocución.</p><h2>Los más recientes operativos por parte de la Fuerza Pública</h2><p>El presidente De La Espriella compartió los resultados de las operaciones que fueron realizadas en distintas regiones del país. </p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">¡La ofensiva no se detiene!<br><br>En San José del Guaviare, la Armada Nacional, en operación conjunta con el Ejército y coordinada con la Policía, inmovilizó una embarcación, capturó a dos criminales e incautó 975 kilos de cocaína.<br><br>En Dosquebradas fue capturado alias “Cuba”,… <a href="https://t.co/xXvg7r7Cq2">pic.twitter.com/xXvg7r7Cq2</a></p>&mdash; Abelardo De La Espriella (@ABDELAESPRIELLA) <a href="https://x.com/ABDELAESPRIELLA/status/2101171038469898727?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote><p>La primera de ellas se presentó en el municipio de<b> San José del Guaviare, en donde la Armada Nacional logró la inmovilización de una embarcación, lo que derivó en la incautación de 975 kilos de cocaína y la captura de dos criminales.</b> Este hecho fue logrado por medio de una coordinación entre el Ejército Nacional y la Policía. </p><p>Por otro lado, en el municipio de Dosquebradas, <b>las autoridades lograron la captura de alias “Cuba”, quien es el cabecilla y jefe de los sicarios conocidos como “La Cordillera”</b>, quienes son los responsables de articular el microtráfico, homicidios y extorsiones contra comerciantes y transportadores en Pereira y Dosquebradas. </p><p>Finalmente, en El Bagre, Antioquia, el <b>Ejército Nacional mantuvo una confrontación con la subestructura Manuel Alexander Ariza Rosario del grupo narcoterrorista Clan del Golfo. </b></p><p>A través de esto, un criminal fue dado de baja, mientras cuatro más fueron capturados; dos de ellos se encuentran heridos. Adicionalmente, <b>se logró la incautación de dos fusiles, un revólver, 607 cartuchos, 14 proveedores, equipos de comunicación y dinero en efectivo. </b></p><p>Ante estos resultados, el presidente Abelardo De La Espriella lanzó una advertencia a aquellas bandas criminales que siguen delinquiendo en el país, afirmando que, sin importar dónde se encuentren, van a ser enfrentados por la justicia. </p><p><b>“Los estamos cazando por aire, tierra y por agua. No tendrán escondite ni descanso: los voy a acabar”, exclamó.</b></p><blockquote class="twitter-tweet"><p lang="es" dir="ltr">En las últimas 24 horas, nuestra Fuerza Pública capturó a 42 criminales, dio de baja a un narcoterrorista e incautó 2.411 kilos de marihuana, 900 kilos de cocaína, 75 kilos de base de coca, 30 armas y 642 municiones. Además, intervino tres minas ilegales y afectó 18 bienes…</p>&mdash; Abelardo De La Espriella (@ABDELAESPRIELLA) <a href="https://x.com/ABDELAESPRIELLA/status/2101290849812238725?ref_src=twsrc%5Etfw">September 19, 2026</a></blockquote><p><b>De La Espriella también informó que e</b>n las últimas 24 horas, la Fuerza Pública capturó a 42 criminales, dio de baja a un narcoterrorista e incautó 2.411 kilos de marihuana, 900 kilos de cocaína, 75 kilos de base de coca, 30 armas y 642 municiones. Además, intervino tres minas ilegales y afectó 18 bienes criminales por $7.600 millones.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/CPLHZJDSDVBWFGQ2BUWU3ZIUXA.jpg?auth=06850b1ca85cf96ebfaf9ee93705a912495460f02a2fdb2d0e9bc42567833daa&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[El Gobierno de Abelardo De La Espriella ha informado sobre diferentes operaciones de la Fuerza Pública contra estructuras armadas y organizaciones criminales.]]></media:description></media:content></item><item><title><![CDATA[La isla colombiana que ‘Travel + Leisure’ incluyó en los destinos imperdibles para visitar en 2026]]></title><link>https://www.semana.com/turismo/articulo/la-isla-colombiana-que-travel-leisure-incluyo-en-los-destinos-imperdibles-para-visitar-en-2026/202600/</link><guid isPermaLink="true">https://www.semana.com/turismo/articulo/la-isla-colombiana-que-travel-leisure-incluyo-en-los-destinos-imperdibles-para-visitar-en-2026/202600/</guid><dc:creator><![CDATA[María Angélica Raigoso Rubio]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 12:00:00 +0000</pubDate><content:encoded><![CDATA[<p><b>En Colombia hay diversidad de destinos que vale la pena conocer y si se piensa en playa, brisa y mar, Barú es una gran opción a menos de una hora de Cartagena.</b> Precisamente este destino fue incluido por la revista <i>Travel + Leisure </i>dentro de los 20 destinos imprescindibles para visitar en Colombia en 2026. </p><p>El portal oficial de turismo <i>Colombia Travel </i>indica que aunque popularmente se le conoce como la Isla de Barú, este territorio es en realidad una península rodeada por la bahía de Cartagena, el Canal del Dique y el mar Caribe. </p><p><b>Sus playas destacan por sus arenas claras, algunas con tonalidades rosadas, y por unas aguas cristalinas que permiten apreciar el fondo marino.</b> En los alrededores también se encuentran manglares, canales y ecosistemas submarinos que enriquecen el paisaje.</p><p>Así, independiente de cómo se le llame, lo cierto es que este es uno de los lugares que deberían incluirse en la agenda de destinos para visitar en 2026. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PEMZGTIH5ZFAVLMSL2XOMQO7ZQ.jpg?auth=7510ebe8626f86ea9c232cf44721519e633c6059bad44c9abac86886e850ff8f&smart=true&width=2125&height=1411" alt="Playa Blanca es una de las más apetecidas por los viajeros en la isla de Barú." height="1411" width="2125"/><p><b>La mencionada publicación indica que si bien durante años Barú fue conocida principalmente como un lugar para una escapada de un día desde Cartagena, </b>especialmente para quienes buscaban disfrutar de algunas de las playas más atractivas de los alrededores, ahora se ha dado una transformación en su oferta turística que permite quedarse y sacar mayor provecho de la estadía. </p><p>La revista indica que uno de los puntos a favor es que los viajeros pueden optar por pasar el día junto al mar o prolongar la experiencia en lugares como Acasí Rustic Beach, que cuenta con seis cabañas y una playa privada de ambiente tranquilo y romántico. </p><p>Se dice que la oferta de alojamiento y experiencias ha contribuido a posicionar a Barú como una alternativa cada vez más atractiva para quienes buscan disfrutar del Caribe colombiano con mayor calma.</p><h2>¿Qué se puede hacer allí?</h2><p><b>Uno de los encantos de Barú es que ofrece varias playas para disfrutar del Caribe, cada una con un ambiente particular.</b> Entre las más conocidas están Playa Blanca, Cholón, Agua Azul y Agua Tranquila. Playa Blanca es la más extensa y destaca por su arena clara, sus aguas turquesas y una amplia oferta gastronómica, indica <i>Colombia Travel. </i></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/X3A3LEZ52JDTRKXGVA2WNYQMCQ.jpg?auth=91303c38a5d7fbe5ad7529b53dceee9603ee788c792bbdb1d9326771790396d3&smart=true&width=2498&height=1405" alt="Panorámica de Isla Barú. " height="1405" width="2498"/><p>Cholón, a la que se llega únicamente en bote, tiene un ambiente mucho más animado. El atractivo está en fondear embarcaciones, disfrutar del sol, la música y compartir con otros visitantes, convirtiéndola en uno de los puntos más concurridos de Barú.</p><p>En contraste, Agua Azul y Agua Tranquila ofrecen un plan más relajado. <b>Son ideales para quienes buscan descansar junto al mar, tomar el sol y disfrutar con calma de sus aguas y paisajes caribeños.</b></p><p>Llegar a Barú es fácil y puede hacerse tanto por tierra como por agua, atravesando la bahía de Cartagena. Ambas alternativas ofrecen una experiencia diferente para comenzar el recorrido hacia este destino del Caribe colombiano.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/IDN6H2TOCJABZGYD6IRGAFC5FE.jpg?auth=078528fda930e9a254ef01bcefccc2ba38044ac0df54b62152d36fc86facedc8&amp;smart=true&amp;width=4020&amp;height=2664" type="image/jpeg" height="2664" width="4020"><media:description type="plain"><![CDATA[Este es uno de los destinos imperdibles para visitar en Colombia en 2026.]]></media:description><media:credit role="author" scheme="urn:ebu">StreetFlash</media:credit></media:content></item><item><title><![CDATA[Ponen freno a orden de Petro: Colombia se retira de demanda contra Israel]]></title><link>https://www.semana.com/politica/articulo/ponen-freno-a-orden-de-petro-colombia-se-retira-de-demanda-contra-israel/202647/</link><guid isPermaLink="true">https://www.semana.com/politica/articulo/ponen-freno-a-orden-de-petro-colombia-se-retira-de-demanda-contra-israel/202647/</guid><dc:creator><![CDATA[Juan Diego Mercado Hidalgo]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:51:47 +0000</pubDate><content:encoded><![CDATA[<p>Gideon Sa’ar, ministro de Asuntos Exteriores de Israel, informó a la opinión pública que Colombia se retiró de la <a href="https://www.semana.com/politica/articulo/petro-reitera-respaldo-a-sudafrica-por-demanda-contra-israel-ante-la-cij-dice-que-su-equipo-juridico-merece-el-nobel-de-paz/202404/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/petro-reitera-respaldo-a-sudafrica-por-demanda-contra-israel-ante-la-cij-dice-que-su-equipo-juridico-merece-el-nobel-de-paz/202404/">demanda que promueve Sudáfrica en contra de su país</a> ante la Corte Internacional de Justicia, una acción que impulsó el expresidente Gustavo Petro.</p><p>En su momento, el exmandatario tomó la decisión de coadyuvar en esa acción judicial para <b>“contribuir de una manera tangible a la defensa de la causa palestina en el escenario judicial internacional”</b>.</p><p>Este fue el plan del gobierno Petro: “Invocando el mecanismo previsto en el artículo 63 del estatuto de la Corte, vamos a presentar ante la Corte <b>nuestra interpretación de las normas de la convención contra el genocidio que Israel</b> estaría ignorando con sus acciones militares en Gaza”.</p><p><a href="https://www.semana.com/mundo/articulo/abelardo-de-la-espriella-es-un-verdadero-amigo-de-israel-gideon-saar-canciller-de-israel-en-entrevista-con-semana/202631/" target="_blank" rel="noreferrer" title="https://www.semana.com/mundo/articulo/abelardo-de-la-espriella-es-un-verdadero-amigo-de-israel-gideon-saar-canciller-de-israel-en-entrevista-con-semana/202631/">Gideon Sa’ar</a>, el alto funcionario israelí, indicó en su cuenta de X que la promesa de Colombia se hizo efectiva: abandonó la demanda, tal como lo había conversado previamente con la administración de Abelardo De La Espriella.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/KXZUPSCLJVAPTD2KJ7J3LT3AGI.JPG?auth=0e95a61dc4cc31b7d8664dff87afc7f101e6fd59af7a022e14a3c055396e6f3e&smart=true&width=7844&height=5032" alt="Gideon Sa’ar, ministro de Relaciones Exteriores de Israel." height="5032" width="7844"/><p>“Agradezco a mi amigo, el presidente colombiano, Abelardo De La Espriella, el anuncio oficial de Colombia de <b>retirarse de la demanda falsa y maliciosa presentada por Sudáfrica contra Israel ante la CIJ</b>; una medida iniciada bajo el mandato del antisemita Petro”, relató el ministro.</p><p>Él detalló que esto se produjo luego de una conversación que sostuvo con el ministro de Relaciones Exteriores, <a href="https://www.semana.com/politica/articulo/cancilleria-reitero-que-se-fortalecera-la-relacion-con-israel-especialmente-por-temas-de-cooperacion-en-seguridad-e-inteligencia/202608/" target="_blank" rel="noreferrer" title="https://www.semana.com/politica/articulo/cancilleria-reitero-que-se-fortalecera-la-relacion-con-israel-especialmente-por-temas-de-cooperacion-en-seguridad-e-inteligencia/202608/">Omar Bula</a>, en Estados Unidos: “La amistad entre Israel y Colombia es más fuerte que nunca”.</p><p>La embajadora de Israel en Colombia también celebró la noticia: “Me uno a mi canciller, Gideon Sa’ar, para agradecer al Gobierno de Colombia por haber elegido el lado correcto de la historia y retirar su intervención en el caso promovido por Sudáfrica contra Israel ante la Corte Internacional de Justicia”.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MTDMX3ZC6ZEJNBKPZI52ZBCOLA.jpg?auth=736e0c3722789b9e30a830930c253c1e6704c5e205eba1524be051bc4d96acd4&amp;smart=true&amp;width=3275&amp;height=1833" type="image/jpeg" height="1833" width="3275"><media:description type="plain"><![CDATA[Colombia e Israel.]]></media:description><media:credit role="author" scheme="urn:ebu">Oleksii Liskonih</media:credit></media:content></item><item><title><![CDATA[El importante cambio que tienen el iPhone 18 Pro y Pro Max frente al iPhone 17: muchos usuarios lo pedían ]]></title><link>https://www.semana.com/tecnologia/articulo/el-importante-cambio-que-tienen-el-iphone-18-pro-y-pro-max-frente-al-iphone-17-muchos-usuarios-lo-pedian/202600/</link><guid isPermaLink="true">https://www.semana.com/tecnologia/articulo/el-importante-cambio-que-tienen-el-iphone-18-pro-y-pro-max-frente-al-iphone-17-muchos-usuarios-lo-pedian/202600/</guid><dc:creator><![CDATA[Valentina Castañeda Sierra]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:50:00 +0000</pubDate><content:encoded><![CDATA[<p>En materia de tecnología, uno de los lanzamientos más esperados del año fue el del iPhone 18. <a href="https://www.semana.com/tecnologia/articulo/iphone-18-pro-asi-funciona-la-nueva-camara-con-apertura-variable-que-eleva-la-fotografias-y-videos-a-otro-nivel/202651/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/iphone-18-pro-asi-funciona-la-nueva-camara-con-apertura-variable-que-eleva-la-fotografias-y-videos-a-otro-nivel/202651/">La nueva generación llegó con cambios frente al iPhone 17,</a> especialmente en el procesador, las cámaras y la autonomía, <b>uno de los aspectos que más peso tiene para quienes buscan renovar su celular.</b></p><p>Este año, además, Apple rompió con una tradición de su calendario de lanzamientos. <a href="https://www.semana.com/tecnologia/articulo/apple-no-presento-su-iphone-18-estandar-el-motivo-de-la-decision-que-tomo-por-sorpresa-a-todos-en-su-evento-de-lanzamiento/202642/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/apple-no-presento-su-iphone-18-estandar-el-motivo-de-la-decision-que-tomo-por-sorpresa-a-todos-en-su-evento-de-lanzamiento/202642/">El modelo estándar no llegará hasta 2027</a>, por lo que, por ahora, las únicas versiones disponibles son el iPhone 18 Pro y el iPhone 18 Pro Max.</p><p>Para muchos usuarios, antes de decidir una compra, uno de los factores más importantes es el rendimiento de la batería. Tener que buscar un cargador a mitad del día puede convertirse en una molestia, <b>sobre todo para quienes utilizan el teléfono para trabajar, ver videos o jugar durante varias horas.</b></p><h2><b>La mayor mejora en batería de los últimos años</b></h2><p>La compañía asegura que esta generación representa uno de los avances más importantes en autonomía dentro de la línea iPhone Pro. <b>La mejora no responde únicamente a una batería de mayor capacidad, sino también a un rediseño interno del dispositivo</b> y a la mayor eficiencia energética del nuevo chip A20 Pro, que reduce el consumo sin afectar el rendimiento.</p><p><b>Según explican, el iPhone 18 Pro ofrece hasta 34 horas de reproducción de video, mientras que el iPhone 18 Pro Max alcanza 43 horas,</b> una de las cifras más altas anunciadas por la marca. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/VG6O5HTKUZENDGZD3WUGZ3D434.jpg?auth=02ed379cc78086865f66668e8839ace2fdcf078556b9b1a13b410a20a5c3b102&smart=true&width=1920&height=1080" alt="Apple renovó su línea de teléfonos inteligentes con los nuevos iPhone 18 Pro e iPhone 18 Pro Max." height="1080" width="1920"/><p>Además, incorporó un nuevo sistema de medición basado en datos de uso real para reflejar con mayor precisión el comportamiento diario del dispositivo. <b>Bajo ese criterio, el iPhone 18 Pro Max puede ofrecer hasta 29 horas de uso con una sola carga.</b></p><h2><b>Así funciona la carga rápida</b></h2><p>La velocidad de carga también recibió mejoras en esta generación.</p><p>En el caso del Pro, el equipo puede recuperar hasta el 50 % de batería en aproximadamente 15 minutos mediante carga por cable. <b>Con carga inalámbrica, ese mismo nivel puede alcanzarse en alrededor de 30 minutos.</b></p><p>El Pro Max incorpora una función pensada para quienes necesitan energía en muy poco tiempo: <b>con apenas cinco minutos de carga por cable, puede ofrecer cerca de siete horas de reproducción de video, </b>una opción útil cuando el teléfono está a punto de quedarse sin batería antes de salir de casa. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4EUC5B2X4ZEQXP6UL7RADCG4LA.jpg?auth=86f1dedf8242a6d65f1501a568978594db90e0324baab9479e6f54aee84d4220&smart=true&width=594&height=396" alt="La compañía renovó su gama premium con los iPhone 18 Pro y Pro Max." height="396" width="594"/><p>La autonomía se ha convertido en una de las características más valoradas por los usuarios, incluso por encima de algunas mejoras en cámaras o diseño.</p><p>Con el iPhone 18 Pro y Pro Max, Apple busca responder a esa demanda combinando un procesador más eficiente, optimizaciones internas y un sistema de carga más rápido, <b>con el objetivo de que el teléfono pueda acompañar la jornada sin depender constantemente del cargador.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3TDGM3NCUJENHMG7SJFS2HD3G4.jpg?auth=e77da379daba3e176559289791fb9648e780c9e933fe5e43f810af43f467274e&amp;smart=true&amp;width=1920&amp;height=1080" type="image/jpeg" height="1080" width="1920"><media:description type="plain"><![CDATA[Apple asegura que el iPhone 18 Pro y el Pro Max ofrecen el mayor avance en autonomía de los últimos años.]]></media:description></media:content></item><item><title><![CDATA[Lulo Bank entra a la banca empresarial con una apuesta totalmente digital: así funciona su nuevo ecosistema]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/lulo-bank-entra-a-la-banca-empresarial-con-una-apuesta-totalmente-digital-asi-funciona-su-nuevo-ecosistema/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/lulo-bank-entra-a-la-banca-empresarial-con-una-apuesta-totalmente-digital-asi-funciona-su-nuevo-ecosistema/202600/</guid><dc:creator><![CDATA[Comercial ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:46:00 +0000</pubDate><content:encoded><![CDATA[<p>Abrir una cuenta bancaria o tener un producto financiero fue, por muchos años, sinónimo de largas horas de espera, trámites engorrosos, papeleos y cobros innecesarios. La llegada de la banca digital transformó esa realidad, facilitando a los usuarios condiciones favorables, sencillas y a la medida de sus necesidades financieras. </p><p>Con ese propósito fue que nació Lulo Bank, el primer banco ciento por ciento digital de Colombia. A lo largo de sus siete años de historia, este neobanco ha consolidado un portafolio de servicios que, además de cambiar las reglas de juego del sistema financiero, se convirtió en un referente internacional. <b>“Le demostramos a la gente que la banca podía funcionar diferente: sin trámites, sin papel y sin desplazamientos”</b>, explicó Ignacio Giraldo, CEO de Lulo Bank. </p><p>Después de siete años trabajando para las personas naturales, su siguiente paso fue inevitable: brindarles a las personas jurídicas la misma experiencia innovadora. Lo que se encontraron, sin embargo, los sorprendió: la banca empresarial seguía operando como lo hacía hace 20 años, con impresoras, huelleros, firmas físicas y mensajeros. </p><p>Lo que ya había desaparecido de la experiencia para una persona natural seguía siendo el día a día de las organizaciones. <b>“Por eso nuestro reto no era solo digitalizar esos trámites, sino construir una banca empresarial digital desde cero”,</b> precisó Giraldo. </p><p>Sumado a ese desafío, Lulo Bank encontró una brecha en el posicionamiento entre las personas jurídicas; muchas incluso los confundían con una billetera o una fintech de pagos. “Ahora lo primero que hacemos en cada conversación es explicar quiénes somos, un banco con licencia bancaria plena, vigilados por la Superintendencia Financiera y con respaldo del Grupo Gilinski”, detalló Giraldo. En otras palabras: “El aliado para su empresa”. </p><p><b>Lulo Bank Empresas nació como una solución ciento por ciento digital para dinamizar y facilitar las operaciones financieras de las personas jurídicas en Colombia.</b> En su plataforma, las empresas encuentran todo lo que necesitan para manejar su operación financiera en un solo lugar. La seguridad y el ahorro de tiempo son sus otras ventajas competitivas. </p><p>Esta eficiencia cobra especial relevancia en un país donde las MiPymes representan el 99,5 por ciento de las empresas formales, generan el 79 por ciento del empleo y aportan cerca del 40 por ciento del PIB, según cifras de la Organización para la Cooperación y el Desarrollo Económico (OCDE). </p><p>Para este tipo de compañías, explicaron desde la entidad, la digitalización puede contribuir a automatizar procesos, reducir costos y hacer más eficientes sus operaciones. “No se trata de un juicio, es un diagnóstico. La imagen más clara que tenemos es que para abrir una cuenta de empresa lo primero que se debe comprar es una impresora y un huellero. Estamos hablando de un rezago frente a estándares internacionales de décadas. La banca no tiene permiso para demorarse tanto, y ese es exactamente el espacio que venimos a ocupar”, precisó Giraldo.</p><p>Sin fricciones, con procesos transparentes y ágiles, <b>Lulo Bank Empresas busca transformar la banca corporativa tradicional a través de un ecosistema que concentre el capital de trabajo de pequeñas, medianas y grandes empresas, </b>para que ellas tengan aún más tiempo para seguir escalando sus negocios. </p><h2><b>Ecosistema completo </b></h2><p>En Lulo Bank Empresas las compañías podrán encontrar un robusto ecosistema financiero y gratuito, compuesto por soluciones como factoring ciento por ciento digital, tesorería con rentabilidad sobre saldos operativos, soluciones de capital de trabajo y pagos y transferencias a 950 pesos. </p><p>La plataforma, además,<b> ofrece el pago de nómina automatizado, procesos de recaudo, la firma de pagarés desmaterializados y la conexión directa de los sistemas empresariales al banco vía Host to Host, lo que posibilita eliminar la doble digitación.</b> A esto se suma el tradicional control, que funciona bajo un mecanismo dual: mientras una persona crea el pago la otra lo aprueba, con trazabilidad en todas las operaciones. </p><p>“Todo funciona a través de procesos ciento por ciento digitales, sin firma física, ni mensajero ni huellero”, recalcó el CEO de Lulo Bank. A la fecha, la solución ya impacta a 194 empresas, cuenta con 119 cuentas abiertas y acumula más de 25.700 millones de pesos en saldos administrados y casi medio billón de pesos movilizados por medio de las cuentas empresariales en lo corrido de 2026. </p><p><b>Lo cierto es que el impacto más inmediato que pueden ver las empresas con una operación digital responde al ahorro de tiempo.</b> Al eliminar el papeleo, los desplazamientos y la doble digitación, la operación financiera deja de consumir los días completos de los equipos administrativos. Por supuesto, la cuenta se abre de manera digital. </p><p>Al respecto, Giraldo señaló que su “objetivo no es competir por la red física”, sino por una operación digital de punta a punta, un servicio personalizado y tarifas transparentes. “Nuestra visión no es de confrontación, ya que la banca tradicional y la digital llegaron para complementarse, y a mayor competencia, mayor innovación. <b>El único favorecido siempre es el cliente final, que puede ser de sectores como el de la manufactura, retail, construcción, agro, logística, servicios o economía creativa”</b>, subrayó el CEO. </p><h2><b>Factoring, la gran apuesta </b></h2><p>Uno de los desafíos más complejos que enfrentan las empresas, especialmente las pequeñas y medianas, es mantener la suficiente liquidez para cubrir su operación mientras esperan el pago de sus clientes. Una compañía puede entregar un producto o prestar un servicio hoy y terminar recibiendo el pago varias semanas después, lo que además limita los recursos para pagar proveedores, nómina, comprar inventario o asumir nuevos negocios.</p><p>Aunque la Ley de Plazos Justos estableció un máximo de 45 días para el pago de determinadas operaciones mercantiles, en la práctica existen transacciones cuyos plazos se negocian hasta por 90 días. <b>Es precisamente durante esa espera cuando el factoring se convierte en una alternativa clave, pues permite a una empresa anticipar el cobro de sus facturas y obtener liquidez sin tener que esperar a que el cliente realice el pago.</b></p><p>El modelo de Lulo, que funciona de manera completamente digital, permite a las empresas acceder a liquidez sin comprometer sus cupos tradicionales de crédito bancario y, dependiendo de las condiciones de la operación, que los recursos no se registren como deuda financiera. </p><p>“Durante 2026 ya hemos desembolsado más de 100.000 millones de pesos entre soluciones de capital de trabajo y factoring, lo que muestra que la necesidad es real”, señaló Giraldo, quien puso sobre la mesa la demanda por este tipo de alternativas.<b> Según cifras de la DIAN, a julio de 2026 se habían inscrito en RADIAN 540.692 facturas electrónicas por 15,3 billones de pesos.</b></p><p>Finalmente, para Lulo Bank el crecimiento de estas soluciones hace parte de una apuesta más amplia, que consiste en trasladar al segmento empresarial la transformación que la banca digital ya produjo entre las personas.</p><p><i>*Contenido elaborado con el apoyo de Lulo Bank.</i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/IP27H22HTFHNHAG3FWMPZXTHN4.jpeg?auth=4653fce931e26a2bc3f5d7a3fda96c7f019040b905bc5f91d2168c66fcd526d7&amp;smart=true&amp;width=2560&amp;height=1707" type="image/jpeg" height="1707" width="2560"><media:description type="plain"><![CDATA[Lulo Bank Empresas ya impacta a 194
compañías y tiene 119 cuentas abiertas.]]></media:description></media:content></item><item><title><![CDATA[La nueva forma de aprender idiomas: el modelo flexible que combina IA e interacción humana                 ]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/la-nueva-forma-de-aprender-idiomas-el-modelo-flexible-que-combina-ia-e-interaccion-humana/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/la-nueva-forma-de-aprender-idiomas-el-modelo-flexible-que-combina-ia-e-interaccion-humana/202600/</guid><dc:creator><![CDATA[Comercial ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:45:00 +0000</pubDate><content:encoded><![CDATA[<p>Aunque la llegada de las plataformas digitales y los modelos de inteligencia artificial transformó la forma de aprender nuevos idiomas, facilitando el acceso a los contenidos y la gestión del tiempo, la interacción humana continúa siendo fundamental. No solo permite corregir errores, sino fortalecer la práctica, resolver dudas, recrear situaciones reales y desarrollar habilidades de socialización.</p><p><b>De esa combinación entre tecnología y acompañamiento humano parte la apuesta educativa de Smart Academia de Idiomas, </b>una institución con 29 años de experiencia y más de 300.000 estudiantes vinculados. La academia comenzó ofreciendo cursos corporativos y personalizados y, con el tiempo, se consolidó como una de las instituciones de idiomas más importantes del país.</p><p>“Sergio Bello, Gerente General, fundó la academia ofreciendo cursos de inglés a domicilio. <b>Así, trabajamos con grandes empresas y multinacionales hasta que inauguramos nuestra primera sede en Bogotá en 2005”</b>, recordó Mario Andrés Cetina, Gerente Comercial de Smart.</p><p>De la pandemia a la fecha el salto ha sido significativo: Smart pasó de tener 17 sedes educativas a 57, en ciudades como Bogotá, Medellín, Barranquilla y Sincelejo, y regiones como Cundinamarca, Antioquia, Valle del Cauca, Caldas, Santander, Eje Cafetero, Tolima y Meta. <b>A esto se suma un modelo que combina alternativas presenciales, virtuales y flexibles, aprovechadas incluso por estudiantes de países como España, Chile, Perú y Estados Unidos.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/S435XP3EHND5BKHSKBHIFEUADI.jpg?auth=ca39f6e66e3937fe6ec6651a6744134e89284023d6861241a7b4e71bd55162db&smart=true&width=2944&height=1968" alt="Smart cuenta con el respaldo de
Cambridge University Press and Assessment y Michigan Language Assessment." height="1968" width="2944"/><p>Este recorrido también le ha permitido a la institución identificar las principales motivaciones de los jóvenes para iniciar sus estudios y ajustar su propuesta a esas necesidades: <b>“Somos un puente entre los colombianos y sus sueños. </b>Desde Smart queremos que cuando una persona aprenda inglés y francés con nosotros pueda decir: ‘Gracias a Smart logré tener un mejor salario, un mejor puesto o viajar’”.</p><h2><b>Metodología en evolución </b></h2><p>Desde la pandemia, Smart Academia de Idiomas ha acelerado la incorporación de nuevas herramientas y metodologías. En 2020, por ejemplo, lanzó Smart Online, que cuenta con 5.000 estudiantes activos. <b>Su proceso de aprendizaje es autónomo, pero incluye acompañamiento personalizado y se adapta a los tiempos de cada alumno. </b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/TXXKT6ACJNGTJLPRVNOVNUJG64.JPG?auth=764115a489d221317663099f1148c659f58630b06f8ea4bbfd75da13b274dc23&smart=true&width=5568&height=3712" alt="Estudiantes de España, Chile, Perú y Estados Unidos hoy acceden a los servicios de Smart." height="3712" width="5568"/><p>Con la evolución del mercado también llegaron cursos como Smart Flex, que recrea la experiencia presencial en un entorno virtual mediante una plataforma en vivo, con grupos de máximo ocho personas, y Smart Mix, que propone una ruta de aprendizaje combinada.</p><p>“Al aprender nuevos idiomas, las personas todavía requieren la presencia de un ser humano que corrija y dé indicaciones. <b>En Smart, por ejemplo, hemos implementado prácticas con inteligencia artificial dentro de todos nuestros cursos, acompañadas permanentemente de un profesor.</b> Todavía hay muchas personas que prefieren aprender de manera presencial”, afirmó Cetina.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/RK24YZAHBNHI3E6BYUUFQHHAZU.jpg?auth=0a622ffefbcd508dee0b99bf97a591645c83e5e62113b4917761eb6a110f444b&smart=true&width=2944&height=1968" alt="Desde la pandemia, Smart Academia de
Idiomas ha acelerado la incorporación de
nuevas herramientas y metodologías" height="1968" width="2944"/><p>La tecnología también está presente en las aulas físicas. Entre las herramientas incorporadas se encuentran pantallas de 60 pulgadas para integrar juegos, series y diálogos que permiten a los estudiantes acercarse a situaciones de interacción con personas de otros países. La academia también cuenta con gafas de realidad virtual que recrean escenarios de la vida real.</p><p>Para Cetina, esta combinación ha sido una de las claves para mantenerse en un mercado cada vez más competido: <b>integrar las herramientas tecnológicas con el acompañamiento humano y construir un ecosistema de aprendizaje integral. </b></p><p>Finalmente, a esta propuesta se suman certificaciones de calidad como la ISO 9001 y las NTC 5555 y 5580, además de alianzas para la presentación de exámenes internacionales y el respaldo de Cambridge University Press and Assessment y Michigan Language Assessment.</p><p><i>*Contenido elaborado con el apoyo de Smart Academia de Idiomas. </i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZQGKQP7W3NGLPL7DVXFI2TGBOE.jpg?auth=4ea40aec0f954e47d1262155b3696e5c94dee412ac446f386431d08a131cef0c&amp;smart=true&amp;width=5184&amp;height=3456" type="image/jpeg" height="3456" width="5184"><media:description type="plain"><![CDATA[Hoy, Smart cuenta con 57 sedes distribuidas a lo largo y ancho del país.]]></media:description></media:content></item><item><title><![CDATA[Bienestar laboral y productividad. Esto es lo que deben saber las compañías para mejorar sus resultados ]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/bienestar-laboral-y-productividad-esto-es-lo-que-deben-saber-las-companias-para-mejorar-sus-resultados/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/bienestar-laboral-y-productividad-esto-es-lo-que-deben-saber-las-companias-para-mejorar-sus-resultados/202600/</guid><dc:creator><![CDATA[Comercial ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:45:00 +0000</pubDate><content:encoded><![CDATA[<p>Hay una pregunta que ha empezado a cambiar la conversación en las oficinas de Colombia: ¿cuánto le cuesta a una empresa que su gente no esté bien? Durante años, el bienestar estuvo asociado a beneficios o actividades. Pero mientras se suman empleadores, se reducen horas y la inteligencia artificial cambia tareas, esa idea resulta limitada. </p><p>Hoy el bienestar no es un asunto menor ni de pocas organizaciones. <b>En el primer trimestre de 2026, las empresas aportantes al Sistema de Compensación Familiar crecieron 4,2 por ciento y llegaron a unas 740.000, </b>mientras los trabajadores dependientes afiliados promediaron 8,53 millones, según Asocajas. </p><p>Para Juan Pablo Salazar, gerente comercial de la Unidad de Bienestar y Desarrollo Social de Compensar, la política de bienestar de ahora no se trata solo de acumular beneficios, sino de atender varias dimensiones de la vida de un trabajador: desde la salud física y psicológica hasta la estabilidad financiera, el desarrollo profesional y la formación continua.<b> “Cuando una sola de esas dimensiones falla, la persona entera falla. Y cuando la persona falla, el equipo lo siente, y cuando el equipo lo siente, los resultados lo reflejan. Por eso la pregunta es: ‘¿Cuánto nos está costando no invertir en nuestra gente”</b>, aseguró. </p><h2><b>El reto: productividad</b></h2><p>El asunto se vuelve más relevante cuando se mira la productividad. La OCDE calcula que Colombia generó en 2024 unos 18,7 dólares de valor agregado por hora trabajada; sin embargo, la brecha muestra que aumentar el tiempo de trabajo no garantiza mejores resultados. Desde julio de 2026, además, la jornada máxima en Colombia quedó en 42 horas semanales, sin reducción salarial, haciendo que las empresas reorganizaran sus procesos y cargas de trabajo.</p><p><b>“La presión, sin embargo, no es una estrategia sostenible”, precisó Salazar.</b> Su experiencia acompañando organizaciones le ha mostrado que la productividad tiene más relación con las condiciones que durante mucho tiempo quedaron por fuera de las conversaciones de negocio: “El problema de productividad en Colombia no es de horas trabajadas ni de tiempo, es de energía”.</p><p>Un estudio de Burnout Laboral 2025 de Buk, realizado con más de 5.700 trabajadores de Colombia, Chile, México y Perú, encontró que 46 por ciento había experimentado <i>burnout </i>y 14 por ciento lo había vivido con frecuencia. <b>En Colombia, el reporte ubicó en 13 por ciento a quienes lo experimentaban frecuentemente. </b></p><p>Según Salazar, el dato también llega a los niveles de liderazgo. “Nos están pidiendo estrategias que ayuden a sus líderes a sostener equipos bajo presión sin destruirlos en el proceso”, recalcó el gerente, destacando a un actor que suele quedar en segundo plano: el jefe inmediato. <b>“Un buen líder de área puede transformar el desempeño de 12 personas, pero uno que no sabe gestionar personas puede destruir lo que tardaron años en construir</b>”, añadió. </p><p>El avance de la tecnología ha añadido otra capa. El estudio EY Work Reimagined 2026 encontró que 92 por ciento de los trabajadores encuestados en Colombia utiliza herramientas de inteligencia artificial en su trabajo y 34 por ciento lo hace diariamente. También reportó un ahorro promedio de ocho horas semanales, aunque 58 por ciento señaló que su carga laboral aumentó durante el último año. Ganar tiempo con IA no necesariamente significa trabajar menos.</p><p>Salazar ve ahí una oportunidad para el bienestar: <b>“La inteligencia artificial tiene una promesa muy concreta en bienestar que todavía no se ha aprovechado bien en Colombia: la personalización a escala”. </b></p><p>A través de estos datos, explicó el gerente, una organización puede identificar necesidades distintas entre sus trabajadores y dejar de diseñar programas pensando en un empleado promedio: “Las organizaciones que ganan son las que acompañan la transformación tecnológica con bienestar emocional, no las que simplemente implementan herramientas”.</p><h2><b>La vida entra a la oficina</b></h2><p>Por otro lado, Salazar habla del “fin de la separación entre vida y trabajo”. El empleado tiene familia, cuentas, necesidades de salud y derecho a desconectarse. Lo que antes parecía un beneficio adicional empieza a ser parte de la decisión de permanecer en una organización. Por eso, dice, las compañías están pasando <b>“de ofrecer un catálogo de beneficios a construir propuestas de valor más personalizadas, como hacen con sus clientes”.</b></p><p>Asimismo, la dimensión financiera tendrá mayor peso en 2027. Para Salazar, una persona sometida a presión económica difícilmente deja esas preocupaciones en la puerta de la oficina. Por eso el bienestar empieza a conectarse con formación, liderazgo, compensación, productividad y retención. </p><p><b>“En Colombia, con la presión inflacionaria de los últimos años, el trabajador que no tiene estabilidad económica básica no puede ser productivo, por más actividades de bienestar emocional que le ofrezcamos.</b> Las empresas van a tener que entrar a ese terreno”, señaló Salazar. </p><p>Ese cambio implica entender al trabajador de manera integral. “Una persona que está bien, que descansa, que no arrastra preocupaciones financieras o de salud al trabajo, produce de una manera radicalmente distinta a una que llega agotada, aunque llegue puntual”, explicó Salazar. </p><p>Se trata entonces de una mirada que desplaza el bienestar de la lógica de los beneficios adicionales hacia una estrategia que busca intervenir las condiciones que pueden afectar el desempeño y la permanencia de las personas.</p><p>En ese sentido, la discusión es cómo medir qué producen esas inversiones.<b> Salazar cree que en 2027 las empresas exigirán retorno sobre la inversión en bienestar con una disciplina similar a la de marketing o tecnología. </b>Propone mirar ausentismo, rotación por áreas, relación con los líderes y uso efectivo de los beneficios. La diferencia, explica, está entre tener un catálogo y una estrategia.</p><p>En ese sentido, la evidencia internacional ha intentado poner números a esa relación. Gallup, en un metaanálisis de unidades de negocio, encontró que un mayor compromiso de los colaboradores genera un aumento del 17 por ciento en la productividad. Esta no es una medición específica de Colombia ni demuestra que una política concreta de bienestar produzca por sí sola esos resultados, pero ayuda a explicar por qué el compromiso y el bienestar dejó de ser un asunto exclusivo de recursos humanos y también empezó a interesarle a las áreas financieras.</p><p>“Desde Compensar hemos aprendido que los beneficios aislados generan satisfacción temporal. Lo que genera compromiso real es cuando el trabajador siente que la empresa lo ve como un ser completo, no solo como un recurso productivo”, explicó Salazar.<b> “Eso requiere integración entre el área comercial, recursos humanos y la alta dirección”. </b></p><p>Por eso, su recomendación para los empresarios es clara: “Siéntense con su área de talento y financiera a construir juntos el costo anual del malestar organizacional”. Allí entran la rotación, el ausentismo, las incapacidades y las oportunidades que se pierden cuando un equipo deja de responder como debería.<b> “Creemos que la pregunta ya no es si invertir en bienestar. La pregunta es cuánto están dejando de ganar por no haberlo hecho antes”</b>, concluyó Salazar. </p><p><i>+Contenido elaborado con el apoyo de Compensar. </i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6QKFUB2QEBGKTCES3VPYLWAVPM.jpeg?auth=9dc5337a2914b42f40f48215dec59b829ffb56acf0dfab522047cc7d236f1faf&amp;smart=true&amp;width=8001&amp;height=5337" type="image/jpeg" height="5337" width="8001"><media:description type="plain"><![CDATA[Para Compensar, las organizaciones que ganan son las que acompañan la transformación tecnológica con bienestar emocional.]]></media:description></media:content></item><item><title><![CDATA[¿Por qué son tan importantes los páramos en Colombia y el mundo? Esta es la razón por la que hay que protegerlos]]></title><link>https://www.semana.com/sostenible/articulo/por-que-son-tan-importantes-los-paramos-en-colombia-y-el-mundo-esta-es-la-razon-por-la-que-hay-que-protegerlos/202600/</link><guid isPermaLink="true">https://www.semana.com/sostenible/articulo/por-que-son-tan-importantes-los-paramos-en-colombia-y-el-mundo-esta-es-la-razon-por-la-que-hay-que-protegerlos/202600/</guid><dc:creator><![CDATA[Juan Felipe Castaño Vanegas]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:40:00 +0000</pubDate><content:encoded><![CDATA[<p>Cuando se habla de los ecosistemas más importantes para el planeta, los páramos ocupan un lugar particular. Aunque se encuentran en zonas de gran altura y representan una parte relativamente pequeña del territorio,<a href="https://www.semana.com/turismo/articulo/el-destino-de-cundinamarca-con-aguas-termales-y-una-montana-rodeada-de-historias-sobre-ovnis-y-misterios/202609/" target="_blank" rel="" title="https://www.semana.com/turismo/articulo/el-destino-de-cundinamarca-con-aguas-termales-y-una-montana-rodeada-de-historias-sobre-ovnis-y-misterios/202609/"> su función va mucho más allá de los paisajes que ofrecen en las montañas.</a> </p><p>Colombia tiene una relación especialmente importante con los páramos, ya que concentra cerca de la mitad de estos identificados en el mundo, <b>distribuidos principalmente entre las tres cordilleras y la Sierra Nevada de Santa Marta.</b> Esta presencia convierte al territorio nacional en uno de los lugares más importantes del planeta para la conservación de estos ecosistemas.</p><p>Una de las principales funciones de estos ecosistemas está relacionada con el agua, debido a que cuentan con humedales, lagunas y vegetación, capaces de almacenar y regular este recurso, permitiendo que sea liberado progresivamente hacia las zonas ubicadas a menor altura.</p><p>El Ministerio de Ambiente señala que <b>los páramos son fundamentales para el abastecimiento de agua de más del 70 % de la población colombiana. </b>Esto significa que millones de personas dependen, directa o indirectamente, de los servicios que prestan estos ecosistemas, incluso cuando viven a cientos de kilómetros de las zonas donde se encuentran. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/UAGKQJJ4XNCMREGD2XFNYYIETA.jpg?auth=b238bb1c1856d79f6fe2b6b9e264840dcc1a22adc6252ee79cd562cda648e9bb&smart=true&width=2121&height=1414" alt="El Páramo de Ocetá es uno de los grandes atractivos naturales de Monguí, en Boyacá." height="1414" width="2121"/><p>Su importancia también alcanza actividades como la agricultura y la generación de energía, que requieren disponibilidad de agua para su funcionamiento. Por eso, cualquier alteración significativa de estos ecosistemas puede tener consecuencias que van mucho más allá de sus límites geográficos.</p><p>Por otro lado, estas zonas de alta montaña <b>también albergan una gran diversidad de especies que se han adaptado a condiciones ambientales particulares.</b> Entre ellas se encuentran los frailejones, una de las plantas más representativas de los paisajes de páramo, además de diferentes especies de plantas, aves, anfibios y otros organismos.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6TPFGEM6M5DCTP553ARGIO3LTY.jpeg?auth=abcdb7f982d1a3f7069c9a487ffa53c5b7efdfc1d9ab62bbcac288cf7e500821&smart=true&width=1600&height=1062" alt="El oso de anteojos, símbolo de salud ambiental: más registros en cordilleras y páramos" height="1062" width="1600"/><p>Algunas de estas especies tienen distribuciones muy reducidas y dependen de las condiciones específicas de estos territorios para sobrevivir. Por esta razón, la conservación de los páramos también representa una tarea fundamental para proteger la biodiversidad.</p><p>Asimismo, los páramos son ecosistemas especialmente sensibles a las modificaciones de temperatura y de los patrones de lluvia, <b>por lo que los cambios ambientales pueden alterar las condiciones que permiten su funcionamiento. </b>Al mismo tiempo, conservarlos ayuda a mantener los servicios ambientales de los que dependen las poblaciones humanas.</p><p>Por eso, hablar de los páramos no significa únicamente hablar de montañas, frailejones o paisajes naturales. Se trata de ecosistemas que conectan directamente la conservación de la naturaleza con necesidades fundamentales de las sociedades. <b>Protegerlos significa preservar fuentes de agua, hábitats para numerosas especies y reservas naturales</b>.</p><p><a href="https://www.semana.com/sostenible/medio-ambiente/articulo/como-ahorrar-agua-al-banarse-el-truco-que-puede-reducir-hasta-un-10-el-consumo-mensual-y-evitar-el-desperdicio/202607/" target="_blank" rel="" title="https://www.semana.com/sostenible/medio-ambiente/articulo/como-ahorrar-agua-al-banarse-el-truco-que-puede-reducir-hasta-un-10-el-consumo-mensual-y-evitar-el-desperdicio/202607/">En Colombia, donde millones de personas dependen del agua </a>regulada por estos territorios, su conservación adquiere una dimensión todavía mayor. Lo que ocurre en las partes más altas de las montañas puede terminar teniendo efectos en ciudades, cultivos, ríos y comunidades ubicadas mucho más abajo.</p><p>Esa es precisamente la razón por la que los páramos son considerados estratégicos: aunque ocupan espacios relativamente pequeños y muchas veces se encuentran alejados de los grandes centros urbanos, cumplen funciones ambientales de las que dependen millones de personas en Colombia y forman parte de un patrimonio natural de importancia para toda la región andina. </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/P5YC7M5JE5GJTBURKCBJSWW2KE.jpg?auth=17bd0599ee990d041bc41dbd3607809b219d7548692a14a602ad735fa0469d53&amp;smart=true&amp;width=5616&amp;height=3072" type="image/jpeg" height="3072" width="5616"><media:description type="plain"><![CDATA[El Nudo o Páramo de Santurbán se encuentra ubicado en la zona limítrofe de los Santanderes. ]]></media:description></media:content></item><item><title><![CDATA[Yina Calderón arremetió contra James Rodríguez y lanzó dura crítica: “Pésimo rendimiento”]]></title><link>https://www.semana.com/gente/articulo/yina-calderon-arremetio-contra-james-rodriguez-y-lanzo-dura-critica-pesimo-rendimiento/202600/</link><guid isPermaLink="true">https://www.semana.com/gente/articulo/yina-calderon-arremetio-contra-james-rodriguez-y-lanzo-dura-critica-pesimo-rendimiento/202600/</guid><dc:creator><![CDATA[Laura Camila Másmela Bernal]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:30:00 +0000</pubDate><content:encoded><![CDATA[<p>Yina Calderón volvió a generar conversación en redes sociales tras referirse a <a href="https://www.semana.com/gente/articulo/james-rodriguez-es-nuevo-jugador-de-atletico-nacional-maluma-y-blessd-reaccionaron-al-fichaje/202635/" target="_blank" rel="noreferrer" title="https://www.semana.com/gente/articulo/james-rodriguez-es-nuevo-jugador-de-atletico-nacional-maluma-y-blessd-reaccionaron-al-fichaje/202635/"><b>James Rodríguez</b></a> y cuestionar el rendimiento que, en su opinión, ha mostrado el futbolista colombiano. La empresaria y creadora de contenido habló del jugador durante una transmisión en vivo<b>, en la que reaccionó a su llegada al Atlético Nacional y también mencionó a otras figuras de la Selección Colombia.</b></p><p>La creadora de contenido se refirió al recibimiento que tuvo James Rodríguez en Atlético Nacional. Aunque destacó al club antioqueño como uno de los equipos más importantes del país, cuestionó que el futbolista continúe teniendo oportunidades en medio de lo que considera un bajo desempeño deportivo.</p><p>“Que James se sienta bien atendido, que el Nacional, que para mí es uno de los mejores equipos de Colombia, lo recibió y le pagó porque <b>para mí James Rodríguez y unos cuantos se debieron haber quedado sin trabajo esta temporada”,</b> expresó.</p><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@nova.byalejo/video/7684439424997821716" data-video-id="7684439424997821716" data-embed-from="oembed" style="max-width:605px; min-width:325px;"> <section> <a target="_blank" title="@nova.byalejo" href="https://www.tiktok.com/@nova.byalejo?refer=embed">@nova.byalejo</a> <p>La influenciadora Yina Calderón reaccionó a un vídeo del creador de contenido La Liendra hablando sobre la llegada de James Rodríguez al Atlético Nacional y también sobre la selección Colombia ¿Que te parece? </p> <a target="_blank" title="♬ sonido original - NOVA Studio" href="https://www.tiktok.com/music/sonido-original-7684439539328846610?refer=embed">♬ sonido original - NOVA Studio</a> </section> </blockquote> <script async src="https://www.tiktok.com/embed.js"></script><p>Calderón también habló sobre la preparación física del futbolista y aseguró que, desde su perspectiva, no entiende que se mantengan ciertas oportunidades cuando no observa el rendimiento que espera de un jugador de su trayectoria.</p><p>“Yo no sé nada de fútbol, pero por lógica,<b> ¿cómo se le ocurre que le haga trabajo a un ‘pabazoso’ que ni siquiera entrena, que ni siquiera muestra rendimiento, </b>que no hace absolutamente nada más que sentarse en un banco a calentarlo?”, dijo durante la transmisión.</p><p>Finalmente, Yina relacionó el desempeño de los futbolistas con el impacto que tienen sus actuaciones en los aficionados y en distintos sectores de la economía. Según explicó, los resultados de la Selección también pueden influir en comerciantes que realizan inversiones alrededor de los grandes torneos.</p><p>“Yo soy colombiana, y yo vi cuántos comerciantes invirtieron en camisetas, en muchas cosas para el Mundial, <b>esperando que al menos llegáramos al partido de Argentina, porque eso ayuda el comercio de mi país”,</b> manifestó.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QQBHLQQULVGWJO7UVPTLLGGUXA.jpg?auth=2707cb43ae4dccbb5dadcf9d38c53fec52a1883e73bc4a51b085006b074dc403&smart=true&width=2048&height=1152" alt="La camiseta de James Rodríguez" height="1152" width="2048"/><p>En ese sentido, Calderón cuestionó los altos salarios de los jugadores y cerró su reflexión haciendo un llamado al compromiso con el país: <b>“Lo mínimo que ellos pueden tener con nosotros es sentido patriota”.</b></p><p>Las declaraciones rápidamente llamaron la atención de los usuarios en redes sociales, especialmente por el tono utilizado por la empresaria al hablar de James Rodríguez y de otros referentes del fútbol colombiano.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MYIWSKRNWRBC7JKIZ5HVHJF5IE.png?auth=b97ae7133172f1ab12c2c37724764456ca1d1ee1f04747ac809f0bb0fec11f65&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Yina Calderón, empresaria y creadora de contenido, y James Rodríguez, destacado futbolista colombiano. ]]></media:description></media:content></item><item><title><![CDATA[Sismo de magnitud 5,2 se registró en Perú este sábado: esto se sabe]]></title><link>https://www.semana.com/mundo/articulo/sismo-de-magnitud-52-se-registro-en-peru-este-sabado-esto-se-sabe/202634/</link><guid isPermaLink="true">https://www.semana.com/mundo/articulo/sismo-de-magnitud-52-se-registro-en-peru-este-sabado-esto-se-sabe/202634/</guid><dc:creator><![CDATA[Margarita Briceño Delgado]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:25:34 +0000</pubDate><content:encoded><![CDATA[<p>El movimiento telúrico fue localizado en Condorcanqui, Amazonas, Perú. El Servicio Geológico Colombiano lo reportó como un evento sísmico internacional y señaló una profundidad superficial.</p><p>Un sismo de <b>magnitud 5,2</b> <b>fue registrado durante la madrugada de este sábado 19 de septiembre en Perú</b>, según el reporte actualizado del Servicio Geológico Colombiano (SGC).</p><p>De acuerdo con el boletín publicado por la entidad, el evento ocurrió a las 2:12 a. m., hora local, y tuvo como referencia Condorcanqui, en el departamento de Amazonas, Perú.</p><p>El SGC clasificó el movimiento como un “Evento Sísmico Internacional” y señaló que tuvo una profundidad superficial. La información corresponde al boletín actualizado número 1 emitido por la entidad.</p><h2>¿Dónde ocurrió el sismo?</h2><p><b>El epicentro reportado se encuentra en Condorcanqui, territorio peruano</b>, por lo que el movimiento no tuvo su origen en el sur de Colombia.</p><p>Hasta el momento, el reporte compartido por el SGC corresponde a la información disponible sobre la ubicación, magnitud y profundidad del evento.</p><p>Por la magnitud registrada, el movimiento fue ubicado en el <b>rango de alerta amarillo</b> utilizado por el Centro Sismológico Nacional del IGP para los sismos entre 4,5 y 6,0. </p><p>Esta clasificación hace parte del sistema de referencia utilizado por la entidad para informar sobre la actividad sísmica en Perú. </p><p>Perú se encuentra ubicado en la zona conocida como Cinturón de Fuego del Pacífico, región que concentra el 75% de los volcanes que existen en el mundo y donde suceden aproximadamente el 80% de los sismos más fuertes del mundo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/WBX2WXALM5H4VABROHZPYHNEOE.jpg?auth=419df948d0d15def29ced9db36ea3a497a629adfd3e927667f9fd0e477d46c1d&smart=true&width=1600&height=900" alt="El movimiento telúrico fue registrado durante la madrugada de este sábado en la región de Amazonas, Perú." height="900" width="1600"/><p>Perú tiene un amplio historial de fuertes terremotos. Tras la catástrofe de 1970, el Gobierno creó en 1972 el Instituto Nacional de Defensa Civil (INDECI) para fortalecer la preparación ante desastres y promover simulacros.</p><p>Entre los eventos más graves se encuentran el sismo de Lima de 1974, de magnitud 8,0, que dejó 252 muertos; el terremoto de 1990, de magnitud 6,4, con 77 fallecidos y más de 11.000 viviendas destruidas; y el terremoto de 2001, de magnitud 6,9, que afectó el sur del país, dejó 74 muertos y provocó un tsunami.</p><p>En 2007, el terremoto de Pisco, de magnitud 8,0, dejó 596 personas fallecidas, mientras que en 2019 un sismo de magnitud 8,0 en Loreto causó una muerte y afectó a más de 2.500 personas.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QKATTS3IDZGHPGEWYHYN5BKTWU.jpg?auth=c07b8639c8e96e909d94e2dfdb5716c2c6ed6bd6430051887c1af99b37da1a97&smart=true&width=2127&height=1409" alt="Identificar las rutas de evacuación es clave para saber cómo actuar y salir de manera segura durante una emergencia." height="1409" width="2127"/><h2>¿Qué hacer si siente un temblor?</h2><ul><li><b>Mantenga la calma y recuerde: agáchese, cúbrase y sujétese.</b></li><li>Proteja la cabeza y el cuerpo de objetos que puedan caer.</li><li>Aléjese de ventanas, vidrios, estanterías y muebles que puedan desprenderse.</li><li>No corra hacia las escaleras ni salga apresuradamente mientras el movimiento continúe.</li><li><b>Cuando termine el sismo, revise el lugar antes de desplazarse y verifique posibles daños.</b></li><li>Si hay riesgo, siga las indicaciones de los organismos de emergencia.</li><li>El SGC también monitorea sismos ocurridos fuera de Colombia que puedan registrarse o sentirse en el país.</li></ul>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SMJUY4R2XJH2VOWE3LH6LH2EPI.jpg?auth=49075ba3d8cb8f330a87d6591148f5b01b4693a8b0d53e49da1eed20ca33518c&amp;smart=true&amp;width=1600&amp;height=900" type="image/jpeg" height="900" width="1600"><media:description type="plain"><![CDATA[El sismo de magnitud 5,2 tuvo como referencia la zona de Condorcanqui, en Amazonas, Perú.]]></media:description></media:content></item><item><title><![CDATA[Gremio de moteros pronostica lo que podría pasar si se implementa el pico y placa para motocicletas en Bogotá]]></title><link>https://www.semana.com/vehiculos/articulo/gremio-de-moteros-pronostica-lo-que-podria-pasar-si-se-implementa-el-pico-y-placa-para-motocicletas-en-bogota/202600/</link><guid isPermaLink="true">https://www.semana.com/vehiculos/articulo/gremio-de-moteros-pronostica-lo-que-podria-pasar-si-se-implementa-el-pico-y-placa-para-motocicletas-en-bogota/202600/</guid><dc:creator><![CDATA[Julián Mateo Candela Suescún]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:20:00 +0000</pubDate><content:encoded><![CDATA[<p>Uno de los desafíos más importantes que tiene <a href="https://www.semana.com/vehiculos/articulo/conductores-de-bogota-tendran-voz-en-materia-de-movilidad-y-seguridad-asi-es-la-primera-mesa-distrital-que-firmo-el-alcalde-galan/202648/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/conductores-de-bogota-tendran-voz-en-materia-de-movilidad-y-seguridad-asi-es-la-primera-mesa-distrital-que-firmo-el-alcalde-galan/202648/">Bogotá </a>hoy en día es en materia de seguridad; <b>el constante incremento de vehículos en la ciudad, además de las múltiples obras, deriva en altos niveles de congestionamiento. </b></p><p>Estos hechos se presentan sobre todo en la conocida “hora pico”, en donde varios usuarios de carros duran horas atrapados en largos trancones para poder dirigirse a sus hogares.</p><p>Es por ello que, durante varios años,<b> el distrito ha estado implementando varias restricciones para brindar una mejor circulación vehicular en la capital de Colombia</b>, siendo una de estas el <a href="https://www.semana.com/vehiculos/articulo/se-puede-eliminar-la-exencion-del-pico-y-placa-a-carros-electricos-e-hibridos-en-bogota-la-duda-que-ya-debatio-la-alcaldia-galan/202607/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/se-puede-eliminar-la-exencion-del-pico-y-placa-a-carros-electricos-e-hibridos-en-bogota-la-duda-que-ya-debatio-la-alcaldia-galan/202607/">Pico y Placa</a>. </p><p>Este sistema se encarga de restringir durante un determinado tiempo el paso de vehículos, <b>buscando que las zonas de la ciudad tengan una mejor movilidad, sobre todo en aquellos puntos que registran altos niveles de embotellamiento. </b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/6GAVR4UIRJB7NHQH2TMURONG6A.jpg?auth=6374a7eab67422858595661c728e1ddbd653c574bb899679450ea7641e7d1124&smart=true&width=1280&height=720" alt="El Pico y Placa es una de las medidas utilizadas en Bogotá para regular la circulación de vehículos particulares." height="720" width="1280"/><p>En el caso de Bogotá, los vehículos a los que se les implementa esta medida son los carros particulares y taxis, <b>quedando exentas del pico y placa las motocicletas. </b></p><p>Sin embargo, durante muchos años, <b>se ha comentado en reiteradas ocasiones acerca de también implementar esta </b><a href="https://www.semana.com/vehiculos/articulo/el-futuro-de-las-motos-en-bogota-como-las-ve-la-administracion-galan-y-habra-pico-y-placa/202645/" target="_blank" rel="noreferrer" title="https://www.semana.com/vehiculos/articulo/el-futuro-de-las-motos-en-bogota-como-las-ve-la-administracion-galan-y-habra-pico-y-placa/202645/"><b>restricción en las motos</b></a><b>, teniendo en cuenta aspectos como la congestión vial y la accidentalidad</b>, en donde las mayores víctimas que se presentan en Bogotá son los usuarios de este medio de transporte. </p><p>En diálogo con <i>SEMANA</i>, el líder del gremio de moteros, Miguel Andrés Forero, <b>comentó acerca de las repercusiones que se podrían presentar para los millones de bogotanos que transitan por el distrito gracias a este vehículo. </b></p><h2>El pronóstico del sector motero</h2><p>En palabras de Forero, el crecimiento de motocicletas es algo que no se puede parar, ya que<b> es algo mucho más fácil de adquirir económicamente que un carro. </b></p><p>Sin embargo, comenta que <b>la mayoría de los ciudadanos no están comprando una motocicleta por lujo, sino en respuesta a la movilidad de la ciudad</b>, al ser muy propensa a congestionamientos y tráficos.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/NYNWYPHJBBAQVGTZ5B4HD2EUOQ.jpg?auth=2afaa0ce58cfb97a30d511bc2a1bcb156f8bf7838825eec9af25c0344bcd5bba&smart=true&width=4000&height=3000" alt="El gremio de motociclistas pidió analizar otras medidas antes de establecer nuevas restricciones para las motos en Bogotá." height="3000" width="4000"/><p>Para el líder del sector motero, mucha de la gente que compra moto en la ciudad pertenece a estratos 1, 2 y 3, en donde la razón de que se movilicen por medio de este vehículo es debido a que viven en zonas demasiado apartadas. </p><p>“Coloco un ejemplo de Los Tanques, en Ciudad Bolívar, que es la parte más alta. <b>Una persona promedio, en el tema de transporte público, se puede gastar casi una hora y media solo para bajar al Portal, porque no da abasto, las vías no están adaptadas y hay muchísima población. En cambio, en una motocicleta se puede demorar 15 minutos</b>”, comenta. </p><p>Al tener esta alternativa de movilidad para cientos de ciudadanos en la capital,<b> Forero no cree que una posible implementación del Pico y Placa para motocicletas ayude a brindar soluciones a Bogotá</b>, sino que, de lo contrario, traería más problemáticas. </p><p>Uno de sus puntos se basa en la compra de más vehículos, ya que algunos usuarios, <b>al verse afectados por la restricción de movilidad, se verían obligados a comprar otra moto</b>, derivando así en la misma problemática que se vive en la capital. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/A43YZW5UK5C5LPIBY2HEJ3NMU4.jpg?auth=f288be40ca10894fb59621739f55744f17d3a3f4da1287fe90ec29571a4c9ff7&smart=true&width=7126&height=4753" alt="Una eventual restricción para las motos en Bogotá podría generar cambios negativos en la movilidad de los ciudadanos, según el gremio." height="4753" width="7126"/><p>“El tema es que va a pasar lo mismo si llegan a colocar un Pico y Placa, pues la gente se va a comprar dos motos y entonces<b> lo que vamos a hacer no es solucionar el problema, sino agrandarlo</b>”, señaló.</p><p>Teniendo en cuenta esto, el líder de moteros planteó que, previo a establecer una restricción para las motocicletas, <b>se tienen que revisar otras opciones que estén relacionadas con la infraestructura vial y la renovación del parque automotor. </b></p><p>“Creo que hay que pensar ya en una chatarrización y <b>empezar a sacar todo este parque automotor que lo único que hace es congestionar las ciudades</b> y que le hace daño tanto al medio ambiente como a la movilidad”, sostuvo.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/SXXBYRJIZJFNROS2G6CTKZONK4.jpg?auth=4afbd6dab51042cd5ed6799e1770b05422647dd03a5867ca58cf277c29860c2e&smart=true&width=1000&height=530" alt="El sector motero planteó la ampliación de vías y reglas más claras como parte de las alternativas para mejorar la movilidad en Bogotá." height="530" width="1000"/><p>Adicionalmente, Forero apoya la idea de que, para mejorar la circulación vehicular, no solamente se tiene que concentrar en restringir la circulación de motociclistas, sino en también ampliar la infraestructura de la ciudad, además de dejar en claro ciertas reglamentaciones. </p><p><b>“Yo creo que acá lo que toca es empezar a ampliar vías, a colocar reglas más claras”, manifestó.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZF32RG2MSFDJRMPYKUI5J76ZHQ.jpg?auth=16415fdc82bda502c4ded4710460768be4812162755b9612ce85f6bb68e92856&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[El crecimiento del número de motocicletas en Bogotá ha abierto nuevamente el debate sobre una posible restricción para este tipo de vehículos.]]></media:description></media:content></item><item><title><![CDATA[Resultados de las loterías Medellín, Santander y Risaralda: números ganadores de este viernes 18 de septiembre]]></title><link>https://www.semana.com/loterias/articulo/resultados-de-las-loterias-medellin-santander-y-risaralda-numeros-ganadores-de-este-viernes-18-de-septiembre/202606/</link><guid isPermaLink="true">https://www.semana.com/loterias/articulo/resultados-de-las-loterias-medellin-santander-y-risaralda-numeros-ganadores-de-este-viernes-18-de-septiembre/202606/</guid><dc:creator><![CDATA[David Alejandro Rojas García]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:15:06 +0000</pubDate><content:encoded><![CDATA[<p>Este viernes 18 de septiembre se realizaron los sorteos de las loterías de Medellín, Santander y Risaralda, que pusieron en juego diferentes premios durante la jornada. <b>Estos son los resultados de los tres sorteos y las respectivas series.</b></p><h2>Lotería de Medellín: resultado de hoy, 18 de septiembre</h2><p>La Lotería de Medellín llevó a cabo este viernes su sorteo habitual, en el que quedó definido el número correspondiente al premio mayor y la serie que lo acompaña.</p><ul><li><b>Número ganador:</b> 8535</li><li><b>Serie:</b> 183</li></ul><iframe width="560" height="315" src="https://www.youtube.com/embed/SeZTMwnYntM?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="Resultado LOTERIA DEL MEDELLIN Viernes 18 de Septiembre 2026"></iframe><p>Los participantes pueden comparar estos datos con los registrados en sus billetes y revisar las demás categorías de premios.</p><h2>Lotería de Santander: número ganador y serie</h2><p>La Lotería de Santander también realizó este viernes 18 de septiembre su respectivo sorteo, con un premio mayor y diferentes categorías contempladas dentro de su plan de premios.</p><ul><li><b>Número ganador:</b> 0937</li><li><b>Serie:</b> 278</li></ul><iframe width="560" height="315" src="https://www.youtube.com/embed/xATjw6huq0Y?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="Resultado LOTERIA DE SANTANDER Viernes 18 de Septiembre 2026"></iframe><p>El número y la serie corresponden al resultado principal de la jornada y permiten verificar los billetes participantes.</p><h2>Lotería de Risaralda: resultado y número ganador</h2><p>La Lotería de Risaralda completó la jornada de este viernes con su sorteo, en el que se definieron las cifras correspondientes al premio mayor.</p><ul><li><b>Número ganador:</b> 6711</li><li><b>Serie:</b> 284</li></ul><iframe width="560" height="315" src="https://www.youtube.com/embed/KFhEyxdC9iY?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="Resultado LOTERIA DEL RISARALDA Viernes 18 de Septiembre 2026"></iframe><p>Para comprobar si un billete obtuvo un premio, es necesario revisar los datos completos y compararlos con la información oficial de cada lotería.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZJ2ELX7PQBBTPFLQ5R5DXLWRZU.png?auth=eb8d4b91544f4ee2014718fd683dfb0c0c4b71f02ce8821ac95bfb019318bc1d&amp;smart=true&amp;width=1280&amp;height=720" type="image/png" height="720" width="1280"><media:description type="plain"><![CDATA[Los jugadores ya pueden consultar los resultados de los sorteos realizados este viernes.]]></media:description><media:credit role="author" scheme="urn:ebu"></media:credit></media:content></item><item><title><![CDATA[Medicina prepagada y accesible: la apuesta de MedPlus y Azul CIMA por una atención integral para los colombianos]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/medicina-prepagada-y-accesible-la-apuesta-de-medplus-y-azul-cima-por-una-atencion-integral-para-los-colombianos/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/medicina-prepagada-y-accesible-la-apuesta-de-medplus-y-azul-cima-por-una-atencion-integral-para-los-colombianos/202600/</guid><dc:creator><![CDATA[Comercial ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:14:00 +0000</pubDate><content:encoded><![CDATA[<p>No es la regla para todos, pero una consulta médica puede empezar con una molestia aparentemente sencilla y terminar en una cirugía, una unidad de cuidado intensivo o la necesidad de que varios especialistas intervengan en el diagnóstico. En ese recorrido, el reto no es solo encontrar médicos y tecnología de punta, sino lograr que todas las piezas encajen.</p><p>Esa es una de las preguntas que MedPlus se planteó después de 35 años de operación:<b> cómo pasar de ofrecer servicios de salud a construir una experiencia en la que distintas capacidades puedan responder de manera articulada cuando un paciente las necesita. </b>La respuesta se materializa en Azul CIMA, el complejo que reúne atención ambulatoria, urgencias, hospitalización y servicios de alta complejidad.</p><p>Pero para entender por qué la compañía llegó hasta aquí es necesario volver a 1991. MedPlus nació como Cafesalud Medicina Prepagada, con un propósito ligado a los trabajadores de la Federación Nacional de Cafeteros. Era una organización pensada para una comunidad específica.</p><p>Tres décadas y media después, la compañía ha construído una operación con presencia nacional y, según sus cifras actuales, <b>16 planes de salud y más de 111.000 usuarios. Ese cambio también modificó la pregunta sobre qué significa cuidar a una persona.</b></p><p>“Uno de los mayores aprendizajes durante estos 35 años es que la salud dejó de entenderse únicamente como la atención de una enfermedad”, explicó Carlos Mario González Ospina, presidente ejecutivo de MedPlus Medicina Prepagada. </p><p>Las personas, agregó González, buscan una compañía que las acompañe, conozca sus necesidades y les brinde tranquilidad en los momentos importantes de su vida: <b>“No buscan solamente servicios médicos; buscan confianza, oportunidad, cercanía y una experiencia de atención en la que ellos y sus familias sean el centro”.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HWDVOQ42VJEN7A65ZEIIQ3T6OY.png?auth=5d7fc7b0a54b847a4930ea16f7bcbbd015e07367c326d6100e6ca08372b66d74&smart=true&width=6000&height=4000" alt="Azul CIMA: un robusto ecosistema médico que opera con tecnología de punta." height="4000" width="6000"/><h2><b>Ampliar el acceso</b></h2><p>Para MedPlus democratizar el acceso a la medicina prepagada ha significado cambiar la percepción de que este servicio está dirigido únicamente a unos pocos y ofrecer alternativas para diferentes necesidades y capacidades económicas. Su apuesta parte de entender el aseguramiento como una decisión de prevención y respaldo, y no únicamente como una forma de acceder a servicios cuando aparece una enfermedad.</p><p>Hoy la compañía cuenta con 16 planes dirigidos a distintos perfiles.<b> El presidente de MedPlus sostiene que el objetivo es que cada persona pueda encontrar una opción acorde con sus necesidades y posibilidades. </b>“El mejor plan de salud es aquel que permite estar preparado antes de necesitarlo”, precisó. Por eso, el reto es acercar ese modelo a personas que todavía no han contemplado tener medicina prepagada y mostrarles que existen alternativas para diferentes presupuestos.</p><h2><b>Azul CIMA integra capacidades</b></h2><p>Esa búsqueda de mayor acceso convive con otra transformación: <b>la de la infraestructura donde se presta la atención. </b>Azul CIMA nació de la alianza entre MedPlus, Clínica Azul y BlueCare, con el propósito de reunir en un mismo ecosistema capacidades médicas, tecnológicas y humanas que suelen intervenir en distintos momentos de un proceso de atención en salud.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/N7Q7WFRCOJH4JBPUQOKDRDDKVA.jpg?auth=ab4ff61cdebac6b68fcc2a97fa60dd96ba81f0733a9b95e8b7d1a4ca14c85db2&smart=true&width=6240&height=4160" alt="A 35 años de su nacimiento, MedPlus tiene una apuesta clara: que las personas entiendan el aseguramiento como una decisión de prevención y respaldo." height="4160" width="6240"/><p>El complejo ocupa cerca de 15.000 metros cuadrados y está organizado en espacios con funciones diferentes. El Pabellón Azul concentra la atención de alta complejidad, con infraestructura, tecnología y equipos médicos especializados. El Pabellón Naranja funciona como Centro Médico Ambulatorio Integral, mientras el Pabellón Amarillo concentra la atención continua 24/7, con urgencias para adultos y niños, observación y apoyo diagnóstico y terapéutico. </p><p><b>A estos espacios se suma el Centro de Experiencia MedPlus, concebido para acompañar a los usuarios dentro de la clínica. </b>Así, la dimensión del proyecto también está en su capacidad instalada: 122 camas de hospitalización, 33 de cuidado intensivo, cinco salas de cirugía y una sala híbrida. Esta última combina las condiciones de un quirófano con tecnología de imagen médica en tiempo real para procedimientos que requieren precisión durante la intervención.</p><p>La infraestructura, además, <b>está orientada a concentrar servicios especializados como cirugía de alta complejidad, neurocirugía avanzada, neurointervencionismo, hemodinamia, electrofisiología, radiología intervencionista, gastroenterología avanzada y ortopedia especializada.</b></p><p>Para González Ospina, el propósito no es simplemente reunir equipos y especialistas en un mismo lugar. “Uno de los grandes valores de AZUL es fortalecer nuestra capacidad resolutiva, permitiendo que nuestros usuarios encuentren respuestas integrales en un mismo ecosistema clínico”, explicó.</p><p>Ese cambio busca incidir especialmente en los procesos médicos complejos, en los que la coordinación entre especialistas, tecnología e infraestructura puede determinar cómo se desarrolla la atención. La experiencia también se extiende a espacios diseñados específicamente para los afiliados.<b> El Modelo de Experiencia Plus funciona como una ruta exclusiva para usuarios de MedPlus y busca acompañarlos durante su recorrido dentro de la clínica.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/XB7ZRZIJOVEFLD2GLKKO5L76AY.jpg?auth=70a942bfb2c86329090818f8018e0ea4851f07e7c29c82eab27784c7322bcd1b&smart=true&width=6000&height=4000" alt="Con 16 planes de salud, MedPlus ha construido un ecosistema de salud que impacta a más de 111.000 personas." height="4000" width="6000"/><p>La intención es que la infraestructura no opere separada de la relación con el paciente. “La innovación no reemplaza la humanidad ni la potencia”, recalcó el presidente, quien considera que la tecnología tiene sentido cuando mejora la vida de las personas y permite que la excelencia médica esté acompañada de empatía, cercanía y orientación.</p><h2><b>Acercar a las regiones</b></h2><p>El siguiente movimiento de la compañía apunta a llevar esa lógica fuera de los grandes complejos. MedPlus plantea fortalecer su presencia regional mediante nuevos Centros de Experiencia y modelos propios de prestación. Entre ellos están los Walking Clinic, centros médicos express que funcionarán dentro de sus sedes y que buscan resolver necesidades médicas sin grandes desplazamientos.</p><p><b>“Queremos tener una presencia más fuerte en las regiones”, comentó González Ospina. </b>La intención es combinar cercanía e innovación para desarrollar modelos de atención que hagan parte de recorridos más cotidianos y permitan estar más cerca de los usuarios y sus familias.</p><p>La expansión proyectada retoma el punto de partida de la compañía. En 1991 MedPlus nació para atender a una comunidad específica vinculada a los cafeteros colombianos. <b>Para cuando cumpla 40 años, su presidente ejecutivo dice que quisiera medir el resultado de ese recorrido con otro indicador: “Haber sido parte de la historia de miles de familias colombianas”.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QQWKWP2U3BDPBEEKO7UX4VGJDA.jpg?auth=26c90e303ecf1c233d763c313161f3552b11753bb929745703723fce703a0007&smart=true&width=5758&height=3839" alt="Con 122 camas, 33 unidades de cuidado intensivo y cinco salas de cirugía, Azul CIMA integra atención ambulatoria, urgencias y servicios de alta complejidad." height="3839" width="5758"/><p>Más que una cifra de infraestructura o de usuarios, esa es la forma en que González Ospina resume la meta de los próximos años: que personas que alguna vez consideraron inaccesible la medicina prepagada encuentren una alternativa acorde con sus necesidades y que quienes ya hacen parte de MedPlus tengan tranquilidad y respaldo cuando más los necesitan.</p><p><i>*Contenido elaborado con el apoyo de MedPlus. </i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PJLNBIO5AZG2TN7QWBRS242XD4.jpg?auth=eb10f150da2a924b072d4018f13123c6723927070aa7f4fab673fa6ef4c016d4&amp;smart=true&amp;width=7083&amp;height=4724" type="image/jpeg" height="4724" width="7083"><media:description type="plain"><![CDATA[Carlos Mario González, presidente ejecutivo de MedPlus.]]></media:description></media:content></item><item><title><![CDATA[WhatsApp bajo alerta por nueva estafa: así podrían robar una cuenta sin que la víctima abra un enlace]]></title><link>https://www.semana.com/tecnologia/articulo/whatsapp-bajo-alerta-por-nueva-estafa-asi-podrian-robar-una-cuenta-sin-que-la-victima-abra-un-enlace/202600/</link><guid isPermaLink="true">https://www.semana.com/tecnologia/articulo/whatsapp-bajo-alerta-por-nueva-estafa-asi-podrian-robar-una-cuenta-sin-que-la-victima-abra-un-enlace/202600/</guid><dc:creator><![CDATA[Mary Nelly  Mora Escamilla]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:10:00 +0000</pubDate><content:encoded><![CDATA[<p>La mayoría de las estafas que circulan por <a href="https://www.semana.com/tecnologia/articulo/whatsapp-no-volvera-a-ser-como-antes-este-es-el-cambio-que-permitira-usar-tres-cuentas-en-un-mismo-celular/202632/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/whatsapp-no-volvera-a-ser-como-antes-este-es-el-cambio-que-permitira-usar-tres-cuentas-en-un-mismo-celular/202632/">WhatsApp</a> requieren que la víctima realice alguna acción, como abrir un enlace, compartir un código o escanear un código QR. Sin embargo, estas amenazas también han evolucionado y las autoridades <b>han detectado una nueva modalidad que podría comprometer los dispositivos sin que el usuario tenga que realizar ninguna acción.</b></p><p>Aunque este tipo de estafas puede afectar a usuarios de distintos países, la reciente alerta surgió en España, donde la Guardia Civil informó haber recibido cerca de 50 denuncias relacionadas con <b>ataques a WhatsApp en determinados iPhone que utilizan versiones antiguas de iOS, específicamente la 16.7.12 y anteriores.</b></p><h2><b>¿Cómo funciona la estafa?</b></h2><p>El método, conocido como <i>zero-click</i> o ‘cero clic’, <b>se caracteriza porque la víctima no necesita abrir enlaces, aceptar solicitudes ni realizar ninguna acción para quedar expuesta</b>. Los atacantes aprovechan las vulnerabilidades de sistemas operativos desactualizados, lo que puede aumentar el riesgo de que los usuarios sean afectados por este tipo de fraude.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AOV3BGF4SVBA7PK7ONJ6APQQP4.jpg?auth=d8a8bd184b8eaba10bc8bbece213b61a1d56c0622dcc145698dbe331d21368b2&smart=true&width=1920&height=1080" alt="Este tipo de engaños suelen ser efectivos debido a la forma en que logran persuadir a las víctimas." height="1080" width="1920"/><p>Si el ataque tiene éxito, los ciberdelincuentes podrían acceder a las conversaciones de <a href="https://www.semana.com/tecnologia/articulo/whatsapp-introducira-una-nueva-seccion-asi-funcionara/202235/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/whatsapp-introducira-una-nueva-seccion-asi-funcionara/202235/">WhatsApp</a> y comunicarse con familiares y amigos mientras el propietario legítimo continúa utilizando su cuenta sin advertir la intrusión.<b> La situación representa un riesgo adicional cuando el atacante suplanta la identidad de la víctima para contactar a personas de confianza e intentar engañarlas.</b></p><p>De acuerdo con expertos del Instituto Nacional de Ciberseguridad (INCIBE), Al tener acceso a la cuenta desde el número legítimo y dentro de conversaciones reales, <b>el atacante puede hacer que sus mensajes parezcan auténticos.</b> Entre las posibles estrategias se encuentran pedir dinero con la excusa de una emergencia, solicitar códigos de verificación de otras aplicaciones o pedir códigos de recuperación.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZCG2RC2NGFCM3PKWUD3BOLY4PM.jpg?auth=75dea287841d814c8f3ddf4e895e289bc704a5ce98ed37f193e32ca99342d854&smart=true&width=2116&height=1417" alt="Las estafas están a la orden del día, y WhatsApp no se queda atrás." height="1417" width="2116"/><p>La víctima puede no darse cuenta de la suplantación <b>porque el ataque puede realizarse mediante WhatsApp Web y los dispositivos vinculados. </b>Según explicó David Arroyo Guardeño, científico titular del Grupo de Investigación en Ciberseguridad y Protección de la Privacidad del CSIC, reseñado por diario español <i>El País</i>, el atacante puede utilizar la opción ‘Eliminar para mí’ para borrar los mensajes enviados desde el dispositivo de la víctima. </p><h2><b>¿Cómo protegerse de estos engaños?</b></h2><p>Una de las principales recomendaciones <b>para reducir el riesgo es mantener actualizado tanto el sistema operativo del teléfono como WhatsApp. </b>También recomiendan revisar periódicamente la <a href="https://www.semana.com/tecnologia/articulo/asi-se-puede-saber-si-una-sesion-de-whatsapp-quedo-abierta-en-otros-dispositivos/202325/" target="_blank" rel="noreferrer" title="https://www.semana.com/tecnologia/articulo/asi-se-puede-saber-si-una-sesion-de-whatsapp-quedo-abierta-en-otros-dispositivos/202325/">sección de ‘Dispositivos vinculados’</a> y cerrar cualquier sesión que no sea reconocida.</p><p>La precaución también resulta fundamental ante mensajes inusuales de familiares o amigos, especialmente cuando solicitan dinero o códigos de seguridad. En estos casos, se aconseja comprobar la identidad del contacto por otra vía antes de responder y <b>evitar realizar transferencias a cuentas distintas de las utilizadas habitualmente.</b></p><p>Si el fraude ya se produjo, las autoridades recomiendan conservar todas las pruebas disponibles, como capturas de pantalla de las conversaciones y documentos relacionados con el caso. Además,<b> se debe informar a los contactos que puedan haber sido afectados y presentar la correspondiente denuncia.</b></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DNKACNFYDVDMPDZEF7ZKL4FTDY.jpg?auth=56224c603cf1f003a1929dce0974068c522b6b55186bcee0219336c14d6301c1&amp;smart=true&amp;width=1280&amp;height=720" type="image/jpeg" height="720" width="1280"><media:description type="plain"><![CDATA[Las autoridades han detectado una nueva modalidad que podría comprometer los dispositivos sin que el usuario tenga que realizar ninguna acción.]]></media:description></media:content></item><item><title><![CDATA[De Ibagué para el mundo: este innovador modelo educativo hoy forma a los médicos y enfermeros del futuro]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/de-ibague-para-el-mundo-este-innovador-modelo-educativo-hoy-forma-a-los-medicos-y-enfermeros-del-futuro/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/de-ibague-para-el-mundo-este-innovador-modelo-educativo-hoy-forma-a-los-medicos-y-enfermeros-del-futuro/202600/</guid><dc:creator><![CDATA[Comercial ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:05:00 +0000</pubDate><content:encoded><![CDATA[<p>En Ibagué, Tolima, hoy crece un proyecto educativo que propone una manera diferente de enseñar a médicos y enfermeros. Se trata de un modelo que prioriza el componente humano como parte de la formación de grandes profesionales de la salud.</p><p><b>Salud Colombia – Institución Universitaria ha construido sus programas de Medicina y Enfermería alrededor de una formación científica y rigurosa,</b> acompañada de competencias que resultan determinantes para el tratamiento integral de un paciente: liderazgo, comunicación, inteligencia emocional, empatía y pensamiento crítico.</p><p>La institución parte de una convicción: el médico y el enfermero del futuro no solamente deben saber diagnosticar, tratar o cuidar, <b>sino escuchar, comunicar, liderar, trabajar en equipo,</b> comprender las diferencias sociales de sus pacientes y mantener una relación profundamente humana con ellos. </p><h2><b>Experiencia garantizada</b> </h2><p>Salud Colombia nació de la visión de un grupo de profesionales que durante años había vivido el mundo de la salud desde los hospitales, las unidades de cuidado intensivo, los quirófanos, la consulta, la docencia y la investigación.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/GQCL7YDRBVEF5OOGIICYJOWNPI.jpg?auth=fff0a83885a46d151167e13e3a5311b89b3d42f13852acd75407279a014cd697&smart=true&width=6192&height=3480" alt="Salud Colombia adelanta acercamientos y gestiones para establecer relaciones académicas con instituciones en Brasil, Estados Unidos y Chile." height="3480" width="6192"/><p>Entre sus fundadores sobresalen <b>médicos especialistas en cirugía cardiovascular y trasplantes, ortopedia y traumatología, pediatría y cardiología infantil, cirugía general, medicina interna y cuidado crítico, </b>y cardiología intervencionista, acompañados por profesionales con experiencia en educación y administración.</p><p>Su idea no era crear simplemente una nueva institución universitaria sino trasladar décadas de experiencia clínica y académica a un modelo educativo construido desde las necesidades reales de los pacientes y del sistema de salud colombiano. <b>De ahí surge una de las características diferenciales de Salud Colombia: formar desde la experiencia real de quienes han dedicado su vida al cuidado de los pacientes.</b></p><p>Sobre esta filosofía comenzaron los programas de Medicina y Enfermería, y posteriormente una creciente oferta de formación posgradual. Actualmente, Salud Colombia reúne nueve especialidades médicas y formación especializada en Perfusión y Circulación Extracorpórea para Enfermería.</p><p>Hoy, el proyecto continúa creciendo. La institución trabaja en la construcción académica de nuevas propuestas como Neurocirugía y Medicina Estética, mientras avanzan ante el Ministerio de Educación Nacional con los procesos correspondientes para Cuidado Crítico y Manejo de Heridas y Ostomías en Enfermería.</p><p>La visión es clara: construir progresivamente en Ibagué <b>un verdadero ecosistema de formación en ciencias de la salud, en el que convivan estudiantes de Medicina y Enfermería, residentes, especialistas, profesores y profesionales provenientes de diferentes regiones del país.</b></p><p>Esta apuesta ocurre en un momento especialmente importante para Colombia. Las comparaciones internacionales de la OCDE continúan mostrando brechas importantes en la disponibilidad de talento humano sanitario. Colombia se encuentra por debajo del promedio de los países de la organización en número de médicos y presenta una diferencia todavía mayor en profesionales de Enfermería.</p><p>Sin embargo, el reto no consiste solamente en formar más profesionales, también es necesario descentralizar la educación en salud. <b>Durante décadas, buena parte de la formación médica y especializada se ha concentrado en Bogotá, Medellín, Cali y otras grandes capitales.</b></p><p>Por eso, el crecimiento de centros académicos regionales abre la posibilidad de que profesionales provenientes del Tolima, Huila, Caquetá, Meta, Cundinamarca y otras regiones encuentren alternativas de formación de alto nivel más cerca de sus territorios.</p><p>En esa transformación,<b> Ibagué tiene condiciones especialmente favorables.</b> Su ubicación estratégica en el centro del país, conectividad regional, calidad de vida y un costo de vida potencialmente más competitivo frente a las grandes capitales pueden convertirla en una alternativa atractiva para quienes deben permanecer varios años estudiando Medicina, Enfermería o realizando una especialización.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/VWCLNEK2QNB2XCCD6LTJP5YKW4.jpg?auth=91e0dafaf19966e757cacc3ae53d3862c940f061422407de47b072e3618e4354&smart=true&width=4620&height=7008" alt="Salud Colombia ha venido construyendo una red de escenarios de formación que incluye instituciones de alta complejidad y hospitales de diferentes niveles de atención." height="7008" width="4620"/><p><b>Para un estudiante y su familia elegir dónde estudiar no depende exclusivamente de la universidad.</b> También importan el costo de la vivienda, los desplazamientos, la seguridad, la calidad de vida y la posibilidad de construir una vida alrededor de la formación académica. “Ibagué tiene la oportunidad de convertir esas características en una ventaja para atraer talento joven desde distintas regiones de Colombia”, manifestaron desde Salud Colombia.</p><h2><b>Red médica </b></h2><p>La formación en salud no puede limitarse a un edificio universitario. Salud Colombia ha venido construyendo una red de escenarios de formación que incluye instituciones de alta complejidad y hospitales de diferentes niveles de atención.</p><p>En Tolima, l<b>a institución cuenta con alianzas y escenarios académicos en instituciones como Medicadiz, Avidanti y el Hospital Federico Lleras Acosta, además de hospitales y centros asistenciales en El Espinal, Chaparral, Líbano y Honda.</b></p><p>En Bogotá, Salud Colombia cuenta con relaciones y escenarios con las Subredes Norte y Sur, mientras avanza en el trabajo con otras subredes públicas, además de la Clínica Psiquiátrica Emanuel. En Soacha se incorporan instituciones de primer y segundo nivel de atención.</p><p>Hacia el sur del país, la institución tiene relaciones académicas y asistenciales en Neiva, incluyendo el Hospital Universitario Hernando Moncaleano Perdomo. En Antioquia, el vínculo con la Universidad de Antioquia amplía las posibilidades de cooperación académica. <b>Y hacia los Llanos Orientales, la red se extiende al Meta y Villavicencio, con escenarios hospitalarios y de atención primaria.</b></p><p>La filosofía detrás de esta expansión es sencilla: un futuro profesional de la salud debe conocer tanto la medicina de alta complejidad como la atención primaria, las ciudades intermedias y las necesidades sanitarias de los territorios. “Colombia también debe convertirse en el aula”, señalaron.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/PSM7L33JZZHLZJQLZPWCMKMB5Y.jpg?auth=ff2c770201e4cafad8e3d6f1fcfe12fd511deb438719a9f6807ea530556d358d&smart=true&width=6192&height=3480" alt="Medicina y Enfermería fueron los primeros programas, seguidos de una creciente oferta de formación posgradual." height="3480" width="6192"/><h2><b>Avanzando hacia la internacionalización</b></h2><p>Salud Colombia adelanta acercamientos y gestiones para establecer relaciones académicas con instituciones en Minas Gerais, Brasil; Wisconsin, Estados Unidos, y Santiago, Chile, además de explorar oportunidades de cooperación con instituciones clínicas y universitarias internacionales.</p><p>“Nuestra intención es construir progresivamente oportunidades de movilidad estudiantil y docente, rotaciones académicas e intercambio de experiencias que permitan que un estudiante formado en Ibagué pueda estar conectado con otras formas de entender y practicar la medicina y la enfermería en el mundo”, precisaron desde Salud Colombia. </p><p>Asimismo, <b>la internacionalización tiene un propósito adicional y es traer conocimiento global para transformar realidades locales. </b>“Así, desde Ibagué y Tolima, Salud Colombia apuesta por construir uno de los nuevos referentes nacionales para la formación del talento humano que necesita la salud de Colombia”, concluyeron desde la institución. </p><p><i>*Contenido elaborado con el apoyo de Salud Colombia. </i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/2KZUZY6XXZF33HKDESWDT7OJW4.jpg?auth=ad3fa79c2084303d9512d00e9ee3f52cb8851f94110ebedbe44c99e19a9c925a&amp;smart=true&amp;width=6192&amp;height=3480" type="image/jpeg" height="3480" width="6192"><media:description type="plain"><![CDATA[Salud Colombia nació de la visión de un grupo de profesionales que durante años había vivido el mundo de la salud desde los hospitales, las unidades de cuidado intensivo, los quirófanos, la consulta, la docencia y la investigación]]></media:description></media:content></item><item><title><![CDATA[Drummond, la compañía minera con mejor reputación del país: “Aportamos al progreso de Colombia”]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/drummond-la-compania-minera-con-mejor-reputacion-del-pais-aportamos-al-progreso-de-colombia/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/drummond-la-compania-minera-con-mejor-reputacion-del-pais-aportamos-al-progreso-de-colombia/202600/</guid><dc:creator><![CDATA[Comercial ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:02:00 +0000</pubDate><content:encoded><![CDATA[<p>Por segundo año consecutivo, <b>Drummond Ltd. ocupa el primer lugar del Ranking General Brújula Minera y se posiciona como la compañía minera con mejor reputación</b> entre cuatro de los cinco grupos evaluados: directivos de empresas mineras, autoridades de Gobierno, trabajadores del sector y la opinión pública en municipios mineros y no mineros. Los resultados de la medición 2026 fueron presentados en el marco del Congreso Nacional de Minería, organizado por la Asociación Colombiana de Minería (ACM) en Cartagena.</p><p><b>“Este reconocimiento nos llena de orgullo y nos motiva a seguir trabajando de la mano de las comunidades y la región para aportar al progreso de Colombia, haciendo minería bien hecha”,</b> declaró José Miguel Linares, presidente de Drummond Ltd.</p><p>Para la compañía, mantenerse por segundo año consecutivo en el primer lugar representa un reconocimiento al trabajo de sus empleados y contratistas, y a una gestión basada en la excelencia operacional, el relacionamiento y la comunicación permanente con las comunidades y autoridades, sin olvidar sus grandes aportes a la responsabilidad social y ambiental y a la generación de oportunidades en sus áreas de influencia.</p><p>Prueba de ello son los resultados que arroja su robusta estrategia de sostenibilidad. <b>Este año la compañía habrá invertido más de 146.000 millones de pesos en iniciativas sociales, enfocadas en formación, empleabilidad, fortalecimiento de emprendimientos locales y desarrollo comunitario en municipios del Cesar y Magdalena. </b>En materia de empleo, por ejemplo, la empresa dinamiza la economía regional y nacional, generando 10.508 puestos de trabajo directos y cerca de 48.000 empleos indirectos, y entre 1995 y 2025 aportamos 15.284 millones de dólares en regalías, participación por precios altos e impuestos. </p><p>Actualmente las prioridades de la compañía están concentradas en educación, diversificación productiva, fortalecimiento institucional y comunitario, bienestar social e infraestructura de alto impacto. Gracias al diálogo permanente con sus comunidades, autoridades locales, líderes sociales e instituciones educativas, sus estrategias hoy impactan de forma pertinente, medible y sostenible a la movilidad social de las comunidades. </p><p>Asimismo, pese a los múltiples desafíos que enfrenta la industria minero energética y el mercado del carbón, Drummond hoy sigue velando porque sus acciones sostenibles sigan alineadas al desarrollo integral de las comunidades que se encuentran cercanas a sus operaciones. <b>Esto incluye haber entregado más de 500 soluciones de vivienda a familias vulnerables”,</b> detallaron desde Drummond.</p><p>Una muestra de todo esto es la contribución de la minería en la disminución de las Necesidades Básicas Insatisfechas (NBIs) en el corredor minero, medido por el Dane: bajó del 69 % en 1993 al 20 % en 2023. El estudio Brújula Minera 2026 también mostró que la credibilidad de la información de la compañía pasó del 61 al 71 %, mientras que la licencia social para operar aumentó del 84 al 88 %. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/VMXYHGEPEBEKZBHPOQL4XZGNMI.jpg?auth=e56ac873eb5fc410e01ff5eddd5d04d79cfb13b2bbd00521652daa089795480a&smart=true&width=6000&height=3376" alt="Gran parte de la inversión social de Drummond se ha enfocado en la educación y fortalecimiento del talento regional en los departamentos de Cesar y Magdalena." height="3376" width="6000"/><h2><b>Educación para todos</b></h2><p>Gran parte de la inversión social de Drummond se ha enfocado en la educación y fortalecimiento del talento regional en los departamentos de Cesar y Magdalena. Al cierre de 2025 la compañía reportó haber contribuido a la construcción, intervención o mejoramiento de 1.252 aulas de clase, beneficiando a más de 72.000 estudiantes de distintos municipios de la región. </p><p>Así mismo, <b>más de 8.000 hijos de empleados han recibido auxilios educativos, 495 jóvenes de instituciones públicas se han beneficiado con educación y apoyos de sostenimiento, a través de programas impulsados por la compañía,</b> incluyendo procesos asociados a reasentamientos y planes de manejo socioeconómico, u otros que promueven la excelencia académica. Además, más de 4.500 adultos han participado en procesos de alfabetización.</p><p>La empresa también lidera programas de fortalecimiento de calidad educativa, iniciativas que han impactado a miles de estudiantes y docentes en áreas como lectura, matemáticas, bilingüismo y tecnologías de la información.</p><h2><b>Compromiso con el país</b></h2><p>Brújula Minera 2026 también mostró avances en aspectos relacionados con el compromiso ambiental, el respeto por los Derechos Humanos, el progreso de las comunidades y el diálogo con los territorios.<b> El informe reveló, además, que el 86 % de la opinión pública nacional considera que “la minería puede convivir con otras actividades económicas como el turismo y el agro”. </b></p><p>En ese sentido, el más reciente análisis del Monitor de Desarrollo Territorial (una plataforma independiente que monitorea y analiza la evolución de las dinámicas territoriales asociadas al desarrollo regional) también concluyó que no existe una relación entre la minería de carbón y la deforestación en Colombia. </p><p>El estudio, “Carbón y Deforestación en los Territorios”, determinó que “los municipios donde se desarrolla esta actividad conservan, en promedio, una mayor cobertura boscosa que otros territorios con características similares”. </p><p>Desarrollado por Jaime Arteaga &amp; Asociados, en alianza con instituciones académicas de diferentes regiones del país, el análisis señala que el carbón del norte de Colombia, ubicado principalmente en los departamentos de Cesar y La Guajira, concentra la mayor parte de la producción nacional, pero se desarrolla en tierras secas del Caribe con una limitada cobertura forestal. Como resultado, estos municipios aportaron apenas el 0,9 % de la deforestación registrada en el país durante 2025.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/56Y34JT52RDYJKVXKB3SYMUZAM.jpg?auth=c57526cf81f2b9c102e9a2a2adbe8eb1199f5d2bb4ede5a24435855177def0e2&smart=true&width=4000&height=2252" alt="En la planta de procesamiento de llantas residuales, operada por Duramos S.A.S.,  se recuperan caucho y acero provenientes de neumáticos de maquinaria de su industria para reincorporarlos a la economía local." height="2252" width="4000"/><p>“Este análisis independiente confirma, con información verificable y un enfoque técnico, que la minería de carbón que desarrollamos en el Cesar no es un motor de la deforestación.<b> En Drummond Ltd. continuaremos trabajando con responsabilidad, promoviendo una operación que integra la gestión ambiental, el cumplimiento de la normativa y la protección de los recursos naturales, mientras aportamos al desarrollo sostenible de los territorios donde tenemos presencia”</b>, agregó Linares. </p><p>Entre los principales hallazgos el informe destaca que no existe una relación entre mayores niveles de producción de carbón y una mayor pérdida de bosque, e indica que, cuando algunos municipios carboníferos presentan procesos de deforestación, estos se concentran en zonas como la Serranía del Perijá, donde las causas están asociadas principalmente a la colonización y la expansión de la frontera agrícola, y no a las operaciones mineras ubicadas en el valle.</p><p>La gestión ambiental de Drummond se basa en proyectos de economía circular y aprovechamiento de residuos de sus operaciones, dentro de los que se destacan la planta de procesamiento de llantas residuales operada por Duramos S.A.S., en donde se recuperan caucho y acero provenientes de neumáticos de maquinaria de su industria para reincorporarlos a la economía local y a otros sectores mediante la pavimentación de vías o pisos, la adecuación de pistas y canchas deportivas. </p><p>Entre otras acciones sostenibles, la compañía se encarga de la gestión integral de materiales reciclables generados en sus operaciones a través de su programa de Gestión Integral de Residuos (PGIR) y de la Estación de Clasificación y Aprovechamiento de Residuos (ECA). </p><p>Además, consciente del reto del cambio climático, Drummond utiliza los combustibles fósiles como apalancamiento para la diversificación económica de las regiones y el desarrollo de fuentes renovables de energía que apunten a la reducción de emisiones. <b>La meta es alcanzar la carbono neutralidad en 2050 mediante una hoja de ruta que integra eficiencia operativa, energías renovables y compensación ambiental.</b></p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QVSMSH5TRJEPHA3ZG4LJFAN4AU.jpg?auth=3fb8bd8f9e15373d782019a92997dd1d9486f121ba0294d9c1c63467e133cf1e&smart=true&width=4128&height=2752" alt="Por segundo año consecutivo, Drummond Ltd. ocupa el primer lugar del Ranking General Brújula Minera y se posiciona como la compañía minera con mejor reputación entre cuatro de los cinco grupos evaluados." height="2752" width="4128"/><p>En esa estrategia juega un papel clave Drummond Energy, filial encargada de desarrollar proyectos de generación renovable en Colombia, así como de exploración y producción de gas natural. Entre los avances más relevantes está el Parque Solar Cañahuate I, con capacidad instalada de 65 MWp y más de 112.000 paneles solares, infraestructura que actualmente cubre cerca del 33 % de las necesidades energéticas de la operación minera. </p><p>“Sin minería no hay transición”, recalcó María Nohemí Arboleda, ministra de Minas y Energía durante la instalación del Congreso Nacional de Minería. <b>“Colombia tiene una oportunidad histórica para convertir su riqueza minera en desarrollo sostenible, empleo formal y confianza para los territorios”. </b></p><p>Para Drummond Ltd., su reputación se ha construido a partir de las acciones y las relaciones de confianza que se fortalecen en el tiempo. Por eso, advirtieron desde la compañía, este reconocimiento representa, más que un resultado, “el compromiso de continuar haciendo minería responsable y sostenible, generando oportunidades y contribuyendo al desarrollo de Colombia y sus regiones”. </p><p><i>*Contenido elaborado con el apoyo de Drummond. </i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/P4522TJKMJD6DI5XO5HBCL7WQA.jpg?auth=007451211f8cb8bc203c9c867ee8ad92b78eecf1285616be9391b767fe56a330&amp;smart=true&amp;width=4128&amp;height=2752" type="image/jpeg" height="2752" width="4128"><media:description type="plain"><![CDATA[Para la compañía, mantenerse por segundo año consecutivo en el primer lugar representa un reconocimiento al trabajo de sus empleados y contratistas, y a una gestión basada en la excelencia operacional.]]></media:description><media:credit role="author" scheme="urn:ebu">DANIEL REINA ROMERO @darfotos</media:credit></media:content></item><item><title><![CDATA[Luis Díaz se sinceró sobre su nominación al Balón de Oro: respondió quién lo tiene que ganar]]></title><link>https://www.semana.com/deportes/articulo/luis-diaz-se-sincero-sobre-su-nominacion-al-balon-de-oro-respondio-quien-lo-tiene-que-ganar/202600/</link><guid isPermaLink="true">https://www.semana.com/deportes/articulo/luis-diaz-se-sincero-sobre-su-nominacion-al-balon-de-oro-respondio-quien-lo-tiene-que-ganar/202600/</guid><dc:creator><![CDATA[Camilo Andrés Quintana Ramírez]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Pese a que no ha tenido un buen arranque de temporada, lo hecho en la campaña anterior le permitió a <a href="https://www.semana.com/deportes/articulo/nominacion-de-luis-diaz-al-balon-de-oro-se-definio-publicado-el-anuncio-oficial/202642/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/nominacion-de-luis-diaz-al-balon-de-oro-se-definio-publicado-el-anuncio-oficial/202642/">Luis Díaz estar en la lista del Balón de Oro</a>. El colombiano es una de las opciones a quedarse con uno de los mayores galardones que puede recibir un futbolista.</p><p>En diálogo con el medio <i>Sky Sports</i>, el nacido en La Guajira se sinceró sobre lo que es esto para él y su carrera. “<b>Significa mucho para mí, mucho. Siempre lo tendré en mente</b>”, dijo.</p><p>“<b>No todo el mundo tiene la oportunidad de estar entre los 30 mejores jugadores del mundo. Eso es un gran logro</b>”, agregó. </p><p>El extremo recordó que es la segunda oportunidad en la que se encuentra en este distinguido listado, pues en el 2022 fue incluido cuando era una de las grandes estrellas del Liverpool de Inglaterra.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7U6YEOGWN5BPLIBI5P2BTSMVTY.png?auth=aa7f194ddc02124783408f6069926cb7ba3602d6bc5b46b08ac15d2e8decf919&smart=true&width=1280&height=720" alt="Luis Díaz ha tenido un irregular arranque de temporada con Bayern Múnich." height="720" width="1280"/><p>El jugador de la Selección Colombia resaltó que todo esto lo impulsa para seguir teniendo cada vez más logros en su carrera. “He tenido el honor de ser incluido dos veces, y esos fueron logros muy buenos para mí y para mi carrera”, manifestó.</p><p>“Intentaré avanzar un poco más en la lista cada vez. <b>Todos estamos trabajando, como equipo, para mejorar y tener una mejor temporada, y luego, ganar lo máximo posible con este club</b>”, añadió.</p><p>Sin embargo, Lucho tiene los pies en la tierra y sabe que es muy difícil que se quede con el Balón de Oro, ya que hay varios futbolistas que, en estos momentos, están por delante de él.</p><p>De hecho, <a href="https://www.semana.com/deportes/articulo/luis-diaz-dijo-quien-se-merece-el-balon-de-oro-luego-de-conocer-los-nominados-tiene-todo/202644/" target="_blank" rel="noreferrer" title="https://www.semana.com/deportes/articulo/luis-diaz-dijo-quien-se-merece-el-balon-de-oro-luego-de-conocer-los-nominados-tiene-todo/202644/">Díaz tiene más que claro quién debería ser proclamado como el mejor jugador del mundo: Harry Kane</a>. El inglés actualmente es una de las grandes opciones que hay por lo que ha hecho en el Bayern Múnich y la Selección de Inglaterra.</p><p>El colombiano sostuvo que su compañero de equipo en cada uno de los partidos hizo méritos para llevarse el premio. “He notado que varias personas han hablado al respecto y todo el mundo tiene su propia opinión. ¿Verdad? Y eso es respetable", comentó.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/YAMMCSRELFCFFC2AJX7NKQY6NM.jpg?auth=ddf307f6e99d31a920260ba00c5e2794971a32a0165d87fda33dcc67622f2c88&smart=true&width=3543&height=2362" alt="Luis Díaz, jugador del Bayern Múnich." height="2362" width="3543"/><p>“En mi opinión, Harry tiene que ser el ganador.<b> Porque es uno de los mejores futbolistas del mundo y ha estado demostrándolo durante mucho tiempo; la temporada que tuvo el año pasado fue increíble</b>”, complementó. </p><p>No obstante, no la tendrá para nada fácil ya que hay otros candidatos como Kylian Mbappé o Lamine Yamal, quienes tuvieron grandes actuaciones y hasta han dicho que merecen el Balón de Oro.</p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/I3YN2FPW7VHSJK4KLKDFFJIF2I.jpg?auth=374100355660e6fc884ab82c74b339b75ce9f8e12962b9662129b064f2b2188e&amp;smart=true&amp;width=4088&amp;height=2725" type="image/jpeg" height="2725" width="4088"><media:description type="plain"><![CDATA[Luis Díaz fue nominado al Balón de Oro.]]></media:description></media:content></item><item><title><![CDATA[Productos de Aseo 1A: el negocio colombiano que llegó a Walmart y ya exporta a siete países]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/productos-de-aseo-1a-el-negocio-colombiano-que-llego-a-walmart-y-ya-exporta-a-siete-paises/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/productos-de-aseo-1a-el-negocio-colombiano-que-llego-a-walmart-y-ya-exporta-a-siete-paises/202600/</guid><dc:creator><![CDATA[Dubán Jesús Villamizar Ardila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Para una empresa colombiana que comenzó hace 20 años fabricando traperos de algodón, tener presencia en siete países de América representa un salto importante. Productos de Aseo 1A nació como un emprendimiento familiar en Bogotá y ahora busca expandirse por los mercados internacionales. Uno de los ejemplos de esa apuesta es Puerto Rico, donde sus productos llegan a Walmart a través de un distribuidor. Las exportaciones representan cerca del 20 por ciento de las ventas de la compañía.</p><p>El objetivo hacia adelante, según Sandra Briceño, gerente general de Productos de Aseo 1A, es <b>ampliar esa presencia internacional, sin descuidar el mercado colombiano. </b>El caso de Puerto Rico refleja esta estrategia.</p><p>Para Productos de Aseo 1A, participar en este tipo de canales representa la oportunidad de llevar su producción a nuevos consumidores y fortalecer su experiencia en mercados internacionales. El camino hasta aquí comenzó el 28 de septiembre de 2006, cuando la empresa inició operaciones con una estructura pequeña dedicada a fabricar traperos de algodón y distribuir otras líneas de productos de aseo. Su mercado inicial estaba concentrado principalmente en distribuidores y mayoristas.</p><p>Con el tiempo, la compañía dejó de ser solamente productora y distribuidora y comenzó a desarrollar sus propias marcas y a ampliar su capacidad productiva. Hoy cuenta con<b> Cleaning 1A, enfocada en elementos de aseo para hogares y clientes profesionales; Doña Zully, especializada en productos líquidos, y Todoen Casa</b>, mediante la cual busca llegar directamente al consumidor a través de la venta por catálogo.</p><p>Ese crecimiento la obligó a tomar decisiones asociadas a su infraestructura. Una de las más importantes fue trasladar la operación del barrio Santa Lucía, en Bogotá, a Mosquera, Cundinamarca, en 2018. La empresa necesitaba más espacio, personal y capacidad de inventario para atender a sus clientes, pero el cambio también implicó una inversión importante y mayores necesidades de flujo de caja.</p><p>Actualmente, <b>180 personas hacen parte de la organización. </b>Para Sandra Briceño, mantener el carácter familiar de la compañía mientras crece es uno de los principales desafíos.</p><p>“Aunque hemos crecido, nos mantenemos como una empresa familiar y cercana. Detrás de cada producto hay personas, familias, proveedores, clientes y aliados que hacen parte de una cadena de valor que queremos seguir fortaleciendo”, explica.</p><p>La transformación también se ha trasladado a los procesos productivos. La compañía viene avanzando en la tecnificación y automatización para mejorar la productividad, optimizar recursos y reducir desperdicios. Al mismo tiempo, busca incorporar criterios ambientales en su producción.</p><p>Ahora, el reto es llevar ese proceso a una escala mayor. <b>La compañía planea fortalecer su presencia en Colombia, buscar nuevos mercados internacionales, ampliar su portafolio y profundizar la automatización y digitalización de sus procesos.</b></p><p>Después de dos décadas, enfrenta un desafío distinto al de sus primeros años: convertir la experiencia acumulada en una plataforma para competir fuera del país, mientras conserva la estructura y los vínculos de una empresa que nació en familia. En este sentido, la apuesta es que los próximos mercados estén fuera de Colombia, pero sin perder el origen que la llevó tan lejos.</p><p><i>*Contenido elaborado con apoyo de Productos de Aseo 1A</i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EQKLDWFM3FCONA7FRZXOXRL43Q.jpeg?auth=674b9d134cefc7701891343870e7aca4900ef2d932422f112bccdb2074126a1a&amp;smart=true&amp;width=1280&amp;height=851" type="image/jpeg" height="851" width="1280"><media:description type="plain"><![CDATA[Sandra Briceño, gerente general de Productos de Aseo 1A.]]></media:description></media:content></item><item><title><![CDATA[Educación superior pensada en las regiones, la gran apuesta de la Fundación Universitaria San Martín]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/educacion-superior-pensada-en-las-regiones-la-gran-apuesta-de-la-fundacion-universitaria-san-martin/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/educacion-superior-pensada-en-las-regiones-la-gran-apuesta-de-la-fundacion-universitaria-san-martin/202600/</guid><dc:creator><![CDATA[Dubán Jesús Villamizar Ardila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>La Fundación Universitaria San Martín construye su presencia en el país desde un enfoque poco común en la educación superior, porque no piensa la oferta académica desde Bogotá hacia las regiones, sino a partir de las necesidades y oportunidades de los propios territorios. </p><p>Con cinco sedes –Bogotá, Puerto Colombia, Cali, Pasto y Sabaneta– y centros de atención en Barranquilla, Cartagena, Ipiales, Montería y Valledupar, <b>la San Martín reúne a más de 7.000 estudiantes y suma más de 58.000 egresados en todo el país</b>. Esta trayectoria refleja una apuesta territorial que su rector, Juan Santiago Correa, define como estructural y parte esencial de la identidad de la institución. </p><p>Para llegar a ello, desarrolla estudios de pertinencia que les permiten entender “<b>cuál es el tamaño de la demanda y de las necesidades en las regiones, y así llegar realmente con programas pertinentes</b>”, precisó Correa. </p><p>En otras palabras, antes de abrir un programa, la institución dialoga con hospitales, gremios y autoridades locales para identificar las necesidades de formación y talento humano que necesita su propia economía. <b>Esa conversación previa, sostuvo el rector, permite conectar la academia y la formación con las dinámicas sociales y productivas de cada zona</b>. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/FFBTFWNMQVADZA3XSQJYCGZLIA.png?auth=d4ccdc417e5d0dd76a4eb0af69d2eb778766458b6cc0f3ba53cd6bb99cd9f231&smart=true&width=1672&height=941" alt="La San Martín reúne a más de 7.000 estudiantes y suma más de 58.000 egresados en todo el país." height="941" width="1672"/><p>Ofrecer programas pertinentes para los distintos territorios donde tienen sedes no garantiza que los estudiantes puedan acceder y sostenerse hasta finalizar sus estudios. La permanencia sigue siendo uno de los mayores desafíos de la educación superior, especialmente fuera de los grandes centros urbanos. </p><p><b>Correa señaló que cerca de la mitad de los jóvenes que ingresan a la educación superior en Colombia no logran graduarse</b>. Ante esta realidad, la San Martín ha respondido con exámenes diagnósticos de entrada, acompañamiento interdisciplinario, modalidades virtuales, híbridas y a distancia para estudiantes que también trabajan, y estrategias para acercar tempranamente a los estudiantes al ejercicio de su profesión. </p><p>Ejemplo de estas estrategias es el Programa de Salud Familiar y Comunitaria. </p><p><b>La experiencia comenzó hace más de 30 años en Sabaneta con Alianzas por la Salud (ALAS)</b>. Hoy el proyecto caracteriza a más de 1.000 familias en el país mediante diagnósticos que integran información epidemiológica y percepción comunitaria. Bajo este enfoque, en Pasto se trabaja en prevención del consumo de sustancias; en Puerto Colombia, en salud ambiental de comunidades cercanas a cuerpos de agua contaminados; y en Sabaneta, en riesgo cardiovascular y salud sexual y reproductiva. Una apuesta de la San Martín que incluso sirve como fuente de información para la toma de decisiones en salud pública. </p><h2>La reorganización </h2><p>Toda esta apuesta territorial está respaldada por una institución que atravesó una década de reorganización académica y financiera acompañada por el Ministerio de Educación Nacional. “<b>Hoy tenemos una estructura de gobierno transparente, con rendición de cuentas, que le permite a cualquier persona interna o externa entender y conocer qué está pasando con la San Martín</b>”, aseguró el rector Correa. </p><p>La reorganización dejó como uno de sus resultados un plan de pagos vigente desde 2022, cuyo cierre está proyectado para comienzos de la próxima década, mientras se avanza en el fortalecimiento de los procesos académicos y en la acreditación de programas, con la acreditación de alta calidad como siguiente paso. </p><p>Con 45 años de historia, <b>la San Martín enfoca su próxima etapa en los posgrados del área de la salud</b>, la internacionalización y una relación más estrecha con sus egresados y el sector productivo. </p><p><i>*Contenido elaborado con el apoyo de la Fundación Universitaria San Martín</i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LF2JIYR37NGLRHMXQB5TLQZOJA.png?auth=59193a2b0a1eb6de742c027d5818912db352d387246a9183a9d1301bfc643b7e&amp;smart=true&amp;width=1042&amp;height=941" type="image/png" height="941" width="1042"><media:description type="plain"><![CDATA[La San Martín cuenta con más de 7.000 estudiantes activos en programas pertinentes para las regiones.]]></media:description></media:content></item><item><title><![CDATA[SuDespensa, la empresa que crece como proveedor de grandes mayoristas y fortalece el abastecimiento de alimentos]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/sudespensa-la-empresa-que-crece-como-proveedor-de-grandes-mayoristas-y-fortalece-el-abastecimiento-de-alimentos/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/sudespensa-la-empresa-que-crece-como-proveedor-de-grandes-mayoristas-y-fortalece-el-abastecimiento-de-alimentos/202600/</guid><dc:creator><![CDATA[Dubán Jesús Villamizar Ardila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Han pasado cerca de seis décadas desde que don Manuel Uriel Barragán Saavedra y su esposa Mariela Ramírez de Barragán iniciaron un negocio familiar que ha permitido llevar los mejores frutos del campo a la mesa de los colombianos, dejando una huella que se mantiene de generación en generación. Iniciaron en Guaduas con poco presupuesto y muchas limitaciones, pero con la visión de convertirse en una fuente de empleo y desarrollo económico para las regiones.</p><p><b>La comercialización de leguminosas fue el punto de partida</b>. Compraban granos en Huila, Tolima, Cundinamarca, Boyacá y Santander, y poco a poco fueron creando relaciones comerciales de largo plazo con los proveedores y clientes para crear una cadena de abastecimiento sólida, donde la calidad y el precio se convirtieron en valores fundamentales.</p><p><b>En los años 80 decidieron importar alimentos que no se producían en Colombia</b> para garantizar que en la despensa de los hogares no faltaran proteína, fibra, semillas saludables, frutos secos y todo tipo de alternativas para satisfacer los nuevos hábitos de consumo.</p><p><b>Don Manuel fue siempre un mentor para sus cinco hijos</b> y para las personas que se unieron a él en el camino, al punto que cumplió el sueño de consolidar una gran empresa en la que hoy trabajan 250 empleados directos y cientos de indirectos.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/R4HWPH5D5ZHZNIBOYSEBOW5NO4.jpeg?auth=ce62b3756161717423e3861e516fa040279c782071b1823f7952c538a592aec8&smart=true&width=1559&height=1600" alt="Don Manuel Uriel Barragán Saavedra y su esposa Mariela Ramírez de Barragán, fundadores de la compañía." height="1600" width="1559"/><p>Para Humberto Barragán, gerente de la compañía, <b>el éxito de la empresa está en lograr relaciones comerciales de largo plazo con proveedores y clientes</b>, en las que se pueden encontrar puntos comunes que permitan entender y atender las necesidades, conocer las nuevas tendencias de consumo y aprender de todos los actores de la cadena de abastecimiento.</p><p><b>Hoy en día hay mucho más interés por la alimentación saludable a precios asequibles para todas las personas</b>. Es por esto que SuDespensa cuida la agricultura, impulsa la producción nacional e importa lo que el consumidor necesita y que no se produce en Colombia, como, por ejemplo, chía, linaza, quinua, avena, garbanzo, arveja seca y algunas variedades de frijol.</p><p><b>De esta manera abastece a las grandes superficies, mayoristas de alimentos en Corabastos, supermercados, así como a clientes institucionales: </b>hoteles, restaurantes y casinos. También contribuye en programas de alimentación gubernamental a través de sus clientes y tiene alianzas con arroceros y con algunas marcas colombianas para producir chocolate, café, aceite y otros productos que le permitan ampliar el portafolio.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/DILDY4PT7VBERIZPEOPX5DYZRA.jpeg?auth=dd5abf5113e6dafc1315efd965ace30cd6da973684f7768ba663811bd21544ff&smart=true&width=853&height=1280" alt="Humberto Barragán, gerente de SuDespensa." height="1280" width="853"/><p>Mediante acompañamiento técnico ha contribuido a que muchos de sus proveedores en todo el país hayan creado zonas de acopio, <b>espacios productivos, infraestructura y negocios que crecen cada día de la mano de SuDespensa</b>.</p><p>El deporte es otra de sus apuestas. Por eso apoya el atletismo, el fútbol y el ciclismo, y, además, se acerca cada vez más a los consumidores para entregar, a través de códigos QR que llevan a su página web, información de valor que les permitan descubrir nuevas maneras de preparar y consumir los alimentos.</p><p><b>SuDespensa evoluciona y crece con las familias, entendiendo las necesidades y desarrollando nuevas alternativas</b> para que la cadena de abastecimiento se siga fortaleciendo y llevando los frutos de la tierra a los hogares.</p><p><i>*Contenido elaborado con el apoyo de SuDespensa </i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/OAB45UBBYJBAPMKRUR4TI276JY.png?auth=27191fccc94ec8359201e1fc34636ce45dc15115e6ef8a43dfb35b696bb5759b&amp;smart=true&amp;width=1054&amp;height=465" type="image/png" height="465" width="1054"><media:description type="plain"><![CDATA[SuDespensa evoluciona y crece con las familias, entendiendo las necesidades y desarrollando nuevas alternativas.]]></media:description></media:content></item><item><title><![CDATA[“La meta es duplicar la operación en Colombia”: presidente de Lactalis anuncia sus planes de expansión en el país]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/la-meta-es-duplicar-la-operacion-en-colombia-presidente-de-lactalis-anuncia-sus-planes-de-expansion-en-el-pais/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/la-meta-es-duplicar-la-operacion-en-colombia-presidente-de-lactalis-anuncia-sus-planes-de-expansion-en-el-pais/202600/</guid><dc:creator><![CDATA[Dubán Jesús Villamizar Ardila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>En un entorno económico marcado por una inflación que ha venido subiendo, encareciendo el costo de vida, e importantes desafíos logísticos, Lactalis Colombia tuvo un 2025 sobresaliente. <b>La compañía, responsable de marcas como Parmalat, Proleche, Kraft, Président, Alula e Infacare, creció 17 por ciento durante ese año gracias a la innovación</b>, el fortalecimiento de su red de proveedores, la excelencia operativa y una visión de largo plazo enfocada en la sostenibilidad. </p><p>Detrás de estos resultados existe una filosofía que le ha permitido fortalecer su presencia en el mercado colombiano y consolidar una operación en la que participan más de mil colaboradores, productores y comunidades rurales. Más allá del core del negocio, la compañía se posiciona como un aliado para el desarrollo económico y social del país gracias al trabajo coordinado entre las áreas de operaciones, ventas, logística, manufactura y cultura corporativa. </p><p><b>Los valores corporativos de Lactalis están estrechamente ligados al trabajo colaborativo, la disciplina, la calidad y el compromiso con el sector agropecuario</b>. Su ADN se resume en una premisa: combinar el respaldo del grupo lácteo más grande del mundo con el arraigo de marcas que han acompañado durante décadas a los colombianos. </p><p><b>La innovación fue otro de los pilares en 2025</b>. En lugar de limitarse a lanzamientos puntuales, la compañía consolidó plataformas estratégicas que respondieran a las nuevas necesidades de los consumidores. Gracias a ello, se identificaron oportunidades especialmente en categorías relacionadas con nutrición, bienestar y conveniencia. </p><p>En este contexto,<b> las marcas Kraft y Président sobresalieron gracias a productos que facilitan la preparación de alimentos y enriquecen la experiencia gastronómica</b>. Las líneas de quesos tajados, rallados y granulados lograron crecimientos de doble dígito, mientras que especialidades como el queso feta fortalecieron la presencia en segmentos de mayor valor agregado. </p><p><b>Otro factor clave fue la incorporación del yogur griego al portafolio, pues identificaron una creciente tendencia de consumo de productos ricos en proteína</b>. Lactalis fortaleció su propuesta de nutrición accesible mediante productos fortificados, entre ellos la leche Parmalat enriquecida con diez vitaminas y nuevas referencias de alimentos lácteos en polvo con mayores aportes nutricionales. </p><p><b>Además hubo cambios en el segmento de nutrición infantil</b>. La integración de la unidad Sanulac permitió potenciar marcas como Alula e Infacare, desarrolladas con respaldo científico para acompañar el crecimiento y bienestar de los niños en sus primeras etapas de vida. </p><h2>Mayor crecimiento </h2><p>Buena parte del éxito de Lactalis comienza mucho antes de que los productos lleguen a las góndolas de los supermercados. La relación con los proveedores locales constituye uno de los mayores activos. Actualmente, la organización trabaja con 1.694 productores lecheros en nueve departamentos: Cundinamarca, Boyacá, Antioquia, Córdoba, Sucre, Valle del Cauca, Cauca, Risaralda y Quindío. Más del 70 por ciento son pequeños y medianos ganaderos. Durante 2025, esta red permitió el acopio de más de 131 millones de litros de leche cruda. </p><p>La empresa ha construido esta relación bajo principios de formalidad, transparencia y acompañamiento técnico. A través del programa “Club del Productor”, los ganaderos reciben asistencia veterinaria, acceso a insumos y capacitación en mejores prácticas. De esta forma han logrado incrementar la productividad de sus hatos en más de un 40 por ciento. </p><p>De acuerdo con el presidente y CEO de Lactalis Colombia, Juan Camilo Velásquez, el fortalecimiento del campo también se ha apoyado en inversiones destinadas a mejorar la infraestructura rural. Lactalis ha financiado la instalación de más de 330 tanques de enfriamiento, beneficiando a más del 40 por ciento de sus productores. Esto preserva la calidad de la leche desde su origen y eleva los estándares de competitividad de la cadena láctea nacional. </p><h2>Los nuevos desafíos </h2><p>Entre sus desafíos se encuentra fortalecer la distribución en poblaciones intermedias y expandir la presencia en las tiendas de barrio, un canal estratégico para acercar sus marcas a millones de hogares. <b>Esta gestión se ha distinguido por una política constante de inversión, que mantiene un ritmo superior a los 20.000 millones de pesos anuales</b>, destinados a la modernización de plantas, automatización de procesos, fortalecimiento de la seguridad alimentaria y optimización logística. Durante 2025, las inversiones se concentraron en las plantas de Chía, Medellín y Cereté, y en la consolidación de la división de nutrición infantil. </p><p>En materia de sostenibilidad, los resultados son concretos. <b>En 2025, la compañía redujo en 13 por ciento el consumo de agua en sus procesos industriales e impulsó iniciativas de economía circular</b>. El ciento por ciento de las cajas de cartón utilizadas son de origen nacional y material reciclado, mientras que una alianza con Punto Azul permitió recuperar 14 toneladas de empaques para reincorporarlos a procesos productivos. </p><p>Asimismo, l<b>a empresa avanzó en la optimización de las rutas de recolección de leche para reducir emisiones asociadas al transporte y contribuir a la meta global del grupo de alcanzar la neutralidad de carbono hacia 2050</b>. “De cara al futuro, Lactalis tiene objetivos ambiciosos. Nuestra meta es alcanzar ventas por 1,4 billones de pesos y duplicar la operación en Colombia, mediante la expansión de la red de distribución, la penetración en categorías de alto valor agregado y enfrentar retos como la informalidad del sector lácteo”, señaló Juan Camilo Velásquez, CEO de Lactalis Colombia. </p><p><b>La compañía confía en que la combinación de innovación, disciplina, cercanía con el consumidor y apoyo al campo seguirá siendo la fórmula del éxito</b>. Con una estrategia que integra rentabilidad, sostenibilidad y desarrollo social, Lactalis Colombia demuestra que es posible consolidar una empresa competitiva mientras se genera valor para miles de familias productoras y para el país.</p><p><i>*Contenido elaborado con el apoyo de Lactalis Colombia</i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/H4JTW3QOMRFHTL23FZCWXOK3MU.JPG?auth=3682d59573933a33aa9c26b11aeaeef847fc8e4c4dbc00e98c0293d495eca13c&amp;smart=true&amp;width=5760&amp;height=3840" type="image/jpeg" height="3840" width="5760"><media:description type="plain"><![CDATA[Juan Camilo Velásquez, presidente y CEO de Lactalis Colombia.]]></media:description></media:content></item><item><title><![CDATA[Gobernador de Arauca habla de la otra cara del departamento: “Es una tierra muy productiva”]]></title><link>https://www.semana.com/nacion/articulo/gobernador-de-arauca-habla-de-la-otra-cara-del-departamento-es-una-tierra-muy-productiva/202600/</link><guid isPermaLink="true">https://www.semana.com/nacion/articulo/gobernador-de-arauca-habla-de-la-otra-cara-del-departamento-es-una-tierra-muy-productiva/202600/</guid><dc:creator><![CDATA[Dubán Jesús Villamizar Ardila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Durante años, Arauca ha sido noticia por los secuestros, enfrentamientos y presencia de grupos armados. Aunque los desafíos de seguridad aún persisten en el departamento,<b> su gobernador, Renson Jesús Martínez, quiso destacar durante el programa El Debate, de SEMANA</b>, las cosas buenas que también suceden en el territorio. </p><p>Para empezar se refirió a la conexión aérea entre Bogotá y Arauca, con vuelos de unos 50 minutos y tres aerolíneas que hoy prestan sus servicios. También se refirió a la doble calzada que avanza justo a la salida del aeropuerto. Una obra que según dijo tendrá un costo de 80.000 millones de pesos y que forma parte de un paquete de obras viales cercano a los 600.000 millones de pesos, que incluye inversiones en las vías urbanas de la capital, la conexión Arauca-Arauquita-Saravena, el corredor Tame-Puerto Rondón y otro tramo hacia la carretera Arauca-Bogotá. La apuesta es mejorar la movilidad y facilitar la salida de lo que se produce en las zonas rurales. </p><p><b>Arauca tiene unas 2,3 millones de hectáreas y alrededor de 1,3 millones de cabezas de ganado para una población de un poco más de 300.000 habitantes</b>. Pero todo ese potencial productivo convive con carencias básicas. Por ejemplo, cuando comenzó la actual administración, según Martínez, unas 10.000 familias de la capital del departamento no tenían conexión para acceder al servicio de gas. Gracias a una alianza con Ecopetrol se ampliaron las redes y las zonas urbanas de los siete municipios ya cuentan con cobertura. </p><p><b>La otra gran brecha está en la educación</b>. De los cerca de 3.000 jóvenes que terminan el bachillerato cada año, apenas el 7 por ciento accede a la educación superior, un indicador que a nivel nacional NACIÓN está en el 57 por ciento. Para reducir esa diferencia, el departamento gestionó la presencia de la Universidad Nacional en Arauca, la Universidad Industrial de Santander en Saravena, la UNAD en Arauquita y la ESAP en Arauca.</p><p>“<b>La educación superior es la apuesta más importante que tiene nuestro plan de desarrollo</b>”, aseguró el gobernador. Según su balance, más de 70.000 millones de pesos han sido destinados a estas instituciones y unos 1.600 estudiantes ya cursan programas presenciales en el departamento. La intención es atacar una de las causas detrás del rezago regional: que los jóvenes tengan que salir de Arauca para estudiar, pues en muchos casos deciden no regresar. </p><p>Su apuesta por la educación también favorece la seguridad. <b>Mantener a un niño en la escuela y facilitar su ingreso a la educación superior, advirtió, se traduce en quitarle jóvenes a la guerra</b>. Actualmente, Arauca tiene más de 55.000 estudiantes y unos 3.000 docentes. El transporte escolar de cerca de 10.000 niños rurales cuesta más de 60.000 millones de pesos al año, y la alimentación escolar llega, según el gobernador, al ciento por ciento de los estudiantes. </p><p><b>La educación es un tema especialmente sensible para Martínez</b>. En El Debate recordó que de niño tuvo que desplazarse desde una vereda hasta Arauquita para poder estudiar. Fue afortunado, porque para muchas familias rurales los costos de transporte, uniformes y alimentación se convierten en una barrera que les impide acceder o permanecer en el sistema educativo. </p><p><b>La salud es otra de las áreas donde el gobernador asegura haber encontrado una red deteriorada</b>. Su administración reporta inversiones superiores a 200.000 millones de pesos en hospitales, infraestructura y equipos, además de la recuperación de 23 puestos de salud rurales y la entrega prevista de diez ambulancias. La meta, explicó, es aumentar la capacidad de atención dentro del departamento y reducir los traslados de pacientes hacia otras ciudades. “Ojalá todos los servicios se puedan garantizar aquí mismo en Arauca”, señaló.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/EJXPCU4L5REHPK2IEY2GEFCOKA.jpeg?auth=56ff2b30af156f03ba100f700efc48800fc591ff329517fa8224e7cd7de902a0&smart=true&width=8192&height=5464" alt="Gobernador de Arauca, Renson Jesús Martínez en El Debate de SEMANA." height="5464" width="8192"/><h2>Seguridad, el gran desafío</h2><p>La seguridad sigue siendo el factor que atraviesa buena parte de las dificultades del territorio. <b>Martínez sostiene que la Fuerza Pública ha logrado contener acciones de los grupos armados, aunque reclama mayor capacidad tecnológica, inteligencia militar, horas de vuelo, logística y presencia operativa</b>. Su expectativa es que, con apoyo del Gobierno nacional, el departamento pueda recuperar el control de las zonas donde persiste la confrontación. </p><p>En ese punto dijo una de las frases más duras de la conversación: <b>“Arauca necesita ser libre de una vez por todas”</b>. El gobernador aseguró que busca que el departamento pueda vivir sin grupos armados y que los araucanos tengan la tranquilidad que merecen. También defendió los bombardeos como una herramienta de control territorial y se refirió a la operación realizada en Puerto Rondón contra una estructura disidente, en la que murieron menores de edad que, según su versión, habían sido vinculados a la estructura ilegal. El episodio generó una controversia judicial y llevó a suspender este tipo de operaciones mientras se establecía con certeza la presencia de menores.</p><p>Para el gobernador es una paradoja lo que sucede en el departamento, pues “<b>Arauca es una tierra muy productiva, rica y diversa</b>”, afirmó al referirse a lo que esta región podría aportar al país. En este punto destacó el ganado, el cacao, el turismo de naturaleza y una geografía que va desde verdes sabanas hasta zonas que forman parte del Nevado del Cocuy.</p><p>De hecho, el cacao que se cultiva en Arauca ya goza de reconocimiento. <b>El gobernador destacó la participación de productores araucanos en escenarios internacionales y anunció que Arauquita será sede, entre el 9 y el 12 de octubre</b>, del Salón Nacional del Cacao y del Chocolate y del Reinado Nacional del Cacao. En cuanto al turismo de naturaleza, hizo énfasis en actividades como el avistamiento de aves, y los recorridos por el río Arauca para observar la tonina y las sabanas del Cinaruco, donde habitan chigüiros, venados y aves, entre otras especies. </p><p>La cultura completó todo este retrato. <b>El Día Departamental del Llanero, que normalmente se celebra en julio y fue aplazado por la ola invernal, tendrá lugar este sábado 19 de septiembre</b>. La jornada comenzará a las cuatro de la mañana y reunirá a familias alrededor de los caballos, el joropo y la comida típica. Según Martínez se trata de una tradición que prepara buena parte del departamento durante todo el año y que muestra una dimensión de Arauca que rara vez llega a los titulares de los grandes medios nacionales. </p><p>Al final de El Debate, <b>la conversación volvió al futuro del gobernador. No habló de otra elección ni de un nuevo cargo</b>. Sus planes por ahora son estudiar y dedicarse a transformar este territorio que en los últimos tres años ha comenzado a cambiar. Martínez aspira dejar una huella que se traduzca en bienestar para la población. “Me gusta construir”, concluyó. </p><p><i>*Contenido elaborado con el apoyo de la Gobernación de Arauca</i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/YMIQ3TELI5BSFAVXVTM2E27Q7A.jpeg?auth=5c88fc8c0a15d11bb33920e481f573d013ce0a94e71effe386abaefd59be75ee&amp;smart=true&amp;width=7623&amp;height=5004" type="image/jpeg" height="5004" width="7623"><media:description type="plain"><![CDATA[Gobernador de Arauca, Renson Jesús Martínez.]]></media:description><media:credit role="author" scheme="urn:ebu">ALEJANDRO ACOSTA</media:credit></media:content></item><item><title><![CDATA[Ingram Micro y la revolución de la transformación digital empresarial: así funciona su metodología]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/ingram-micro-y-la-revolucion-de-la-transformacion-digital-empresarial-asi-funciona-su-metodologia/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/ingram-micro-y-la-revolucion-de-la-transformacion-digital-empresarial-asi-funciona-su-metodologia/202600/</guid><dc:creator><![CDATA[Dubán Jesús Villamizar Ardila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>El negocio de distribución de tecnología en Colombia desde hace algunos años está viviendo una gran transformación. El modelo tradicional, basado principalmente en conectar a los fabricantes con los integradores que llevan sus productos a las empresas, está evolucionando hacia ecosistemas en los que la tecnología permite integrar en un mismo lugar compras, servicios, financiación, información y gestión de clientes. </p><p><b>Este es precisamente el modelo que desde hace tres años Ingram Micro ha instalado en Colombia a través de su plataforma Xvantage</b>, una herramienta que se probó en 2023 en el país y que hoy es un sistema insignia en la operación global de la compañía, que nació en California en 1979 y que hoy tiene presencia en más de 50 países. </p><p>“<b>Xvantage no es un e-commerce, sino una plataforma que integra en un solo lugar a nuestros empleados, clientes y proveedores.</b> Este sistema representa cerca del 40 por ciento de nuestras ventas, el 70 por ciento de los clientes usa la plataforma y más de la mitad de las órdenes de compra se transaccionan por ella”, explicó Juan Andrés Mejía, director general de Ingram Micro Colombia. </p><p>Además de realizar compras,<b> los clientes pueden consultar en tiempo real el estado de sus pedidos, facturas y pagos</b>; administrar servicios recurrentes, como los asociados a la nube, y conocer cuándo recibirán una Juan Andrés Mejía, director general de Ingram Micro Colombia. orden. La plataforma también utiliza IA para analizar las compras y ofrecer comparaciones y recomendaciones de otras soluciones que podrían complementar las necesidades de cada empresa. </p><p><b>Esta capacidad de autogestión fue precisamente una de las razones por las que Colombia fue escogida como piloto de Xvantage</b>. A diferencia de otros mercados de la región, buena parte de la actividad empresarial del país está distribuida entre diferentes ciudades, por lo que Xvantage era perfecta para atender desde una plataforma central a integradores ubicados en distintas zonas del territorio. </p><p><b>La transformación también ha cambiado la relación con los clientes, ya que algunas operaciones</b>, que antes requerían la intervención de un empleado, pueden realizarse directamente en la plataforma, lo cual permite que los equipos comerciales dediquen más tiempo a acompañar proyectos de mayor complejidad y a diseñar soluciones de acuerdo con las necesidades de cada compañía. </p><p>De esta manera, Xvantage “<b>no solo funciona como un canal de ventas, sino como una herramienta para conectar y gestionar la relación entre fabricantes, integradores y la propia compañía</b>”, apuntó el gerente, quien señaló que una de las metas de la empresa es duplicar el tamaño de su operación en Colombia durante los próximos seis años. De igual manera, según Mejía, la apuesta también quiere consolidar a Ingram Micro como un “hub” tecnológico capaz de acompañar todo el proceso de transformación de las micro, pequeñas y grandes empresas, en un mercado en el que cada vez es más importante ofrecer una solución completa. </p><p><b>Ingram Micro busca aprovechar la oportunidad de transformación digital que tiene el país desde una operación que hoy genera más de 1,4 billones de pesos al año en Colombia y representa a más de 70 fabricantes de tecnología</b>. La multinacional cuenta además con más de 3.600 clientes locales, principalmente integradores, y tiene presencia en más de 30 ciudades del país, a quienes llega con un portafolio robusto y altamente competitivo.</p><p><i>*Contenido elaborado con el apoyo de Ingram Micro</i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/4FZ7R2VRYJEBFGFUF6HYJEEO6A.jpg?auth=61df6ff9e1d52859a1424c1f7f2b8b70d1d97bece415adf95490f52cbfc7ff57&amp;smart=true&amp;width=6051&amp;height=3942" type="image/jpeg" height="3942" width="6051"><media:description type="plain"><![CDATA[Juan Andrés Mejía, director general de Ingram Micro Colombia.]]></media:description><media:credit role="author" scheme="urn:ebu">ALEJANDRO ACOSTA-PUBLICACIONES S</media:credit></media:content></item><item><title><![CDATA[Crecer con el Banco Agrario: así se amplió la oferta para pequeños productores y negocios  ]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/crecer-con-el-banco-agrario-asi-se-amplio-la-oferta-para-pequenos-productores-y-negocios/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/crecer-con-el-banco-agrario-asi-se-amplio-la-oferta-para-pequenos-productores-y-negocios/202600/</guid><dc:creator><![CDATA[Comercial ]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>El Banco Agrario se afianza cada vez más como una de las entidades financieras con mayor arraigo entre los colombianos, principalmente en la ruralidad, consolidando a la fecha cerca de <b>2 millones de clientes activos,</b> de los cuales un poco más de un millón registra una cartera cercana a los<b> 25 billones de pesos</b> y en la que los pequeños productores cuentan con una participación del <b>70 por ciento.</b></p><p>Estas cifras reflejan cómo impacta el Banco Agrario la economía local, en la que viene inyectando cada vez más recursos para estimular todas las actividades productivas tanto en el sector agropecuario como en la industria y el comercio, sin descuidar el crédito hipotecario, la libre inversión y la economía popular.</p><p>Solo al cierre del primer semestre de este año, la entidad irrigó créditos del orden de 6,3 billones de pesos, <b>“lo que significó un incremento de 12 por ciento frente al mismo período del año anterior,</b> dando como resultado un promedio de 1 billón de pesos en créditos desembolsados cada mes para fortalecer no solo proyectos individuales sino también asociativos, e incluso gestión de los entes territoriales”, explicaron desde la entidad. </p><p> El desempeño que ha mostrado el único banco público del país y una de las entidades más representativas del Grupo Bicentenario se observa también en las utilidades, que alcanzaron los 344.136 millones de pesos al cierre del primer semestre, con un crecimiento de 6,5 por ciento en comparación con los 323.015 millones de pesos obtenidos entre enero y junio de 2025. </p><h2><b>Una banca más digital</b></h2><p> Entre las estrategias que ha venido fortaleciendo el Banco Agrario en los últimos años está la adopción de nuevas tecnologías y el lanzamiento de productos digitales, <b>que le han permitido competir en “franca lid” con la banca privada mediante una oferta más cercana a los cambios de la industria y en respuesta a lo que buscan los usuarios para mejorar su experiencia.</b></p><p>Ejemplo de ello es la billetera digital BICO, que a la fecha cuenta con cerca de 440.000 descargas y es utilizada en su mayoría por mujeres, con 85 por ciento de participación, y la cuenta de ahorros digital que ya registra más de 5.400 usuarios.</p><p>A esto se suman otras innovaciones como la APP del Banco y sus respectivas billeteras virtuales que hacen más fáciles, cómodas y rápidas las transacciones financieras; los pagos por PSE, la solicitud de créditos a través de botones que hoy están disponibles no solo en la página web del banco sino de diversos aliados, y la instalación de wifi<i> </i>gratuito para clientes y usuarios en su red de <b>796 oficinas </b>en todas las regiones —la más robusta del sector financiero colombiano—, entre otras iniciativas. </p><p>Finalmente, <b>como muestra de su compromiso con los colombianos que trabajan día a día por el país, el Banco Agrario viene diseñando productos que no solo han sido de gran aceptación por parte del público sino que gozan del reconocimiento del sector. </b>Entre ellos se encuentra la tarjeta de crédito Mujer Agro, que recibió el premio a la Innovación Social por parte de Asobancaria durante la pasada convención bancaria y que constituye una muestra de la importante gestión que lleva a cabo la entidad en el mercado financiero local.</p><p><i>*Contenido elaborado con el apoyo del Banco Agrario.</i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/F6J4DPN47RH53IXS52ELRXPH2Y.png?auth=675a2da4476e639831c7be01c517d8e75fcb6d32dbf9f2719fc96f8ea94f5128&amp;smart=true&amp;width=1672&amp;height=941" type="image/png" height="941" width="1672"><media:description type="plain"><![CDATA[Hoy el Banco Agrario cuenta con cerca de 2 millones de clientes activos.]]></media:description></media:content></item><item><title><![CDATA[Volkswagen Camiones y Buses ganan terreno en Colombia: así avanza la nueva apuesta por el transporte pesado]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/volkswagen-camiones-y-buses-ganan-terreno-en-colombia-asi-avanza-la-nueva-apuesta-por-el-transporte-pesado/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/volkswagen-camiones-y-buses-ganan-terreno-en-colombia-asi-avanza-la-nueva-apuesta-por-el-transporte-pesado/202600/</guid><dc:creator><![CDATA[Dubán Jesús Villamizar Ardila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Los últimos años no han sido fáciles para el segmento de buses y camiones en Colombia. Con la pandemia se afectó la dinámica en términos de volumen porque coincidió con el cambio de normativa de Euro 4 a Euro 6 y además entró en vigencia el decreto de la póliza ambiental, con el que se pasó de pagar de un 15 a un 25 por ciento para vehículos medianos y pesados, a partir de octubre de 2025.</p><p>Sin embargo, <b>esta realidad no ha detenido al sector gracias a la apuesta de empresas como Porsche Colombia, que desde 2011 viene acelerando con estrategias que contribuyan a dinamizar el mercado</b>. Al frente del timón ha estado Camilo Rodríguez, gerente de marca VW Camiones y Buses y quien asegura que, gracias a la manufactura de sus productos en Resende, Brasil, cuentan con un portafolio adecuado para la topografía y condiciones de Colombia. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QCCPL2DC3FGYRCUF7E3CXNDGPI.jpg?auth=b0b09b283b2dd8225a06ec3df28a31878e42831c977bd4989a00c5f9881ccc83&smart=true&width=4746&height=3563" alt="Camilo Rodríguez, gerente de marca VW Camiones y Buses." height="3563" width="4746"/><p>“Hemos sido exitosos y visibles en el segmento de medianos y pesados, enfocándonos en la productividad y calidad del producto”, destacó el directivo.</p><p>En 2026 llegó el Delivery 11.180 4x4, un vehículo que llenó un vacío que había en el segmento de camiones livianos, al garantizar mayor capacidad de carga en sus 6,5 toneladas. “<b>Nos enfocamos en los clientes corporativos que operan en mantenimiento de redes y de emergencia a nivel rural y también en el segmento del agro</b>”, explicó Rodríguez. </p><p>En el primer trimestre de 2026 trajeron el Tractor 6x4, con dos productos: el 26.480, para carreteras o vías principales, y el 33.480, ideal para el segmento ‘off road’ y para atender las exigencias de industrias como la petrolera, palma, la caña de azúcar y granjas agrícolas.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/JACYEKWCMJER5LUR72RHTHNWDQ.jpg?auth=73ed2dfd3f8db2dbc9455b7e518bc494bfd0cbc13b59e4e9db7a801477bbafa4&smart=true&width=9504&height=6336" alt="Los segmentos liviano, mediano y pesado hacen parte de la estrategia de Volkswagen Camiones y Buses para crecer en Colombia." height="6336" width="9504"/><p><b>Con la llegada de estos nuevos modelos preveen cerrar 2026 con 500 unidades y el año entrante con 650 unidades</b>. “Somos conservadores, pero con la ventaja de que tenemos una posible reacción acelerada de parte de la fábrica en caso de que se vean negocios de clientes corporativos de gran volumen”.</p><h2>Lo que se viene </h2><p><b>La posventa es otro componente fundamental de la cadena de valor.</b> “En camiones no se puede tener una configuración de citas ni una capacidad de taller única”, por lo que la marca ha desarrollado y fortalecido el concepto ‘In House’, mediante el cual la marca llega directamente a los talleres de sus clientes, donde capacita y certifica al personal, además de suministrar los repuestos necesarios para las operaciones. </p><p>“Hay que tener en cuenta que hoy en día los sistemas de los camiones entregan toda la información pertinente en términos de consumo y hábitos de manejo del conductor, lo que permite tomar varias decisiones en términos de productividad”, precisó.</p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/FI3BMRZVWNABVDRJNWUWRWJBS4.JPG?auth=3092347e34fd5174d384cf84636d1756a207cf9930788b23faacdc18ae660b7b&smart=true&width=5712&height=4284" alt="Volkswagen Camiones y Buses amplía su presencia en Colombia con una oferta para distintos segmentos del transporte de carga." height="4284" width="5712"/><p><b>Volkswagen Camiones y Buses mantiene sus planes de expansión y contempla el lanzamiento de tres nuevas unidades</b>. “Venimos con un modelo de menor tamaño con gran capacidad de carga para atender las operaciones urbanas y otro de tamaño liviano, con una capacidad de carga de un vehículo mediano, que va a revolucionar el transporte de bebidas en los centros urbanos de las ciudades”, anunció Rodríguez.</p><p>Finalmente, <b>está previsto un camión mediano 4x4 de 17 toneladas, orientado al transporte de ganado y a las operaciones rurales</b>. La llegada de estos modelos ampliará la oferta de la marca en Colombia y permitirá atender operaciones que van desde la distribución urbana hasta el transporte de carga en zonas rurales.</p><p><i>*Contenido elaborado con el apoyo de Porsche Colombia</i> </p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/D3QSRGTI6JEW7G3LPQKOZH35NA.jpg?auth=bd0a2d5f69e63d201a8bfb8f0ff5cea5e58715a1656be6413f9a983d4b94ca92&amp;smart=true&amp;width=9504&amp;height=6336" type="image/jpeg" height="6336" width="9504"><media:description type="plain"><![CDATA[La marca fortalece su operación en el país con modelos adaptados a las condiciones de las carreteras y las necesidades del transporte.]]></media:description></media:content></item><item><title><![CDATA[Servibanca evoluciona como facilitador de Bre-B: así funciona su ecosistema de pagos inmediatos]]></title><link>https://www.semana.com/hablan-las-marcas/articulo/servibanca-evoluciona-como-facilitador-de-bre-b-asi-funciona-su-ecosistema-de-pagos-inmediatos/202600/</link><guid isPermaLink="true">https://www.semana.com/hablan-las-marcas/articulo/servibanca-evoluciona-como-facilitador-de-bre-b-asi-funciona-su-ecosistema-de-pagos-inmediatos/202600/</guid><dc:creator><![CDATA[Dubán Jesús Villamizar Ardila]]></dc:creator><description></description><pubDate>Sat, 19 Sep 2026 11:00:00 +0000</pubDate><content:encoded><![CDATA[<p>Pagar, transferir dinero o recibirlo desde el celular en cuestión de segundos empieza a convertirse en parte de la vida cotidiana de los colombianos. Lo que para un usuario puede parecer una operación sencilla tiene detrás un desafío mucho mayor: <b>lograr que diferentes entidades, plataformas y canales puedan hablar entre sí, procesar las operaciones en tiempo real y hacerlo de manera segura</b>. </p><p>Después de más de cuatro décadas dedicada a la infraestructura transaccional del país, <b>Servibanca amplía su papel y participa como Facilitador de Bre-B, la infraestructura de pagos inmediatos desarrollada por el Banco de la República</b>. Su apuesta combina tecnología, capacidad de procesamiento y cobertura nacional para conectar a los distintos actores de este nuevo ecosistema. </p><p>Bre-B permite enviar y recibir dinero las 24 horas del día, los 365 días del año, utilizando mecanismos sencillos como las llaves, asociadas a un número de celular, documento de identidad, correo electrónico o código alfanumérico, y códigos QR interoperables. </p><p><b>El cambio va más allá de hacer una transferencia más rápido:</b> diferentes participantes pueden conectarse bajo un mismo esquema para mover dinero de manera inmediata. </p><h2>La nueva forma de mover el dinero </h2><p><b>La interoperabilidad es, precisamente, una de las grandes apuestas de Bre-B</b>. Para el usuario significa una experiencia más sencilla. Para las empresas y entidades financieras supone una oportunidad para desarrollar nuevos servicios, mejorar sus procesos de recaudo y ofrecer más alternativas de pago. </p><p>Y es justamente aquí en donde el papel del facilitador cobra importancia. <b>Servibanca ofrece a bancos, cooperativas, fintech, billeteras digitales, comercios y empresas la infraestructura</b> necesaria para conectarse con este ecosistema. Esto permite habilitar transferencias inmediatas y ampliar las posibilidades de interacción entre quienes envían y reciben dinero. </p><p><b>El alcance potencial es amplio: </b>comercios, grandes empresas, industrias, distribuidores, servicios públicos, instituciones de salud y educación, pymes y emprendedores pueden aprovechar los pagos inmediatos para agilizar sus operaciones. </p><p><b>En todos estos casos, el objetivo es el mismo: que mover el dinero sea cada vez más fácil y rápido</b>. “Con el incremento de las operaciones digitales y la llegada de Bre-B ingresamos como un nodo certificado por el Banco de la República para facilitar este tipo de procesos y establecer nuevos flujos que puedan unir las operaciones digitales y las operaciones en los cajeros automáticos”, explican desde Servibanca.</p><p><b>La conexión con los cajeros es especialmente relevante para una compañía cuya historia está ligada a estos canales</b>. Servibanca comenzó habilitando operaciones que hoy parecen habituales, como transferencias, pagos de servicios, donaciones y multas de tránsito. </p><p>Con el tiempo llegaron las operaciones sin tarjeta, iniciadas desde las aplicaciones móviles de las entidades financieras y culminadas en el cajero. <b>Ahora, Bre-B abre una nueva etapa: </b>conectar con mayor facilidad el mundo digital con una infraestructura que durante décadas ha estado presente en el territorio. </p><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/FHTRTSMUTFHD7IOLKKI3YJXNT4.jpeg?auth=49387eead9ca20c8021278cf58413f4680aaf056222fdd11fcff39f514442f89&smart=true&width=1032&height=648" alt="Ventajas de utilizar el sistema de pagos." height="648" width="1032"/><h2>Más allá de las grandes ciudades </h2><p>La digitalización financiera también tiene un reto geográfico. Hay municipios y zonas rurales en los que acceder a servicios financieros sigue siendo más difícil. </p><p><b>En ese terreno, los más de 40 años de operación de Servibanca adquieren otra dimensión</b>. Su infraestructura y presencia nacional le han permitido acercar servicios transaccionales a regiones donde la banca tradicional no siempre tiene la misma cobertura. </p><p>“<b>Creemos que la inclusión financiera en Colombia ha sido fundamental</b>, especialmente por buscar nuestra presencia en las regiones donde la banca tradicional suele tener poca presencia. Hemos enfocado nuestra estrategia en conectar los territorios más alejados con el sistema financiero y la economía digital”, señalaron desde Servibanca. </p><p><b>Esa experiencia puede ser determinante en la expansión de los pagos inmediatos</b>. La transformación no consiste únicamente en que las grandes ciudades adopten nuevas tecnologías, sino en que más personas, negocios y empresas puedan participar de una economía en la que realizar una operación financiera sea cada vez más sencillo, sin importar dónde estén. </p><p><b>Esa experiencia también ha permitido facilitar operaciones con impacto social,</b> como la recepción de donaciones para fundaciones y organizaciones que trabajan por distintas causas. </p><h2>De operador de canales a habilitador del ecosistema </h2><p><b>La evolución de Servibanca refleja también la transformación del sistema financiero colombiano: </b>de una infraestructura centrada en cajeros, pasó a una plataforma que acompaña nuevas formas de realizar operaciones. Ahora, como Facilitador de Bre-B, pone esa experiencia al servicio de entidades, empresas y comercios. </p><p>“<b>Estamos en un proceso de transformación para que nuestros servicios tengan una nueva experiencia más acorde con las necesidades del sector financiero y los usuarios</b>, para que puedan realizar sus operaciones de una forma más ágil y efectiva”, detallaron desde Servibanca.</p><p>Para una empresa que ha acompañado durante más de cuatro décadas la evolución de los medios de pago en Colombia, el desafío ahora es distinto: no se trata solamente de operar un canal, sino de ayudar a conectar todo un ecosistema. </p><p><b>Ese es el valor que Servibanca busca aportar a Bre-B:</b> experiencia para procesar transacciones, tecnología para integrar participantes y cobertura para llevar la transformación más allá de los grandes centros urbanos. “Nuestro mayor valor no reside únicamente en la infraestructura tecnológica, sino en haber democratizado el acceso al dinero y a los servicios financieros en un país con una geografía compleja y una histórica brecha de bancarización”, concluyeron desde la entidad.</p><p><i>*Contenido elaborado con el apoyo de Servibanca </i></p>]]></content:encoded><media:content url="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/MQN5PKNDPRD3ZL43YXYSNMAXKI.jpeg?auth=828ab9dcbecdb463dd005a32c21d69c002e2d56eaefcdc545fabfacaef0ce1d9&amp;smart=true&amp;width=2560&amp;height=1813" type="image/jpeg" height="1813" width="2560"><media:description type="plain"><![CDATA[Luis Eduardo Díaz, Gerente  General de Servibanca.]]></media:description></media:content></item><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 expresidente Gustavo Petro y Eva Ferrer, exconsejera presidencial para la Reconciliación y examiga íntima de la exprimera dama Verónica Alcocer.</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><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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/QEXLXDOWK5ASXG4OVBP25GC5VU.jpg?auth=22390b4c8d3259bc131d84051706b2c7d2f1329e44cee30d8ea5cc57681ad552&smart=true&width=1280&height=927" alt="FOTO: suministradas a semana - api" height="927" width="1280"/><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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/3IRO6XQ45RAYNPKCZBNQCCR5YQ.jpg?auth=66fd0d29a5c0665c3794e83c7d29ace5e79cede2b140b6b7051f44ddaea26f98&smart=true&width=1280&height=720" alt="Mario Fernández Alcocer" height="720" width="1280"/><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><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 <i>mobbing </i>por parte de Mario para sacarme de su entorno porque yo no apruebo”, agregó.</p><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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/LHJUO5DJVZAVPLMDY65K7CKX4A.jpg?auth=70ed39a8a7b64d86c62c8c393d75cf238e340e5b2666e2b417470dff43ea16d9&smart=true&width=1280&height=720" alt="Agmeth Escaf, representante a la C√°mara por el Pacto Hist√≥rico Bogota enero 2023Foto Guillermo Torres Reina / Semana " height="720" width="1280"/><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><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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/AFABMIVH3RC2FH54WP7NA3VISQ.jpg?auth=952c2008cbf76857a70052e63303f03712075e0dd9ee9b8a0f302d4c5996c50b&smart=true&width=1280&height=552" alt="FOTO: suministradas a semana - api" height="552" width="1280"/><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><h2>“El poder envenena”</h2><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/HSODH2QCN5HHHJ3CMUEWOW5OE4.jpg?auth=44386892108fc33357dfa4c8bcecfd9bd82e97919cfab5dda3a8856c4e5921df&smart=true&width=1280&height=720" alt="El expresidente Gustavo Petro le propuso a Eva Ferrer que buscara el patrocinio de Ecopetrol y el Banco Agrario para imprimir un libro." height="720" width="1280"/><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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/E6DRIX5ECRDTJMIPQUJ33UZVAA.jpg?auth=af7ec93602a2a6fbbc37375feeb4e79d1b7881f4bcca867bf54f6007bed668f9&smart=true&width=1280&height=605" alt="FOTO: suministradas a semana - api" height="605" width="1280"/><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><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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/NZWF3K672VHQHLQYMRPR2QLV3A.jpg?auth=4e52cfa5fdf3d8f41e876b74dce0eaa83f5b00eb649107785d1936175b40f090&smart=true&width=1280&height=668" alt="FOTO: suministradas a semana - api" height="668" width="1280"/><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><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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/ZPWEXTQI2JER3FGWL6SHOUJNOU.jpg?auth=beb0d810bc70c25ee503933ad958f8faf5556130b6a721f1470ef3f44b45795a&smart=true&width=1280&height=517" alt="FOTO: suministradas a semana - api" height="517" width="1280"/><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><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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/2J7BY3MEGJDBLKOHPRODQTFY4I.jpg?auth=58ff3d3ab67becc991b1342265cf810000e29a62e91fd0f867271fe33e794977&smart=true&width=1280&height=720" alt="El quiebre entre Eva Ferrer y Verónica Alcocer fue comunicado a Gustavo Petro a través de una carta." height="720" width="1280"/><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><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>“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/AIUMYQ3ZDNAP3EUBC6TXSS3GOM.jpg?auth=b3b3120731042d73570d131625473960c04ef8059ee15806736b4d84a17dc02b&smart=true&width=1280&height=502" alt="FOTO: suministradas a semana - api" height="502" 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><img src="https://semana-semana-prod.web.arc-cdn.net/resizer/v2/7INYYKMEEBGRJASJV4DN4MW26Q.jpg?auth=8949d21d3b96bcc9ffd0a55a981b4a502e273aafade6d9520a5c09995468442f&smart=true&width=1280&height=658" alt="FOTO: suministradas a semana - api" height="658" width="1280"/><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/D5L75C6OVFG3TMOX3RLDJPMZ7Q.jpg?auth=322f993f8a4e82e8697d7aef6178ec67922ab921e9b37b565b63579a0c87338f&smart=true&width=1280&height=239" alt="FOTO: suministradas a semana - api" height="239" 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[Debate de la UNGRD: las posturas del Pacto Histórico y el Centro Democrático]]></title><link>https://www.semana.com/confidenciales/articulo/debate-de-la-ungrd-las-posturas-del-pacto-historico-y-el-centro-democratico/202643/</link><guid isPermaLink="true">https://www.semana.com/confidenciales/articulo/debate-de-la-ungrd-las-posturas-del-pacto-historico-y-el-centro-democratico/202643/</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, el Pacto Histórico y el Centro Democrático sentaron su postura sobre un debate de la Unidad Nacional para la Gestión del Riesgo de Desastres (UNGRD). Durante el debate de control político se informó 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. </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,  Francisco  Argüello]]></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[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[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[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[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[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[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[“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[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></channel></rss>