POLITICA
Uno por uno, cómo votaron los senadores para aprobar la ley Garrahan de emergencia pediátrica

`
: `
`
}
${bloque}
`;
targetContainer.appendChild(card);
}
function createHemicicleSmall(nAfirmativo, nNegativo, nAbstencion, nAusente) {
const hemicycle = document.querySelector(‘.votos-senadores__hemiciclo.small’);
hemicycle.innerHTML = »; // Clear previous content.
const centerX = 300;
const baseY = 450;
const numberOfRows = 5;
// Array of seats per row (from outer to inner)
const seatsPerRow = [21, 18, 16, 12, 7];
const verticalOffset = 0;
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 * (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 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 (sin mostrar Ley Aprobada o no aprobada)
document.querySelector(‘#voto-summary’).innerHTML = `
Afirmativo: ${nAfirmativo} |
Negativo: ${nNegativo}
Abstención: ${nAbstencion} |
Ausente: ${nAusente}
`; */
/* // — Update Legend —
const leyText = nAfirmativo > nNegativo ? «Ley Aprobada» : «Ley no aprobada»;
const resultsText=»shshs»;
document.querySelector(«#voto-summary»).innerHTML = leyText + resultsText; */
/*
// Set the legend text. Mayoría simple
const leyText = nAfirmativo > nNegativo ? ‘Ley Aprobada’ : ‘Ley no aprobada’;
document.querySelector(‘#voto-summary’).innerHTML = `
Afirmativo: ${nAfirmativo} |
Negativo: ${nNegativo}
Abstención: ${nAbstencion} |
Ausente: ${nAusente}
` + ‘
‘ + leyText + ‘
‘; */
// Set the legend text. Dos tercios de los presentes (******EDITAR LEYENDA*****)
function votosNecesarios(presentes) {
return Math.ceil((2 / 3) * presentes);
}
const leyText = nAfirmativo >= (votosNecesarios(72 – nAusente)) ? ‘Aprobada’ : ‘Rechazada’;
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-senadores__hemiciclo.big’);
hemicycle.innerHTML = »; // Clear previous content.
const centerX = 300;
const baseY = 450;
const numberOfRows = 5;
// Array of seats per row (outer to inner; total should be 257)
const seatsPerRow = [21, 18, 16, 11, 6];
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 + «).»);
}
console.log(nAfirmativo, nNegativo, nAbstencion, nAusente, totalSeats, totalVotes);
// — 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 * (55 – 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);
}
}
}
}
// Go-to-top button functionality.
document.addEventListener(‘DOMContentLoaded’, function() {
const goToTopButton = document.querySelector(‘.votos-senadores__go-to-top’);
const targetElement = document.querySelector(‘.votos-senadores’);
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-senadores__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
Maqueda habló sobre el escándalo de los audios: “Llegaron tratando de evitar en el barro y ahora están en el barro”

El exjuez de la Corte Suprema de Justicia Juan Carlos Maqueda se refirió este lunes al el escándalo por los audios sobre presuntas coimas en el ámbito de la Agencia Nacional de Discapacidad (Andis), que estaba a cargo de Diego Spagnuolo, y que involucrarían a Karina Milei, y al subsecretario de Gestión Institucional, Eduardo “Lule” Menem.
Durante su paso por LN+, Maqueda coincidió en que la remoción de Spagnuolo del cargo le da cierta verosimilitud a las grabaciones editadas y obtenidas de manera clandestina. “Sí decía la verdad, ¿por qué lo removieron? En todo caso, tendrían que haber removido a aquellos que mencionaba en los audios», sostuvo.
Para el exintegrante del máximo tribunal, “la fuerza política que nos gobierna llegó al poder tratando de evitar el barro y hoy no solo están en el barro sino también en el chiquero”. “Es una situación muy difícil políticamente porque sabemos además que están en medio de un proceso electoral. Al mismo tiempo, invalida mucho de lo que se venía diciendo respecto de otros sectores ligados a la corrupción”, opinó.
Con vistas al avance de la causa, que lleva adelante el juez federal Sebastían Casanello, anticipó la posibilidad de que el extitular de la Andis se acoja a la figura del arrepentido. “Imputación mediante podría hacerlo”, dijo Maqueda. Y aclaró: “A mi no me gustaría sin embargo colgar una figura sobre una persona que por el momento es inocente. Hay que esperar los resultados. No debemos dejarnos ganar por la ansiedad”.
El exjuez federal destacó además la celeridad con la que la Justicia recolectó evidencia: “Desde el punto de vista jurídico, yo debo decir que he visto que el juez Casanello y el fiscal [Franco Picardi] han actuado con una diligencia extraordinaria. Se han anticipado a movimientos que naturalmente se podrían haber hecho entre quienes están implicados en este tema. Y han recogido una prueba que en este momento se está analizando».
Pidió, por último, esperar los tiempos del Poder Judicial. “El periodismo tiene una velocidad enorme para pensar estas cosas. En la Justicia, para que un indicio como el que se ha dado se convierta en prueba y haya vinculación con las personas que en este momento están siendo investigadas, tiene que pasar un tiempo. Tiene que haber una certificación lógicamente. Hoy les puedo decir que no se qué es lo que se viene por delante. Al no estar en la Justicia, no conozco el expediente. Pero, más que nunca, hay que respetar los tiempos de ese expediente”.
el escándalo por los audios,Juan Carlos Maqueda,LN+,Conforme a,,»Mala interpretación». Francos rectificó sus dichos sobre el rol de Villarruel en el arribo de Spagnuolo a La Libertad Avanza,,Se mostró junto a su hermana Karina. Javier Milei, en medio del escándalo por los audios: “¿Creen que me preocupa lo que puedan hacer de acá a dos meses?”,,Defensa oficial. Un funcionario del ministro de Seguridad habló sobre el escándalo de los audios y aseguró que son una “prueba inválida”,Juan Carlos Maqueda,,LN+. Maqueda opinó sobre la actual conformación de la Corte y le envió un mensaje a Javier Milei,,»Descortesía». Qué dijo el exjuez Maqueda sobre su salida de la Corte Suprema,,»Fue una decisión de Milei». Maqueda dijo que fue apartado de la Corte Suprema “con descortesía” y se refirió a la condena de Cristina Kirchner
POLITICA
La frase de Milei en medio del escándalo por las presuntas coimas: “Les estamos afanando los choreos”

Javier Milei encabezó en Junín el acto de presentación de los candidatos a diputados nacionales de La Libertad Avanza. Más temprano, inauguró un edificio de la Corporación América en la misma ciudad bonaerense. En ambos casos, evitó mencionar el escándalo por las presuntas coimas desatado tras la difusión de audios del extitular de la Agencia de Discapacidad, Diego Spagnuolo.
Sin embargo, en el acto junto a Karina, Espert y otros referentes del partido, una frase del Presidente llamó la atención. Fue en respuesta al comentario de una persona del público, que hizo referencia al kirchnerismo. Milei respondió: “Están molestos porque les estamos afanando los choreos”.
Leé también: Martín Menem, sobre el escándalo de los audios de Spagnuolo: “Pongo las manos en el fuego por Lule y Karina Milei”
En el comienzo del discurso, el Presidente se solidarizó con los militantes heridos fuera del acto y elogió a los candidatos elegidos para representar a La Libertad Avanza en el territorio bonaerense. “Son testigos de los estragos que el kirchnerismo ha causado en nuestra sociedad y han decidido convertirse en paladines de la libertad”, sostuvo.
“No hay nada más patriótico que dar la vida por la libertad de nuestros vecinos. Cada uno de ustedes es un héroe que ha decidido llevar la antorcha a los lugares más oscuros de nuestra nación», agregó.
“Este 7 de septiembre tenemos que decir ‘kirchnerismo nunca más’ en la provincia de Buenos Aires”, clamó y señaló: “Quiero que tengan conciencia de lo importante que es esta primera batalla porque se va a votar con una boleta que permite el fraude, no con la boleta única papel que impulsó el Gobierno”.
Asimismo, manifestó: “Necesitamos redoblar la apuesta para terminar de barrer con todas estas estructuras putrefactas que se han enquistado en la Legislación argentina, aferrándose a los últimos minutos de privilegio que les quedan”.
El mandatario, a su vez, pidió a la militancia que refuercen los esfuerzos para octubre: “Para que entren ellos a un Congreso que está estancado hace décadas. Hay que proteger lo logrado y avanzar con las reformas que nos faltan“.
Javier Milei, Karina Milei, coimas, Junín
POLITICA
La confusa frase de Milei contra el kirchnerismo, en medio del escándalo de los audios: “Les estamos afanando los choreos”

El presidente Javier Milei pronunció una confusa frase durante su acto en la ciudad de Junín, en el que presentó a los candidatos de La Libertad Avanza (LLA) para las legislativas bonaerenses. “Les estamos afanando los choreos”, dijo al referirse al kirchnerismo, durante un discurso en el que evitó hacer declaraciones sobre el escándalo de los audios que impacta en el Gobierno. El enunciado generó revuelo y fue criticado por la oposición en redes sociales.
Durante su elocución, Milei planteó que la oposición kirchnerista busca aprobar leyes que vayan en contra de la búsqueda de equilibrio fiscal que pregona la Casa Rosada desde su llegada al poder, pero aseguró, a pesar de que los quieren “hacer volar por los aires, no lo van a lograr“ y consideró: “Hoy el Congreso está secuestrado por el kirchnerismo”.
“Están tan disociados de la realidad y la voluntad popular que avanzan constantemente con propuestas cuyo único objetivo es aumentar el gasto publico y devolvernos al sendero nefasto del déficit fiscal”, se explayó el Presidente frente a un auditorio repleto en el Teatro San Carlos.
En ese momento, desde el público, una persona lo interrumpió al criticar la corrupción que pesa sobre los gobiernos kirchneristas. “Chorros hijos de p…”, gritó el seguidor libertario. Milei se percató de la expresión del hombre y agregó: “Por eso, están molestos porque les estamos afanando los choreos”. En complicidad con el público, y con risas y aplausos que obstruyeron un nuevo diálogo de otra persona desde la tribuna, el Presidente respondió: “Bueno, que se sigan riendo, entonces”.
Asimismo, agregó: “En estos momentos, donde el kirchnerismo se dedica a sembrar el caos, generar inestabilidad de manera abierta y descarada, nada de eso nos va a asustar. Si terminamos con el déficit de 123 años en un mes, ¿qué nos puede hacer que jodan durante dos meses y se vayan definitivamente?“.
En medio del escándalo de los audios, que puso la lupa sobre presuntas coimas cobradas por funcionarios del Gobierno, la frase fue interpretada por la oposición no kirchnerista como un juego de palabras que deja mal parado al jefe de Estado, que, hasta ahora, no hizo referencia en sus apariciones públicas a las grabaciones clandestinas, atribuidas a Diego Spagnuolo (extitular de la Agencia Nacional de Discapacidad), que salieron a la luz en la última semana.
“Milei asume públicamente que son lo mismo que el kirchnerismo, que hacen lo mismo que aquellos”, se quejó a través de su cuenta de X la diputada nacional Margarita Stolbizer. Y agregó, sobre la frase de Milei: ”Más clarito no se puede. El gran aporte a este gravísimo escándalo político y ético sería que CFK y su mundo cristinista se llamaran a silencio“.
De la misma manera, cuestionaron lo dicho por el Presidente los diputados nacionales Maximiliano Ferraro y Facundo Manes. “Lo traicionó el inconsciente. A confesión de parte, relevo de prueba”, esgrimió el presidente de Coalición Cívica. “Ah bueno, ahora nos quedamos más tranquilos”, ironizó el representante de la UCR.
acto en la ciudad de Junín,escándalo de los audios,grabaciones clandestinas,August 26, 2025,Javier Milei,Conforme a,Javier Milei,,En medio del audiogate. Milei abrazó a Karina, presentó a sus candidatos y denunció que el kirchnerismo busca «sembrar el caos»,,»Le empezaron a pegar a la gente». Atacaron a militantes de LLA en Junín y hay heridos: Milei culpó a “hordas kirchneristas”,,Minuto a minuto. Javier Milei, en vivo: acto en Junín con los candidatos libertarios en medio del audiogate
- DEPORTE2 días ago
Chile organizó una colecta para que la familia del hincha que fue operado por fractura de cráneo pueda viajar a la Argentina
- DEPORTE3 días ago
El fútbol chileno se solidarizó con la U tras los graves incidentes que se registraron ante Independiente
- DEPORTE2 días ago
¿Cómo va el historial entre Rosario Central y Newell´s Old Boys y quién ganó más?