POLITICA
Uno por uno, cómo votaron los diputados el proyecto de Financiamiento Universitario

`
: `
`
}
${bloque}
`;
targetContainer.appendChild(card);
}
function createHemicicleSmall(nAfirmativo, nNegativo, nAbstencion, nAusente) {
const hemicycle = document.querySelector(‘.votos-diputados__hemiciclo.small’);
hemicycle.innerHTML = »; // Clear previous content.
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
// 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 = `
Afirmativo: ${nAfirmativo} |
Negativo: ${nNegativo}
Abstención: ${nAbstencion} |
Ausente: ${nAusente}
` + ‘
‘ + leyText + ‘
‘;
}
// 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);
// 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);
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
};
});
// — 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);
// 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; */
}
// 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’;
});
}
// 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();
}
});
POLITICA
Quiénes estaban con Milei en la foto del lanzamiento de la campaña bonaerense

En un terreno baldío de Villa Celina, La Matanza, Javier Milei dio inicio al lanzamiento de su campaña legislativa en la provincia de Buenos Aires. Rodeado de figuras de La Libertad Avanza (LLA) y aliados del Pro, la imagen buscó transmitir un mensaje de polarización frente al kirchnerismo. Sin embargo, la elección del lugar y la estética utilizada generaron debate en el ámbito político. El evento marca el inicio formal de la campaña de cara a las elecciones del 7 de septiembre, donde se renovará la mitad de la Legislatura bonaerense.
La foto de Milei en La Matanza incluyó a su hermana, Karina Milei, figura central en la estrategia del partido, y a los principales candidatos a legisladores por las ocho secciones de la provincia de Buenos Aires. También estuvieron presentes Sebastián Pareja, armador clave de LLA en la provincia, y Cristian Ritondo, jefe del Pro bonaerense, cuyo rol fue fundamental para concretar la alianza entre ambos espacios. La ministra de Seguridad, Patricia Bullrich, y José Luis Espert, también ocuparon un lugar destacado en la imagen.
Cada candidato tiene un rol específico en la estrategia de LLA para las diferentes secciones electorales. En la tercera sección, considerada la más difícil para los libertarios, competirá el excomisario Maximiliano Bondarenko. En la primera sección, Diego Valenzuela, intendente de Tres de Febrero, buscará un triunfo para Milei. Guillermo Montenegro, intendente de General Pueyrredón, competirá en la quinta sección. Al lado de Milei se posicionaron los aspirantes Gonzalo Cabezas (Cuarta); Natalia Blanco (Segunda); Oscar Liberman (Sexta); Alejandro Speroni (Séptima); y Francisco Adorni (Octava).
La selección de La Matanza, distrito de tradición peronista, para el inicio de la contienda legislativa no fue aleatoria. La elección de este bastión histórico del peronismo busca interpelar directamente a ese electorado y desafiar al kirchnerismo. El acto tuvo lugar en el asentamiento Las Achiras, para agregar un simbolismo particular a la estrategia electoral al visibilizar una problemática social.
El slogan “Kirchnerismo, Nunca más”, que acompañó la foto, resume la estrategia de campaña de Milei: polarizar con el peronismo y capitalizar el descontento de un sector del electorado. La tipografía utilizada, que emula la del informe “Nunca Más” de la Conadep, generó polémica y acusaciones de banalización de un tema sensible. Sin embargo, desde LLA defienden la elección del slogan y argumentan que “habla del momento y de la sensación de los bonaerenses. Resume el ‘no’ al kirchnerismo. Por ejemplo, nunca más a las candidaturas testimoniales”, según un referente del partido citado.
El acuerdo con el Pro, que se oficializó simultáneamente al lanzamiento de la campaña en Buenos Aires, es un elemento clave en la estrategia electoral de Milei. La incorporación de figuras del Pro a las listas de LLA busca ampliar la base electoral y fortalecer la alianza de cara a las elecciones. Sin embargo, el acuerdo no estuvo exento de tensiones, como lo demuestra la ausencia de Mauricio Macri en la foto del lanzamiento de la campaña.
En LLA reconocen que la elección en la provincia de Buenos Aires será un desafío. “Las elecciones no vienen fácil porque la provincia es muy compleja y muy vasta, con particularidades diferentes. Esperamos ganar, pero también podemos perder porque es un terreno muy hostil y muy difícil”, admitió Sebastián Pareja en diálogo con LN+. La estrategia se centrará en la primera y tercera sección electoral, donde se concentra el 70% del padrón provincial.
Este contenido fue producido por un equipo de con la asistencia de la IA.
lanzamiento de su campaña legislativa en la provincia de Buenos Aires,Audiencia,Javier Milei,,»Kirchnerismo nunca más». Milei abrió la campaña bonaerense con una foto provocadora,,En una entrevista con un historiador británico. Milei criticó con dureza a Francia y Reino Unido por su postura sobre Palestina: «El wokismo los infectó»,,»Sensibleros». Milei apuntó contra la oposición por cuestionar el veto presidencial al aumento de las jubilaciones,Audiencia,,Pan y Trabajo. Por qué se celebra San Cayetano cada 7 de agosto,,En vivo. Pronóstico en AMBA, en vivo: jornada fría, con viento y nubes, y últimas noticias del clima hoy,,Impactantes imágenes. Impresionante accidente en Chile: chocó, voló por el aire y salió caminando
POLITICA
Tras el desembarco de Milei en La Matanza, el Gobierno reúne la mesa de campaña de PBA para organizar actividades electorales

El Gobierno reúne a la mesa de campaña de la provincia de Buenos Aires para definir los próximos actos y recorridas de los candidatos de La Libertad Avanza junto con las participaciones de Javier Milei. El presidente desembarcó hoy en La Matanza para presentar a sus candidatos bajo el slogan de “kirchnerismo nunca más”.
El encuentro lo preside la secretaria general de la Presidencia, Karina Milei, desde las 16 en el salón Norte de la Casa Rosada. Participan el asesor Santiago Caputo junto a su equipo de comunicación y los integrantes del armado partidario de Sebastián Pareja, que tiene a cargo el territorio bonaerense.
Leé también: Tras la derrota en Diputados, el Gobierno busca blindar en el Senado los decretos que impulsó Sturzenegger
Se trata de la segunda reunión del equipo electoral libertario luego de las contramarchas por el lanzamiento de la campaña, que estaba previsto que sea este miércoles en el nuevo centro logístico de Mercado Libre en Tres de Febrero y se suspendió. El oficialismo barajó también realizar la foto de los postulantes con el jefe de Estado en Balcarce 50 y lo descartó.
“No era una actividad que represente lo que queremos para la campaña”, expresan en Nación. Es por eso que definieron realizarlo en la tercera sección electoral bonaerense y utilizar la tipografía del libro sobre el informe “Nunca Más”, que abarca el trabajo realizado en 1984 por la Comisión Nacional sobre la Desaparición de Personas (Conadep).
Por parte de Caputo, asistieron también al encuentro su mano derecha, la abogada Macarena Alifraco, los consultores Tomás Vidal y Vicente Fernández y Lucas Luna, que mantuvo tensiones con los cercanos a la presidenta del partido.
En Nación no descartan la presencia del subsecretario de Gestión Institucional, Eduardo “Lule” Menem, que asistió a la primera reunión. El presidente de la Cámara de Diputados y vice de LLA, Martín Menem, no está presente en el encuentro.
Leé también: El Gobierno avanza con la disolución de la secretaría de Industria y Comercio tras la salida de su titular
Noticia que está siendo actualizada.-
Gobierno, campaña electoral
POLITICA
cómo es el barrio de La Matanza en el que Milei se sacó la foto de lanzamiento de campaña en provincia de Buenos Aires

La esquina de la foto en el tiempo
Enero 2014
Noviembre 2014
Mayo 2021
Agosto 2023
Enero 2025
Agosto 2025
- CHIMENTOS2 días ago
Malas noticias para Wanda Nara: por qué la bajaron misteriosamente de MasterChef: «No va a salir este año»
- POLITICA2 días ago
Sebastián Pareja justificó el armado de listas de LLA en la Provincia: “El desafío era dar una opción diferencial”
- DEPORTE2 días ago
El Como de Fàbregas, el nuevo rico de Italia