POLITICA
Paritarias a la baja y 160 millones en zapatillas de ballet

En una estrategia que despertó cuestionamientos entre sus propias filas, Axel Kicillof declaró la “economía de guerra” en la región, al tiempo que la titular del Instituto Cultural de la Provincia de Buenos Aires cerraba una licitación de 162 millones en calzado artístico. Mientras tanto, los estatales siguen perdiendo poder adquisitivo.
‘;
parrafos_nota = $(‘.texto_nota > p’).size();
cada_tres = 3;
$.each(div_relacionadas_internas, function( index, value ) {
$(‘.texto_nota > p:eq(‘+cada_tres+’)’).before(div_relacionadas_internas[index]);
cada_tres = cada_tres+3;
});
});
La provincia de Buenos Aires atraviesa un escenario económico complicado. Recientemente, el gobernador Axel Kicillof brindó una conferencia de prensa en la que alertó sobre la grave crisis financiera que afecta a la región. Según Axel Kicillof, «el consumo se redujo un 10 por ciento, se perdieron 400 mil puestos de trabajo, y la industria cayó un 12 por ciento». Sin embargo, justo en el momento en que hacía estas dramáticas declaraciones, su administración avanzaba con una licitación que parecía contradecir el tono de urgencia económica: la aprobación de un contrato millonario para la compra de zapatillas de ballet.
Este gasto de 162 millones de pesos para la compra de calzado artístico es solo uno de los ejemplos que cuestionan las prioridades de la administración de Kicillof. En un contexto donde se declaran emergencias económicas y se recorta el gasto en áreas esenciales, en el que docentes y empleados estatales bonaerenses pierden poder adquisitivo a diario, resulta desconcertante que el gobierno provincial esté destinando recursos a proyectos que no se consideran urgentes ni fundamentales para los ciudadanos de Buenos Aires.
Discurso de crisis versus gastos millonarios
A lo largo de su gestión, el gobernador ha presentado un discurso en el que asegura estar atravesando una «economía de guerra». Ha señalado la falta de recursos para atender las necesidades de la provincia y ha apelado a la austeridad, especialmente al momento de negociar paritarias. A los gremios estatales, por ejemplo, se les ofreció un incremento salarial del 9 por ciento escalonado, muy por debajo de la inflación real proyectada para 2025. Sin embargo, lo que resulta cada vez más evidente es la contradicción entre su discurso de austeridad y los gastos en iniciativas que parecen estar mucho más relacionadas con la política de imagen y propaganda que con la mejora de la calidad de vida de los bonaerenses.
Una muestra de esto fue la licitación para la compra de globos, magos y payasos para eventos organizados por el ministerio de Desarrollo de La Comunidad de la provincia de Buenos Aires. La licitación, que destinó más de 200 millones de pesos a la contratación de entretenimiento infantil, se suma a una larga lista de gastos cuestionables que generaron malestar entre los ciudadanos.
Luces y sombras: los negocios de la iluminación pública
Otro ejemplo de la gestión contradictoria de Kicillof es la reciente licitación para la instalación de un sistema de iluminación Led en la Casa de Gobierno de La Plata, que tuvo un costo de más de 113 millones de pesos. Esta licitación no solo generó dudas sobre su justificación en un contexto de crisis, sino que también ha llamado la atención debido a las empresas beneficiadas. Se trata de empresas vinculadas a la familia Macri, a través de negocios millonarios que se están realizando en distintas provincias bajo el plan de «iluminación eficiente».
Es una coincidencia que parece cada vez más difícil de ignorar: mientras la provincia se endeuda para cubrir gastos esenciales, empresas cercanas al expresidente Mauricio Macri siguen ganando licitaciones de gran magnitud en el territorio del gobernador Axel Kicillof.
¿Crisis o propaganda?
La contradicción más flagrante entre las promesas de austeridad y los gastos innecesarios está en las paritarias estatales. Mientras Kicillof se escuda en la falta de presupuesto para ofrecer aumentos salariales que sigan el ritmo de la inflación, se destina dinero a proyectos estéticamente orientados, como la remodelación de la Casa de Gobierno o el renovado mobiliario de las oficinas del ministerio de Desarrollo Agrario, con una inversión de más de 74 millones de pesos. Esta inversión se destina a muebles nuevos para un edificio gubernamental, mientras los trabajadores estatales se ven obligados a aceptar aumentos salariales que no cubren ni de cerca la inflación del año.
Estos gastos no solo son desmesurados en comparación con las prioridades sociales y laborales que la provincia requiere, sino que también parecen estar más alineados con una estrategia de imagen y de comunicación institucional que con una necesidad real.
El uso de los recursos: un negocio cuestionable
El cuestionamiento central de estos gastos radica en la falta de transparencia y en las prioridades de la gestión de Kicillof. Mientras la provincia se encuentra en una emergencia económica y el gobernador advierte sobre la falta de recursos, no parece haber coherencia entre las decisiones que toma su gobierno y las necesidades de la población bonaerense. Es en este punto donde las denuncias de irregularidades en las licitaciones millonarias cobran relevancia, especialmente las vinculadas a la compra de mobiliario escolar o al gasto de 162 millones de pesos en zapatillas de ballet. Los ciudadanos se cuestionan si realmente se están tomando las decisiones más acertadas para superar la crisis o si hay intereses particulares que prevalecen por encima de las necesidades urgentes de la sociedad.
Paritarias, a, la, baja, y, 160, millones, en, zapatillas, de, ballet
POLITICA
Cierre de alianzas en Córdoba: el PJ pone a prueba el acuerdo de gobernadores y LLA busca hacer pie con la UCR y el PRO

A horas del fin del plazo para la presentación de alianzas, Córdoba vive intensas negociaciones. En el oficialismo ya se descuenta la candidatura de Juan Schiaretti, movimiento que servirá para darle volumen político a la flamante alianza Provincias Unidas, pero con el desafío que implicará competir con Natalia De La Sota. Del otro lado, La Libertad Avanza tiene la compleja tarea de acordar con el PRO y la UCR, que, a su vez, enfrentan fuertes internas que llegaron a la Justicia.
La provincia renueva un total de nueve bancas en la Cámara de Diputados y, pese a no haber escaños en el Senado en juego, el armado en Córdoba toma relevancia por su preponderancia en el padrón electoral y por el perfil antikirchnerista que históricamente mantuvo, lo que ayudó, por ejemplo, a que Mauricio Macri llegue a la Presidencia en el 2015.
Justamente, el PRO cordobés vive hace más de un año un desmembramiento: gran parte de los dirigentes se sumaron al Gabinete de Martín Llaryora y otros, como por ejemplo Oscar Agost Carreño, se aliaron con peronistas de centro en la Cámara de Diputados. Ese movimiento impulsó la intervención del partido, que hasta estas horas sigue generando tensión e incertidumbre para el cierre de alianzas.
“Ha habido una batalla legal que está en disputa, pero vamos a tener la posibilidad de hacer el cierre como queremos. En este proceso, no solamente cumpliendo la voluntad lógica que es no yendo con el peronismo de Córdoba, sino también con la voluntad de nuestros intendentes, los que se han quedado a pesar del momento complicado y que son los que han pedido por favor que hagamos todo el esfuerzo posible para que el partido sea intervenido y para que puedan ellos definir el cierre electoral de este año”, expresó el santiagueño Facundo Pérez Carletti, secretario general del PRO y hoy un fiel aliado de Macri.
Otro buen aliado del ex presidente en Córdoba es Rodrigo De Loredo, el radical que preside el bloque en la Cámara baja y que también debe renovar su banca. Aunque en privado insiste en que no está empecinado en reelegir y que su mayor objetivo es llegar competitivo al desafío por la Gobernación en el 2027, el legislador logró que la UCR local lo habilite a sellar una alianza con La Libertad Avanza, pero con una sola condición: tiene que encabezar la lista. Según pudo reconstruir Infobae, ese requisito no estaría garantizado, sino más bien, existe una oferta para un tercer lugar, pero además en el Gobierno no ven con buenos ojos la pelea judicial que se desató en el partido centenario.
En la última reunión del congreso partidario, el equipo de Marcos Ferrer – titular de la UCR local y aliado de De Loredo- olvidó anular la elección interna para elegir candidatos. Tras una pelea judicial impulsada por los adversarios de las autoridades, el partido centenario se encamina a una elección interna el próximo domingo, en la que Ramón Metre busca posicionarse y evitar un armado con La Libertad Avanza. “Al Gobierno no le está gustando para nada todo este lío”, aseguran en Córdoba en un contexto nacional en el que se impone la estrategia de Karina Milei de imponer el sello libertario, el color y candidatos puros.
En los últimos meses La Libertad Avanza ensayó algunos nombres para encabezar la lista en la provincia mediterránea. Hasta había sonado Diana Mondino antes de su salida de Cancillería. También trascendió la posibilidad de un Agustín Laje, el encargado de la batalla cultural de Javier Milei, encarando el desafío electoral, pero todo indica que será Gabriel Bornoroni el candidato del gobierno nacional.
La Libertad Avanza tendrá el desafío de enfrentar a un PJ cordobés que pondrá a su mejor candidato: Juan Schiaretti. El ex gobernador mantiene un alto nivel de aprobación y promete revertir la mala racha que históricamente tuvo el peronismo local en las elecciones legislativas. Sin embargo, no será un camino allanado para el oficialismo. En los últimos días Natalia De la Sota anunció que enfrentará al espacio que supo fundar su padre, luego de una larga suma de malestares con sus ex aliados. Algunos dejan trascender que quedó herida desde el 2023, cuando el espacio eligió a la radical Myrian Prunotto como compañera de fórmula de Llaryora.
Pero la postulación de Schiaretti será, además, la principal figura del frente Provincias Unidas, la alianza que lanzaron los cinco mandatarios Maximiliano Pullaro (Santa Fe), Carlos Sadir (Jujuy), Ignacio Torres (Chubut), Claudio Vidal (Santa Cruz) y Llaryora (Córdoba). Los cinco gobernadores tienen como objetivo establecer un “bloque compacto” en el Congreso para defender e impulsar medidas que respondan a las necesidades del interior productivo. Para ese desafío, por ejemplo, Pullaro planea postular a su vicegobernadora Gisela Scaglia, quien responde a Macri. Los cordobeses también tienen puestos los ojos en la provincia de Buenos Aires, donde podrían bendecir a Florencio Randazzo para la lista de Somos Buenos Aires.
POLITICA
Armado local y marca nacional: la estrategia del nuevo frente de gobernadores para las elecciones de octubre

El año electoral genera distintos movimientos en los espacios políticos del país, incluso en aquellos que están alejados de los extremos que propone la polarización entre libertarios y peronistas.
Días atrás, surgió como una alternativa la fuerza “Provincias Unidas”, referenciada en cinco gobernadores: Martín Llaryora (Córdoba), Maximiliano Pullaro (Santa Fe), Ignacio Torres (Chubut), Carlos Sadir (Jujuy) y Claudio Vidal (Santa Cruz).
Entre los objetivos de ese incipiente espacio está poder presentar una alternativa concreta en las presidenciales del 2027, pero antes están las elecciones legislativas de este año. Y en ese esquema, los mandatarios provinciales ya trabajan en el armado de listas con una consigna clara: armado local y marca nacional.
Leé también: El frente Provincias Unidas de los gobernadores se prepara para ser un aliado crítico de Milei en el Congreso
La idea es respetar los armados provinciales, que no necesariamente son los mismos en cada región. Pero además, comenzar a instalar el sello Provincias Unidas, para no solo ganar visibilidad este año sino proyectarlo hacia adelante. “Cada uno arma, pero el paraguas es Provincias Unidas. El armado será en cada provincia. Hoy existe el espacio en esas cinco, aunque se espera que con el tiempo se sumen otras», indicaron a TN en el entorno de uno de los fundadores.
No obstante, de momento no todos los gobernadores están tan convencidos de cambiar el sello electoral. En una elección que se presenta como nacional y polarizada, la apuesta más segura -sostienen los más reacios- es ir a elecciones con la marca que ya los hizo ganar en 2023. Una de las máximas de este espacio es que se presentan como los que “le ganaron al kirchnerismo” en sus provincias.
Leé también: El PRO avanza en un armado con LLA en la provincia de Buenos Aires: pide 5 lugares en la lista de diputados
“Por lo pronto y por ahora, el frente es muy nuevo, llega muy sobre la hora, el armado es provincial”, indicaron a TN en el entorno del mandatario santacruceño, Claudio Vidal. Allí está vigente el frente Por Santa Cruz, donde confluyen varios partidos y sectores políticos
Además del partido de Vidal, SER (Somos Energía Para Renovar Santa Cruz), están la UCR -en 2023 el sello no estaba, pero la mayoría de los radicales acompañaron-; también está el PRO, Encuentro Ciudadano y hasta un sector importante del peronismo no K, como el exgobernador Sergio Acevedo.
Por esta heterogeneidad y por la hazaña de derrotar al kirchnerismo tras décadas de hegemonía, en las filas de Vidal prefieren mantener su sello, aunque no está definido aún. “Se ganó en 2023 con ese sello y ese frente. Se va a tratar de mantener”, remarcaron.
En Chubut, la lógica también es la de respetar los acuerdos locales. “Los armados provinciales son independientes. Allí está definido que los candidatos serán el vicegobernador Gustavo Menna y la diputada nacional Ana Clara Romero. ”No está fácil la elección, pero siempre la expectativa es meter los dos“, señalaron a TN cerca de Nacho Torres.
En Santa Fe, es probable que cambie el sello Unidos por el de los gobernadores. “Estamos muy entusiasmados. Creemos que es una forma distinta de entender a la Argentina. Las Provincias decidimos unirnos para plantear un modelo alternativo, una gestión de poder distinta”, afirmó Pullaro este miércoles en diálogo con A24.
En la misma línea, el mandatario aclaró: “No es un espacio de centro o moderado. Es un espacio de gestión. Es un espacio que toma los problemas y los resuelve. No es un espacio ideológico”. Y remarcó: “En nosotros van a encontrar sensatez. Acompañaremos lo que entendamos que está bien, como hicimos con muchas políticas del presidente Milei que consideramos que eran lo mejor para la Argentina”.
Un bloque federal en el Congreso
Si bien se respetarán los armados provinciales para este turno electoral, el plan es sí plasmar una construcción integrada en el Congreso. En el que funcionará a partir del 10 de diciembre, pero también en las votaciones que se darán antes.
En todas esas interaccioneas, primará este rol de árbitro que pretenden tener, entre libertarios y kirchneristas: acompañar lo que estén de acuerdo y reclamar y rechazar cuando no lo estén.
“Ya están trabajando en ese sentido. La idea es ya ir como bloque, pero falta un poco para que esté totalmente aceitado eso. Los gobernadores hablan entre ellos y planifican. Buscan el consenso en las acciones”, señalaron cerca de los mandatario a este medio. De todas maneras, reconocen que se trata de un armado incipiente: “Por lo nuevo del armado, falta un poco. Para el 10 de diciembre eso va a funcionar al 100%, y yo creo que antes también”.
“El bloque es una realidad, y los gobernadores están llevando una estrategia en lo que respecta a temas nacionales, en conjunto”, explicaron. Y finalizaron: “El ideal es que después del 10 de diciembre todos los diputados y senadores del espacio confluyan en un solo bloque”.
Gobernadores, Elecciones, Congreso de la Nación
POLITICA
Uno por uno, cómo votaron los diputados el proyecto de Emergencia del Garrahan

`
: `
`
}
${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();
}
});