Connect with us

POLITICA

María Eugenia Vidal cuestionó el acuerdo del PRO con LLA: “No voy a hacer campaña en esta elección”

Published

on


María Eugenia Vidal rompió el silencio sobre la alianza electoral entre el PRO y La Libertad Avanza en la Ciudad, y lo hizo con contundencia desde sus redes sociales: “Creo que la Argentina necesita una oposición constructiva”, fue su frase inicial en un video que rápidamente generó repercusión.

En su mensaje, la exgobernadora bonaerense recordó que había “dado la discusión interna y trabajado para representar esa alternativa, pero hubo otra decisión distinta”. Explicó que si bien acepta la decisión del partido, no la comparte ni la acompañará: “No estoy dispuesta a ceder mis convicciones por una elección ni por un cargo”.

Advertisement

Vidal enfatizó que las elecciones no justifican renunciar a principios fundamentales. Afirmó: “No creo en perder la identidad, los valores, ni la posibilidad de representar a miles de argentinos que se siguen viendo reflejados en el PRO”.

Además, fue clara al manifestar su rechazo político y ético frente al nuevo acuerdo: “No voy a hacer campaña en esta elección como candidata, ni en el PRO, ni en un acuerdo con La Libertad Avanza, ni en ningún otro lugar”. A sus palabras añadió un pedido a sus seguidores: “Acá estoy, sigamos juntos, no nos dejemos desanimar”.

La entrada María Eugenia Vidal cuestionó el acuerdo del PRO con LLA: “No voy a hacer campaña en esta elección” se publicó primero en Nexofin.

Advertisement



alianza La Libertad Avanza PRO,Elecciones,María Eugenia Vidal,Mauricio Macri

POLITICA

Uno por uno, cómo votaron los diputados el proyecto de Emergencia del Garrahan

Published

on


Conteo de Votos y Hemiciclo

Uno por uno, así votaron los diputados la Ley Garrahan

Advertisement

Advertisement


`
: `

Advertisement
foto-diputado

`
}

${bloque}

`;
targetContainer.appendChild(card);
}

function createHemicicleSmall(nAfirmativo, nNegativo, nAbstencion, nAusente) {
const hemicycle = document.querySelector(‘.votos-diputados__hemiciclo.small’);
hemicycle.innerHTML = »; // Clear previous content.

Advertisement

const centerX = 300;
const baseY = 450;
const numberOfRows = 10;
// Array of seats per row (from outer to inner)
const seatsPerRow = [38, 36, 33, 30, 27, 24, 21, 19, 16, 13];
const verticalOffset = 2;
const totalSeats = seatsPerRow.reduce((a, b) => a + b, 0);
const totalVotes = nAfirmativo + nNegativo + nAbstencion + nAusente;

// Instead of percentage-based rounding, we’ll compute a per-row distribution
// using floor() and then distribute any remaining seats based on the remainders.
let rowSeatCounts = seatsPerRow.map((seatsInRow) => {
// Compute the exact (floating point) allocation for each category.
const exactAfirmativo = (nAfirmativo * seatsInRow) / totalSeats;
const exactNegativo = (nNegativo * seatsInRow) / totalSeats;
const exactAbstencion = (nAbstencion * seatsInRow) / totalSeats;
const exactAusente = (nAusente * seatsInRow) / totalSeats;
// Take floor values.
let rowAfirmativo = Math.floor(exactAfirmativo);
let rowNegativo = Math.floor(exactNegativo);
let rowAbstencion = Math.floor(exactAbstencion);
let rowAusente = Math.floor(exactAusente);
let assigned = rowAfirmativo + rowNegativo + rowAbstencion + rowAusente;
let diff = seatsInRow – assigned;
// Create an array of remainders along with category identifiers.
let remainders = [{
cat: «afirmativo»,
remainder: exactAfirmativo – rowAfirmativo
},
{
cat: «negativo»,
remainder: exactNegativo – rowNegativo
},
{
cat: «abstencion»,
remainder: exactAbstencion – rowAbstencion
},
{
cat: «ausente»,
remainder: exactAusente – rowAusente
}
];
// Sort descending by remainder.
remainders.sort((a, b) => b.remainder – a.remainder);
// Distribute the remaining seats one by one to the categories with the highest remainders.
while (diff > 0) {
for (let r of remainders) {
if (diff <= 0) break;
switch (r.cat) {
case «afirmativo»:
rowAfirmativo++;
break;
case «negativo»:
rowNegativo++;
break;
case «abstencion»:
rowAbstencion++;
break;
case «ausente»:
rowAusente++;
break;
}
diff–;
}
}
return {
afirmativo: rowAfirmativo,
negativo: rowNegativo,
abstencion: rowAbstencion,
ausente: rowAusente
};
});

// Now, using your inverted loop order (columns first, then rows)
const maxSeatsInRow = seatsPerRow[0]; // maximum seats in the outer row

Advertisement

// For each seat position (by column, then row), assign the color based on that row’s distribution.
for (let col = 0; col < maxSeatsInRow; col++) {
for (let row = 0; row < numberOfRows; row++) {
if (col < seatsPerRow[row]) { // only if this row has a seat at this column
const seatsInThisRow = seatsPerRow[row];
const radius = 170 – row * (16 – verticalOffset);
const angleRange = Math.PI; // semicircle
const angleStep = (seatsInThisRow > 1) ? angleRange / (seatsInThisRow – 1) : 0;
const angle = (Math.PI – angleRange) / 2 + col * angleStep;
const x = centerX + radius * Math.cos(angle);
const y = baseY – radius * Math.sin(angle);

// For this row, assign colors in order:
// First use available «afirmativo», then «negativo», then «abstencion», then «ausente»
let colorClass=»color-empty»;
if (rowSeatCounts[row].afirmativo > 0) {
colorClass=»color-afirmativo»;
rowSeatCounts[row].afirmativo–;
} else if (rowSeatCounts[row].negativo > 0) {
colorClass=»color-negativo»;
rowSeatCounts[row].negativo–;
} else if (rowSeatCounts[row].abstencion > 0) {
colorClass=»color-abstencion»;
rowSeatCounts[row].abstencion–;
} else if (rowSeatCounts[row].ausente > 0) {
colorClass=»color-ausente»;
rowSeatCounts[row].ausente–;
}
const seat = document.createElement(‘div’);
seat.classList.add(‘seat’, colorClass);
seat.style.left = `${x}px`;
seat.style.top = `${y}px`;
hemicycle.appendChild(seat);
}
}
}

// Set the legend text.
const leyText = nAfirmativo > nNegativo ? ‘Ley Aprobada’ : ‘Ley no aprobada’;
document.querySelector(‘#voto-summary’).innerHTML = `

Advertisement

Afirmativo: ${nAfirmativo} |
Negativo: ${nNegativo}

Abstención: ${nAbstencion} |
Ausente: ${nAusente}

` + ‘

‘ + leyText + ‘

Advertisement

‘;
}

// Creates the big hemiciclo visualization.
function createHemicicleBig(nAfirmativo, nNegativo, nAbstencion, nAusente) {
const hemicycle = document.querySelector(‘.votos-diputados__hemiciclo.big’);
hemicycle.innerHTML = »; // Clear previous content.

const centerX = 300;
const baseY = 450;
const numberOfRows = 10;
// Array of seats per row (outer to inner; total should be 257)
const seatsPerRow = [38, 36, 33, 30, 27, 24, 21, 19, 16, 13];
const verticalOffset = 2;
const totalSeats = seatsPerRow.reduce((a, b) => a + b, 0);

Advertisement

// Raw vote counts must sum to totalSeats (257)
const totalVotes = nAfirmativo + nNegativo + nAbstencion + nAusente;
if (totalVotes !== totalSeats) {
console.warn(«Total votes (» + totalVotes + «) do not equal total seats (» + totalSeats + «).»);
}

// — Per-Row Distribution Using Absolute Counts —
// For each row, compute the exact allocation for each vote category based on its fraction of the total seats.
let rowSeatCounts = seatsPerRow.map(seatsInRow => {
const exactA = (nAfirmativo / totalSeats) * seatsInRow;
const exactN = (nNegativo / totalSeats) * seatsInRow;
const exactAb = (nAbstencion / totalSeats) * seatsInRow;
const exactAu = (nAusente / totalSeats) * seatsInRow;

let rowA = Math.floor(exactA);
let rowN = Math.floor(exactN);
let rowAb = Math.floor(exactAb);
let rowAu = Math.floor(exactAu);

Advertisement

let assigned = rowA + rowN + rowAb + rowAu;
let diff = seatsInRow – assigned;

// Create an array of remainders for each category.
let remainders = [{
cat: «afirmativo»,
rem: exactA – rowA
},
{
cat: «negativo»,
rem: exactN – rowN
},
{
cat: «abstencion»,
rem: exactAb – rowAb
},
{
cat: «ausente»,
rem: exactAu – rowAu
}
];
// Sort the remainders in descending order.
remainders.sort((a, b) => b.rem – a.rem);

// Distribute any leftover seats one by one.
while (diff > 0) {
for (let r of remainders) {
if (diff <= 0) break;
switch (r.cat) {
case «afirmativo»:
rowA++;
break;
case «negativo»:
rowN++;
break;
case «abstencion»:
rowAb++;
break;
case «ausente»:
rowAu++;
break;
}
diff–;
}
}
return {
afirmativo: rowA,
negativo: rowN,
abstencion: rowAb,
ausente: rowAu
};
});

Advertisement

// — Global Correction —
// Sum the allocated seats for each category across all rows.
let globalA = rowSeatCounts.reduce((sum, row) => sum + row.afirmativo, 0);
let globalN = rowSeatCounts.reduce((sum, row) => sum + row.negativo, 0);
let globalAb = rowSeatCounts.reduce((sum, row) => sum + row.abstencion, 0);
let globalAu = rowSeatCounts.reduce((sum, row) => sum + row.ausente, 0);

// For each category, if the global total is less than the raw count, add the missing seats to the outer row (row 0).
if (globalA < nAfirmativo) {
rowSeatCounts[0].afirmativo += (nAfirmativo – globalA);
}
if (globalN < nNegativo) {
rowSeatCounts[0].negativo += (nNegativo – globalN);
}
if (globalAb < nAbstencion) {
rowSeatCounts[0].abstencion += (nAbstencion – globalAb);
}
if (globalAu < nAusente) {
rowSeatCounts[0].ausente += (nAusente – globalAu);
}

// — Seat Placement Using Inverted Loop Order —
const maxSeatsInRow = seatsPerRow[0];
for (let col = 0; col < maxSeatsInRow; col++) {
for (let row = 0; row < numberOfRows; row++) {
if (col < seatsPerRow[row]) { // Only process if this row has a seat at the current column.
const seatsInThisRow = seatsPerRow[row];
const radius = 300 – row * (30 – verticalOffset);
const angleRange = Math.PI; // semicircle
const angleStep = (seatsInThisRow > 1) ? angleRange / (seatsInThisRow – 1) : 0;
const angle = (Math.PI – angleRange) / 2 + col * angleStep;
const x = centerX + radius * Math.cos(angle);
const y = baseY – radius * Math.sin(angle);

Advertisement

// For the current row, assign the color in order: afirmativo, then negativo, then abstencion, then ausente.
let colorClass=»color-empty»;
if (rowSeatCounts[row].afirmativo > 0) {
colorClass=»color-afirmativo»;
rowSeatCounts[row].afirmativo–;
} else if (rowSeatCounts[row].negativo > 0) {
colorClass=»color-negativo»;
rowSeatCounts[row].negativo–;
} else if (rowSeatCounts[row].abstencion > 0) {
colorClass=»color-abstencion»;
rowSeatCounts[row].abstencion–;
} else if (rowSeatCounts[row].ausente > 0) {
colorClass=»color-ausente»;
rowSeatCounts[row].ausente–;
}

const seat = document.createElement(‘div’);
seat.classList.add(‘seat’, colorClass);
seat.style.left = `${x}px`;
seat.style.top = `${y}px`;
hemicycle.appendChild(seat);
}
}
}

/* // — Update Legend —
const leyText = nAfirmativo > nNegativo ? «Ley Aprobada» : «Ley no aprobada»;
const resultsText=»shshs»;
document.querySelector(«#voto-summary»).innerHTML = leyText + resultsText; */
}

Advertisement

// Go-to-top button functionality.
document.addEventListener(‘DOMContentLoaded’, function() {
const goToTopButton = document.querySelector(‘.votos-diputados__go-to-top’);
const targetElement = document.querySelector(‘.votos-diputados’);

goToTopButton.addEventListener(‘click’, function() {
targetElement.scrollIntoView({
behavior: ‘smooth’
});
});
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
goToTopButton.style.display = entry.isIntersecting ? ‘block’ : ‘none’;
});
}, {
root: null,
rootMargin: ‘0px’,
threshold: 0.1
});
observer.observe(targetElement);

// Attach the toggle listener to each vote button.
const toggleBtns = document.getElementsByClassName(‘votos-diputados__voto-btn’);
for (let i = 0; i < toggleBtns.length; i++) {
toggleBtns[i].addEventListener(‘click’, function() {
this.classList.toggle(‘active’);
const panel = this.nextElementSibling;
panel.style.maxHeight = panel.style.maxHeight ? null : ‘14000px’;
});
}

Advertisement

// Now simulate a click on each button from within DOMContentLoaded.
// This will trigger the listener and expand each panel on load.
for (let i = 0; i < toggleBtns.length; i++) {
toggleBtns[i].click();
}

});

Advertisement
Continue Reading

POLITICA

El PRO y LLA firmaron la alianza en CABA entre vaivenes sobre una eventual foto de Karina Milei junto a Mauricio Macri

Published

on



Pasaron casi 48 horas desde que La Libertad Avanza y el PRO confirmaron, off the record, que competirán unidos en una alianza en la Ciudad de Buenos Aires. Desde entonces no hubo una constatación oficial de parte de los distanciados líderes de los partidos, Karina Milei y Mauricio Macri, ni de sus representantes, sean voceros o funcionarios. Y si bien desde la Casa Rosada deslizaban que era inminente que se tomen y publiquen una foto juntos, en el macrismo se mostraban reticentes a ratificarlo.

La coalición es prácticamente un hecho especialmente desde anoche, cuando los apoderados de los espacios, Pilar Ramírez (LLA) y Ezequiel Sabor junto a Jorge Macri (PRO), firmaron el documento oficial para conformarla que presentarán en el transcurso del día ante la Justicia Electoral (tienen tiempo, según el calendario electoral, hasta la medianoche).

Advertisement

La decisión de ambos lados de ir juntos es firme, pero está atravesada por fricciones que se vieron en los vaivenes entre Karina Milei y Mauricio Macri sobre el modo de anunciar el matrimonio político al electorado de CABA. Una cuestión política no menor en un momento en que el PRO recibe críticas, incluso de los propios, por plegarse a las duras condiciones que le impusieron los Milei: resignar cualquier candidatura a senador; ubicar candidatos en las listas para diputados recién en el quinto y sexto lugar; y ceder con el color, el sello y el logo del nuevo espacio conjunto, que será violeta, se llamará Alianza La Libertad Avanza y hará gala del águila libertaria. Además de excluir nada menos que al jefe de gobierno amarillo, Jorge Macri de todas las negociaciones, fotos y decisión sobre los lugares en las listas.

El detalle de la foto no desveló, pero sí ocupó a la cúpula mileista, en sentido inverso. Desde en que llegaron a un acuerdo con PRO, de palabra y en condiciones tensas, en la Casa Rosada dejaron trascender que era inminente una imagen de concordancia entre los jefes de las tribus violeta y amarilla, mientras que, del otro lado, lo negaban tajantemente. Algunos macristas incluso percibieron un intento de presión hacia Macri. Otros fueron más allá y dijeron que detectaron cierto grado de “preocupación” en la insistencia.

Hasta anoche, nadie negaba que la líder del oficialismo y el jefe de los socios hubieran tenido una conversación, pero tampoco lo confirmaban. En ninguna de las tribus querían ofender a la otra con filtraciones y complicar aún más el vínculo, a través de la prensa.

Advertisement

Chief of Government of Buenos Aires Jorge Macri attends an event marking the 31st anniversary of the 1994 bombing attack on the Argentine Israelite Mutual Association (AMIA) community centre, in Buenos Aires, Argentina July 18, 2025. REUTERS/Mariana Nedelcu

Por lo pronto, el comunicado conjunto ya está redactado, aprobado y rubricado por los dos. Del lado de PRO, hasta anoche, decían que sólo accederán a que se publique ese texto. En el Gobierno insistían en asegurar que no se descarta una imagen conjunta, al estilo de la que se tomaron Cristian Ritondo con Sebastián Pareja, los delegados de Macri y la hermana de Milei en la Provincia.

El Gobierno no necesita de PRO para ganar las elecciones porteñas nacionales, como lo demostró en las locales. Pero la alianza le resulta imperativa para otros fines: mostrar que puede lograr consensos (de hecho, en un giro, Karina Milei activó diálogos en varias provincias durante las últimas semanas para cerrar más acuerdos). Y exhibir, al día siguiente de los comicios, una cifra -que estima- superior al 50 por ciento, y que le permitiría evienciar fortaleza ante la opinión pública.

De todas formas, el principal interés del oficialismo con la formalización de la alianza es asegurarse gobernabilidad en el Congreso. De hecho, ese fue uno de los factores que movió al jefe de Gabinete, Guillermo Francos a regar los diálogos. También a su asesor, Santiago Caputo. No sólo con vistas a los debates legislativos que corren, sino después de diciembre, cuando seguirán necesitando de la ayuda de sus socios indefectiblemente, más allá de cualquier performance en los cuartos oscuros. “Nosotros ya tenemos asegurados los dos senadores de la mayoría. Acá el tema se juega en el Congreso. Con las alianzas en Ciudad y Provincia cerradas no te pueden decir que no a nada”, dijeron en Balcarce 50.

Advertisement

Los libertarios se muestan reticentes a la palabra “gobernabilidad”, pero admiten necesitan defender los vetos de Milei. Y la tropa macrista, aunque tuvo fugas al campamento violeta, sigue siendo la llave para garantizar el blindaje del superávit fiscal ante los movimientos de la oposición para erogar mayores fondos en áreas sensibles -universidades, discapacidad, jubilaciones- o frenar desregulaciones del Estado que, según el Gobierno, contribuyen a engrosar las cuentas públicas.

Anniversaries,South America / Central America,Government / Politics,Buenos Aires

Advertisement
Continue Reading

POLITICA

San Cayetano: con fuertes críticas al Gobierno, gremios y movimientos sociales marchan a Plaza de Mayo

Published

on


Sindicatos, movimientos sociales y organizaciones de derechos humanos marcharán este miércoles desde el barrio porteño de Liniers a Plaza de Mayo, en el marco de la tradicional peregrinación de San Cayetano.

Bajo la consigna “Paz, Pan, Tierra, Techo y Trabajo”, preparan una protesta con fuertes críticas al Gobierno de Javier Milei.

Advertisement

Leé también: Empezó la vigilia por San Cayetano en Liniers: cientos de fieles llegan al santuario del patrono del trabajo

La convocatoria, que nació en 2016 durante el gobierno de Mauricio Macri y que en los últimos años había perdido fuerza, retomó su impulso en la gestión libertaria, con un reclamo unificado frente a lo que los convocantes describen como “una política de hambre, ajuste y represión”.

Quiénes se suman a la marcha a Plaza de Mayo

Las tres centrales sindicales -la Confederación General del Trabajo (CGT), la CTA Autónoma y la CTA de los Trabajadores-, y los movimientos sociales agrupados en la Unión de Trabajadores de la Economía Popular (UTEP), como el Movimiento Evita, Barrios de Pie y la Corriente Clasista y Combativa (CCC), conocidos como “los cayetanos”, convocaron a la movilización.

Advertisement

También confirmaron su adhesión la Asociación Trabajadores del Estado (ATE); el Polo Obrero; Libres del Sur; el Frente de Organizaciones en Lucha (FOL); los Sacerdotes de Villas y Barrios Populares de la Argentina; Madres de Plaza de Mayo; La Cámpora, liderada por Máximo Kirchner, y numerosos sindicatos de base.

Leé también: Fuerte mensaje de la Iglesia al Gobierno a días de San Cayetano: “Cuidar el empleo debe ser una prioridad”

Además, los gremios que conformaron el frente multisectorial de “Lucha por la Soberanía, el Trabajo Digno y los Salarios Justos”, liderados por la Confederación Argentina de Trabajadores del Transporte (CATT), enfrentado con la conducción de la CGT.

Advertisement

Entre otros dirigentes, dirán presente están Hugo Yasky (CTA-T), Hugo “Cachorro” Godoy (CTA-A), Rodolfo Aguiar (ATE), Pablo Moyano (Camioneros), Juan Carlos Schmid (CATT), Abel Furlán (UOM), Omar Pérez (Camioneros), Pablo Biró (APLA).

Cómo será la movilización

Las actividades comenzarán a las 8, con una misa en San Cayetano, en Liniers, que será presidida por el arzobispo porteño, Jorge García Cuerva, y el arzobispo de La Plata, Gustavo Carrara. Luego se hará la tradicional bendición de herramientas organizada por la UTEP.

El Frente Sindical por la Soberanía, el Trabajo Digno y el Salario Justo se reunió para coordinar los detalles de la marcha de este jueves a Plaza de Mayo. (Foto: CTA Autónoma).

La marcha partirá a las 10 desde Avenida Rivadavia y Cuzco, avanzará hacia el centro porteño, con paradas en Plaza Miserere y Congreso, y confluirá con columnas sindicales y de movimientos sociales durante el camino hacia Plaza de Mayo, donde desde las 13 está previsto el acto central y la lectura de un documento.

Advertisement

El texto que cerrará la movilización contendrá duras críticas al modelo económico y social del Gobierno nacional. Los convocantes denuncian el agravamiento de la emergencia alimentaria, social y laboral, y exigen un cambio de rumbo que priorice el trabajo y la justicia social.

Paralelamente, la UATRE convocó a concentrar desde las 13 en Diagonal Sur, entre Perú y Bolívar, donde elevarán su propio reclamo por “salarios dignos, respeto a la autonomía sindical y rechazo a la intervención de la obra social OSPRERA”.

Se esperan fuertes críticas a Javier Milei

El lema central de la jornada es “Paz, Pan, Tierra, Techo y Trabajo”, pero cada organización sumó sus propias banderas.

Advertisement

La UTEP denunció una “persecución” por parte del Gobierno nacional, en el marco de las causas judiciales abiertas sobre el manejo de planes sociales; ATE planteó que la movilización debe ser “la antesala de un nuevo paro general”, y los gremios del Frente Sindical por la Soberanía, el Trabajo Digno y el Salario Justo rechazaron el “ajuste criminal” y la “desregulación” que denuncia que son impulsados por el oficialismo.

Leé también: Revés para el Gobierno en el Congreso: Diputados le dio media sanción al proyecto que aumenta el financiamiento universitario

“Tenemos un Gobierno que solo se dedica a juntar dólares para pagarle al FMI. Nos conducen directamente hacia una tragedia”, dijo el secretario general de ATE, Rodolfo Aguiar. Similares críticas hizo Daniel Catalano, secretario general del gremio en CABA, que afirmó que los trabajadores estatales son víctimas de “hostigamiento, persecución y abandono”.

Advertisement

Por su parte, Hugo Godoy (CTA-A) hizo un llamado a “redoblar la movilización” y convocó a sumarse a “todas las organizaciones populares que resisten a la ofensiva de la motosierra”.

san cayetano, movilizacion, marcha

Advertisement
Continue Reading

LO MAS LEIDO

Tendencias