POLITICA
Uno por uno, cómo votaron los senadores el veto de Milei a la ley Garrahan

`
: `
`
}
${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
Cerró la paritaria de Comercio: de cuánto será el aumento trimestral que recibirán los empleados

La Federación Argentina de Empleados de Comercio y Servicios (FAECYS) y las principales cámaras empresariales del sector cerraron este jueves un acuerdo paritario para este año dentro de la pauta del Gobierno, que contempla un aumento salarial del 5% en tres tramos y el pago de un bono extraordinario de $120.000 correspondiente al trimestre abril-junio de 2026.
El aumento salarial, que fue firmado por el sindicato que lidera Armando Cavalieri y la Cámara Argentina de Comercio (CAC), la Confederación Argentina de la Mediana Empresa (CAME) y la Unión de Entidades Comerciales (UDECA), prevé una mejora escalonada para los ingresos de 1.200.000 trabajadores de la actividad: 2% en abril, 1,5% en mayo y 1,5% en junio.
La paritaria contempla la aplicación de un proceso de monitoreo continuo de la evolución económica para ajustar los ingresos ante las variaciones de precios, con el objetivo declarado de salvaguardar el poder adquisitivo durante el primer semestre, según destacó FAECYS.

Al anunciar la paritaria firmada para abril-junio de 2026, Cavalieri remarcó: “Este acuerdo es el resultado de un diálogo maduro y responsable. Somos plenamente conscientes de la difícil situación que atraviesa la economía y que impacta directamente tanto en el bolsillo de los trabajadores como en la operatividad de las pymes y los comercios de cercanía”.
“Acompañamos la realidad actual de las empresas y los pequeños comercios para preservar las fuentes de trabajo, sin dejar de proteger el ingreso de nuestra familia mercantil -agregó el sindicalista-. Nos brinda la previsibilidad necesaria para transitar estos meses con certidumbre jurídica”.
La paritaria de Comercio sintoniza con la pauta salarial del Gobierno, por lo que se descuenta que será homologado por el secretario de Trabajo, Julio Cordero.

Como anticipó Infobae, la Casa Rosada busca mantener los nuevos aumentos salariales por debajo de la inflación, es decir, con cifras menores al 2%, mientras el nivel de los últimos Indices de Precios al Consumidor mostró una tendencia a la suba, por lo que la pauta oficial para las paritarias 2026 presagia un horizonte de crecimiento de la conflictividad sindical.
Ante la amenaza oficial de que no homologará los aumentos salariales que superen la inflación, los sindicatos reaccionan de manera dispar: algunos renegocian las cifras para adaptarlas a la pauta establecida por el Ministerio de Economía y otros resistirán la decisión oficial tratando de que las empresas paguen igual las mejoras pactadas aun sin convalidación oficial.
El primer test en este rubro fue la paritaria cerrada hace dos semanas por el Sindicato de Camioneros. Antes de firmarse, Hugo Moyano había pateado el tablero al exigir un aumento del 8% para recuperar lo perdido ante la inflación y la negativa a aceptar mejoras con vigencia superior a la trimestral para evitar nuevos desfases.

Pero finalmente firmó con las cámaras empresariales un acuerdo que sintoniza con la política que fijó el Ministerio de Economía, ya que tendrá una vigencia semestral y las cifras pactadas están por debajo de la inflación.
El convenio incluye un aumento del 10,1% en el semestre marzo-agosto, que se pagará así: incrementos del 2%, 1,8%, 1,7%,1,6%, 1,5% y 1,5% para cada uno de los meses entre marzo y agosto, más una suma no remunerativa de 53.000 pesos en marzo.
Además, se fijó un premio mensual por presentismo y puntualidad de $60 mil sólo para las ramas Clearing y Carga Postal y Operaciones Logísticas, a abonarse a partir de abril, absorbiendo lo que paguen las empresas, y una mejora de la contribución empresarial para la obra social del Sindicato de Camioneros, que pasó de $22 mil a $25 mil mensuales por trabajador.
En el caso del Sindicato de Comercio, no se trata de una paritaria cualquiera. Involucra al sindicato con mayor cantidad de trabajadores y cuyos salarios sirven de referencia para otras actividades. Ahora, a diferencia de lo sucedido hace un año, donde la paritaria superó la pauta oficial y no fue homologada hasta que se replantearon sus cifras, Cavalieri y las cámaras firmaron un acuerdo a tono con lo que quiere el Gobierno.
consumo,compra,huevos de chocolate,supermercado,Pascua,dulces,ofertas,comercio,alimentación,chocolate
POLITICA
Paritarias: Comercio acordó un aumento del 5% en tres meses y un bono de $120.000

La Federación Argentina de Empleados de Comercio y Servicios (Faecys) cerró un nuevo acuerdo paritario que regirá para los meses de abril, mayo y junio de 2026, tras una negociación con la Cámara Argentina de Comercio (CAC), la Confederación Argentina de la Mediana Empresa (CAME) y la Unión de Entidades Comerciales (Udeca).
Según informaron las entidades, el acuerdo contempla un incremento salarial para los empleados de comercio del 5%, distribuido de forma escalonada de la siguiente manera: un 2% en abril, un 1,5% en mayo y un 1,5% en junio. Asimismo, se estableció el pago de un bono extraordinario de $120.000 para los trabajadores de todas las categorías.
El gremio informó a través de un comunicado que el convenio logrado “mantiene la dinámica de monitoreo constante sobre la situación económica para garantizar que el poder adquisitivo no quede rezagado” frente a la inflación en el primer semestre del año.
Al respecto, el secretario general de Faecys, Armando Cavalieri, señaló: “Este acuerdo es el resultado de un diálogo maduro y responsable. Somos plenamente conscientes de la difícil situación que atraviesa la economía y que impacta directamente tanto en el bolsillo de los trabajadores como en la operatividad de las pymes y los comercios de cercanía”.
“Acompañamos la realidad actual de las empresas y los pequeños comercios para preservar las fuentes de trabajo, sin dejar de proteger el ingreso de nuestra familia mercantil. Nos brinda la previsibilidad necesaria para transitar estos meses con certidumbre jurídica”.
Paritarias,Armando Cavalieri,Inflación y precios,Conforme a,Paritarias,,Monto de referencia, Cuánto se paga la hora de limpieza del servicio doméstico en abril,,Cifra del mes. Cuánto ganan los empleados de comercio en abril,,Actualización salarial. Cuánto se paga la hora de limpieza en marzo
POLITICA
Tapia desafía a la Justicia: inaugura la sede de AFA en Pilar y busca blindaje político y de la Selección

Claudio Chiqui Tapia tiene su propio álbum de la Selección y político. El martes tuvo la foto con Lionel Messi y hoy sumó la de Rodrigo de Paul. Hay detrás una jugada mayor: la inauguración de la sede de la AFA en Pilar en la primera semana de abril, cuando los jugadores estén aún en el país. Un blindaje albiceleste para encarar el frente judicial. Este miércoles, el juez en lo penal económico Diego Amarante le rechazó un pedido general para viajar al exterior en los próximos 60 días. El Mundial comienza en 84 días.
“La verdad es que deberían estar Messi, El Dibu, Otamendi, Cuti Romero, Paredes, pero vamos a ver porque, como coincide con Semana Santa, es lógico que quieran estar con su familia. Pero el Chiqui hizo mucho por Leo”, dicen cerca de Tapia.
No es casual la fecha que buscó el mandamás del fútbol argentino para la inauguración de la sede de la AFA en Pilar. La locación formó parte de la pulseada con la Inspección General de Justicia, encabezada por Daniel Vítolo, hasta que el nuevo ministro de Justicia Juan Bautista Mahiques le pidió la renuncia. La IGJ rechazó el cambio de domicilio y argumentó que en el lugar había un descampado. LA AFA levantó en un mes la nueva sede y busca asentarse allí para lograr que las causas judiciales queden en manos del juez de Zárate-Campana, Adrián González Charvay. Este miércoles la jueza nacional Paula Petazzi resolvió que la investigación de las cuentas de la AFA en Estados Unidos recaiga en la Justicia de Campana.
Antes de renunciar, Vítolo decía que el plazo para que la AFA recurra el rechazo de la IGJ vencía el 11 de marzo. Sin embargo, en la gestión de Mahiques —con vínculos con la AFA— hicieron otro cálculo y le dieron un mes más de plazo: “Fueron notificados el 18 de febrero y el plazo es de 30 días hábiles administrativos, por lo que vence técnicamente el 7 de abril”.
El 30 de marzo es la audiencia clave que convocó la Cámara Federal de Casación Penal para definir qué juez se queda con la causa que investiga la compra de una lujosa mansión en Pilar atribuida al tesorero de la AFA, Pablo Toviggino. El trasfondo es un esquema de lavado de activos con posibles vínculos con la dirigencia del fútbol argentino.
La Cámara debe decidir si el caso sigue en manos de González Charvay, o vuelve al juzgado en lo penal económico de Marcelo Aguinsky, en la Ciudad de Buenos Aires, o al de Daniel Rafecas.
El argumento de la AFA para que siga en manos de González Charvay es que el domicilio en Pilar corresponde a ese departamento judicial. Una maniobra de forum shopping. Por eso, dicen en tribunales, la premura por la inauguración de la nueva sede en la provincia de Buenos Aires. Para eso, Tapia cuenta con el guiño de Axel Kicillof: el Ministerio de Justicia bonaerense aprobó el cambio de domicilio. Así, la AFA se desmarca del control de sus balances por parte de la Inspección General de Justicia.
No obstante, Mahiques designó, como había pedido Vítolo, dos veedores -el contador Rubén Miguel Pappacena y el abogado Agustín Ortiz de Marco– por 180 días.
Tapia enfrenta junto a Toviggino una causa iniciada por denuncia de ARCA por la retención indebida de aportes previsionales por 19.000 millones de pesos. Ambos fueron indagados a mediados de marzo y tienen prohibición para salir del país. Amarante tiene que resolver la situación procesal de la cúpula de la AFA.
El viernes, González Charvay dispuso allanamientos en el predio de Ezeiza de la AFA y en la sede de la calle Viamonte por la mansión de Pilar y por la otra causa que investiga los fondos que manejaba en el exterior TourProdEnter, la empresa de Javier Faroni. La hipótesis judicial es que se desviaron US$300 millones de la AFA a empresas fantasmas de Estados Unidos.
Cuando la Prefectura Naval llegó a la histórica sede de Viamonte, encontraron un papel en la puerta que decía: “(CERRADO) Dirigirse a MERCEDES 1366 PILAR”.
El plan de Tapia, como anticipó TN, es desmarcarse de Toviggino y que una buena performance de la Selección en el Mundial lo saque de las malas judiciales para lanzarse como candidato a gobernador. “Eso va muy en serio. Está hablado con el Gobernador y se va a medir en su momento”, dicen cerca de su entorno.
Como presidente de la CEAMSE, logró sumar al municipio de Luján. El intendente de Luján, el peronista Leonardo Boto, firmó el contrato y el municipio de Luján comenzará a enviar, por primera vez, la totalidad de sus residuos a la CEAMSE.
El dato es político también. Boto fue uno de los intendentes que compartió palco con Federico Otermín (Lomas de Zamora), Nicolás Mantegazza (San Vicente) y Gastón Granados (Ezeiza) durante la Asamblea Legislativa que encabezó Kicillof. Son los intendentes que apoyan a Tapia en la interna bonaerense. También formarían parte de los invitados a la inauguración de la sede de Pilar.
Al final las fallidas giras de la Selección le terminaron dando un guiño al calendario judicial y político de Tapia. Este viernes, la Selección juega un amistoso con Mauritania, y el martes 31, con Zambia. El 30 se sabrá qué juez investigará el AFAgate. La suerte de Toviggino estará echada. Tapia se imagina un futuro en la política y descorchando en la inauguración de la sede en Pilar.
Claudio Tapia, AFA, Lionel Messi, Pablo Toviggino, Selección argentina
POLITICA1 día ago¡VERGÜENZA NACIONAL! Humillan a la Policía Federal mandándolos a un merendero antes de darles un aumento de sueldo digno
POLITICA2 días ago24 DE MARZO: La historia completa que el relato omitió sobre el golpe de 1976 y el Juicio a las Juntas
POLITICA1 día agoEl Presidente y Karina Milei volvieron a respaldar a Manuel Adorni tras la polémica por sus vuelos










