POLITICA
Uno por uno, cómo votaron los diputados el proyecto que modifica la ley de Zonas Frías y recorta subsidios al gas

${status}
`;
}
function createCard(item, borderColor) {
const card = document.createElement(«div»);
card.className = «vd2__card»;
const fotoWrap = document.createElement(«div»);
fotoWrap.className = «vd2__foto»;
if (borderColor) {
fotoWrap.style.borderColor = borderColor;
} else {
fotoWrap.style.opacity = «0.3»;
fotoWrap.style.border = «none»;
}
const img = document.createElement(«img»);
img.loading = «lazy»;
img.decoding = «async»;
img.alt = «foto-diputado»;
img.src = photoBase + (item.url_foto || «»);
img.addEventListener(«error», () => {
img.style.opacity = «0.35»;
}, {
once: true
});
fotoWrap.appendChild(img);
const nombre = document.createElement(«p»);
nombre.className = «vd2__nombre»;
nombre.textContent = String(item.nombres || «»).toLowerCase();
const apellido = document.createElement(«p»);
apellido.className = «vd2__apellido»;
apellido.textContent = String(item.apellido || «»).toLowerCase();
const bloque = document.createElement(«span»);
bloque.className = «vd2__bloque»;
bloque.textContent = String(item.bloque || «»);
card.appendChild(fotoWrap);
card.appendChild(nombre);
card.appendChild(apellido);
card.appendChild(bloque);
return card;
}
function seatClass(kind) {
if (kind === «AFIRMATIVO») return «vd2__seat–afirmativo»;
if (kind === «NEGATIVO») return «vd2__seat–negativo»;
if (kind === «ABSTENCIÓN») return «vd2__seat–abstencion»;
if (kind === «AUSENTE») return «vd2__seat–ausente»;
return «vd2__seat–empty»;
}
function hemicicloParams(which) {
// Basado en la distribución original para Diputados (257)
const seatsPerRow = [38, 36, 33, 30, 27, 24, 21, 19, 16, 13]; // suma 257
if (which === «big») {
return {
centerX: 300,
baseY: 450,
rows: 10,
seatsPerRow,
verticalOffset: 2,
radiusStart: 300,
radiusStep: 30
};
}
return {
centerX: 300,
baseY: 450,
rows: 10,
seatsPerRow,
verticalOffset: 2,
radiusStart: 170,
radiusStep: 16
};
}
function computeRowSeatCounts(seatsPerRow, totals) {
const totalSeats = seatsPerRow.reduce((a, b) => a + b, 0);
return seatsPerRow.map(seatsInRow => {
const exact = {
AFIRMATIVO: (totals.AFIRMATIVO / totalSeats) * seatsInRow,
NEGATIVO: (totals.NEGATIVO / totalSeats) * seatsInRow,
«ABSTENCIÓN»: (totals[«ABSTENCIÓN»] / totalSeats) * seatsInRow,
AUSENTE: (totals.AUSENTE / totalSeats) * seatsInRow
};
const floor = {
AFIRMATIVO: Math.floor(exact.AFIRMATIVO),
NEGATIVO: Math.floor(exact.NEGATIVO),
«ABSTENCIÓN»: Math.floor(exact[«ABSTENCIÓN»]),
AUSENTE: Math.floor(exact.AUSENTE)
};
let assigned = floor.AFIRMATIVO + floor.NEGATIVO + floor[«ABSTENCIÓN»] + floor.AUSENTE;
let diff = seatsInRow – assigned;
const rems = [{
k: «AFIRMATIVO»,
r: exact.AFIRMATIVO – floor.AFIRMATIVO
},
{
k: «NEGATIVO»,
r: exact.NEGATIVO – floor.NEGATIVO
},
{
k: «ABSTENCIÓN»,
r: exact[«ABSTENCIÓN»] – floor[«ABSTENCIÓN»]
},
{
k: «AUSENTE»,
r: exact.AUSENTE – floor.AUSENTE
},
].sort((a, b) => b.r – a.r);
while (diff > 0) {
for (const it of rems) {
if (diff <= 0) break;
floor[it.k] += 1;
diff–;
}
}
return floor;
});
}
function renderHemiciclo(which, totals) {
const el = byRole(which === «big» ? «hemiciclo-big» : «hemiciclo-small»);
if (!el) return;
el.innerHTML = «»;
const p = hemicicloParams(which);
let rowSeatCounts = computeRowSeatCounts(p.seatsPerRow, totals);
const maxSeatsInRow = p.seatsPerRow[0];
for (let col = 0; col < maxSeatsInRow; col++) {
for (let row = 0; row < p.rows; row++) {
if (col >= p.seatsPerRow[row]) continue;
const seatsInThisRow = p.seatsPerRow[row];
const radius = p.radiusStart – row * (p.radiusStep – p.verticalOffset);
const angleRange = Math.PI;
const angleStep = (seatsInThisRow > 1) ? angleRange / (seatsInThisRow – 1) : 0;
const angle = (Math.PI – angleRange) / 2 + col * angleStep;
const x = p.centerX + radius * Math.cos(angle);
const y = p.baseY – radius * Math.sin(angle);
let kind = «EMPTY»;
if (rowSeatCounts[row].AFIRMATIVO > 0) {
kind = «AFIRMATIVO»;
rowSeatCounts[row].AFIRMATIVO–;
} else if (rowSeatCounts[row].NEGATIVO > 0) {
kind = «NEGATIVO»;
rowSeatCounts[row].NEGATIVO–;
} else if (rowSeatCounts[row][«ABSTENCIÓN»] > 0) {
kind = «ABSTENCIÓN»;
rowSeatCounts[row][«ABSTENCIÓN»]–;
} else if (rowSeatCounts[row].AUSENTE > 0) {
kind = «AUSENTE»;
rowSeatCounts[row].AUSENTE–;
}
const seat = document.createElement(«div»);
seat.className = «vd2__seat » + seatClass(kind);
seat.style.left = x + «px»;
seat.style.top = y + «px»;
el.appendChild(seat);
}
}
}
function populateFilters(data) {
const selProv = byRole(«select-provincia»);
const selBloq = byRole(«select-bloque»);
if (!selProv || !selBloq) return;
const provSet = new Set();
const bloqSet = new Map(); // bloque -> full
data.forEach(r => {
if (r.provincia) provSet.add(r.provincia);
if (r.bloque) bloqSet.set(r.bloque, r.bloque_full || r.bloque);
});
Array.from(provSet).sort().forEach(p => {
const opt = document.createElement(«option»);
opt.value = p;
opt.textContent = p;
selProv.appendChild(opt);
});
Array.from(bloqSet.entries())
.sort((a, b) => String(a[0]).localeCompare(String(b[0])))
.forEach(([code, full]) => {
const opt = document.createElement(«option»);
opt.value = code;
opt.textContent = `${full} (${code})`;
selBloq.appendChild(opt);
});
}
function renderFiltered(data, field, value, targetEl) {
targetEl.innerHTML = «»;
const rows = data.filter(r => value === «all» || r[field] === value);
const order = [«AFIRMATIVO», «NEGATIVO», «ABSTENCIÓN», «AUSENTE»];
const colorBy = {
AFIRMATIVO: «#00A377»,
NEGATIVO: «#c90808»,
«ABSTENCIÓN»: «#444″,
AUSENTE: null
};
order.forEach(voto => {
rows.filter(r => normalizeVoto(r.voto) === voto).forEach(r => {
targetEl.appendChild(createCard(r, colorBy[voto]));
});
});
}
function wireUI(data) {
// toggles
$$(‘[data-role=»section»], [data-role=»filter-provincia»], [data-role=»filter-bloque»]’).forEach(sec => {
const btn = sec.querySelector(‘[data-role=»toggle»]’);
if (!btn) return;
btn.addEventListener(«click», () => {
const open = sec.getAttribute(«data-open») !== «true»;
openPanel(sec, open);
});
});
// abrir por defecto secciones principales, y dejar filtros cerrados
$$(‘[data-role=»section»]’).forEach(sec => openPanel(sec, true));
$$(‘[data-role=»filter-provincia»], [data-role=»filter-bloque»]’).forEach(sec => openPanel(sec, false));
// go top
const goTop = byRole(«go-top»);
if (goTop) {
goTop.addEventListener(«click», () => root.scrollIntoView({
behavior: «smooth»
}));
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
goTop.style.display = e.isIntersecting ? «block» : «none»;
});
}, {
threshold: 0.1
});
obs.observe(root);
}
// filtros
const selProv = byRole(«select-provincia»);
const selBloq = byRole(«select-bloque»);
const provOut = byRole(«provincia-results»);
const bloqOut = byRole(«bloque-results»);
if (selProv && provOut) {
selProv.addEventListener(«change», (e) => {
renderFiltered(data, «provincia», e.target.value, provOut);
const sec = byRole(«filter-provincia»);
if (sec) openPanel(sec, true);
});
}
if (selBloq && bloqOut) {
selBloq.addEventListener(«change», (e) => {
renderFiltered(data, «bloque», e.target.value, bloqOut);
const sec = byRole(«filter-bloque»);
if (sec) openPanel(sec, true);
});
}
}
async function init() {
setLoaded(false);
const csvUrl = root.dataset.csvUrl;
if (!csvUrl) {
const summary = byRole(«summary»);
if (summary) summary.innerHTML = `
Error: falta data-csv-url
`;
return;
}
try {
const Papa = await ensurePapa();
Papa.parse(csvUrl, {
download: true,
header: true,
skipEmptyLines: true,
complete: function(res) {
const data = (res && res.data) ? res.data : [];
// panels por voto
const panelByVote = {};
$$(‘[data-role=»section»]’).forEach(sec => {
const voto = sec.getAttribute(«data-voto»);
const panel = sec.querySelector(‘[data-role=»panel»]’);
if (voto && panel) panelByVote[voto] = panel;
});
const counts = {
AFIRMATIVO: 0,
NEGATIVO: 0,
«ABSTENCIÓN»: 0,
AUSENTE: 0
};
const colorBy = {
AFIRMATIVO: «#00A377»,
NEGATIVO: «#c90808»,
«ABSTENCIÓN»: «#444″,
AUSENTE: null
};
data.forEach(row => {
const voto = normalizeVoto(row.voto);
if (!counts.hasOwnProperty(voto)) return;
counts[voto]++;
const panel = panelByVote[voto];
if (panel) {
panel.appendChild(createCard(row, colorBy[voto]));
}
});
// counts en UI
$$(‘[data-role=»count»]’).forEach(el => {
const k = el.getAttribute(«data-kind»);
if (k && counts.hasOwnProperty(k)) el.textContent = String(counts[k]);
});
// hemiciclo + summary
renderHemiciclo(«big», counts);
renderHemiciclo(«small», counts);
renderSummary(counts);
// filtros + ui
populateFilters(data);
wireUI(data);
setLoaded(true);
// recalcular heights en secciones abiertas
$$(‘[data-role=»section»]’).forEach(sec => openPanel(sec, true));
}
});
} catch (err) {
console.error(err);
const summary = byRole(«summary»);
if (summary) {
summary.innerHTML = `
Error: ${escapeHtml(err.message || err)}
`;
}
}
}
init();
})();
POLITICA
Causa AFA: la Justicia encontró nuevas propiedades vinculadas al entramado empresarial de Pablo Toviggino

El juez federal de Zárate Adrián González Charvay solicitó este miércoles peritajes contables y tasaciones de bienes pertenecientes a empresas ligadas al tesorero de la AFA, Pablo Toviggino. La lista incluyó tres nuevas propiedades en el barrio porteño de Belgrano.
Según aseguraron fuentes judiciales, González Charvay ya cuenta con detallados informes financieros sobre el titular de la AFA, Claudio Tapia, su mano derecha, Toviggino, y las empresas satélite sospechadas de lavar dinero de la casa madre del fútbol argentino, entre ellas Real Central SRL.
En ese contexto, mientras la Cámara en lo Penal Económico define qué juez queda al frente de la causa por la mansión de Pilar valuada en más de 20 millones de dólares -atribuida al tesorero de la AFA-, el magistrado presentó una larga lista de bienes a tasar.
A su vez, también les pidió a los peritos contadores de la Corte que realicen “una experticia de la especialidad a los efectos de que, a partir de la totalidad de los elementos incorporados en autos, se detallen las personas físicas y jurídicas que hubieran intervenido en cada operación”.
La lista de bienes vinculados a la AFA bajo investigación de la Justicia
Entre las propiedades bajo investigación, González Charvay incluyó dos casas en el barrio privado Ayres Plaza, adquiridas por Real Central SRL el 5 de septiembre de 2024 a la firma Wicca SAS. De acuerdo al expediente, sus gastos eran pagados con una tarjeta de la AFA por Luciano Pantano, presunto testaferro de Toviggino.
Los peritajes también fueron solicitados para el terreno donde se construyó la mansión de Pilar, adquirido por Central Park Drinks SRL -hoy Real Central SRL- a Malter SRL el 30 de mayo de 2024.
La lista se amplía con otro terreno en Pilar adquirido por Real Central el 4 de agosto de 2025 a Transur SA; la parcela 3 de Estación Río Luján, en Campana -Barrio cerrado Diciembre SA-, adquirida por Claudio Fabián Tapia a Carlos Alberto Tevez el 11 de febrero de 2019; y la parcela 74 de Estación Río Luján, partido de Campana -Barrio Cerrado Diciembre SA-, adquirida por Claudio Tapia el 20 de agosto de 2020.
A esas propiedades se incorporaron tres departamentos del edificio ubicado en Pampa al 1900 esquina Tres de Febrero, en la Ciudad Autónoma de Buenos Aires, adquiridos por Real Central SRL el 28 de agosto de 2024.
Acusaciones de desvío de fondos y la investigación sobre la tarjeta de la AFA
De acuerdo a la hipótesis de la Justicia, las empresas vinculadas a Toviggino no habrían podido generar recursos suficientes como para adquirir ese patrimonio, por lo que los fondos habrían surgido de desvíos de la AFA.
En ese contexto, la Justicia también investiga los gastos totales de la tarjeta corporativa de la AFA American Express emitida a nombre de Pantano, con la cual se habrían pagado expensas de las casas de Ayres Plaza y seguros de vehículos.
Si bien Pantano figura como titular de la mansión en Pilar, los investigadores sostienen que no tiene la capacidad económica para afrontar los gastos, sino que se trata de un allegado del tesorero de la AFA. Junto a él, figuraba como socia de Real Central Ana Conte, una jubilada y exempleada doméstica.
A la tarjeta se suman otras facturas apócrifas emitidas por la AFA por supuestos servicios inexistentes por $900 millones, en una maniobra que fue denunciada por ARCA esta semana.
AFA, Pablo Toviggino, Justicia
POLITICA
Javier Milei y sus medidas, en vivo: tensión interna y victoria del oficialismo en Diputados

Desde hace mucho tiempo viene llamando la atención el nivel de agresividad con que se despliegan las luchas internas en el oficialismo. Pero el último episodio, el duelo entre Martín Menem y Santiago Caputo a propósito de que salió del anonimato la cuenta “Periodista Rufus”, de la red social X, plantea un inconveniente mucho más serio: la incapacidad que viene exhibiendo Javier Milei para disciplinar a las figuras más relevantes de su entorno. En otras palabras: sale a la luz un problema de liderazgo.
La dificultad que presenta Milei en este caso genera perplejidad. Su imagen hasta ahora era la de un jefe implacable. Alguien capaz de decapitar colaboradores con los que había tenido una relación muy duradera, como Nicolás Posse o Guillermo Francos, sus primeros dos jefes de Gabinete. Alguien que también está en condiciones de desconcertar, con aplicaciones maquiavélicas de frío y de calor, a un aliado como Mauricio Macri. Esas habilidades se están volviendo intrascendentes, ya que quedó al desnudo la parálisis que exhibe el Presidente en el conflicto entre sus dos principales escoltas: su hermana Karina y el “Mago del Kremlin” Caputo. Frente a ellos dos Milei está detenido.
POLITICA
Iniciaron una causa por posible espionaje ilegal contra Horacio Rosatti

El fiscal federal Carlos Stornelli abrió una causa para investigar si Horacio Rosatti, presidente de la Corte Suprema y del Consejo de la Magistratura, estaba siendo vigilado. El detonante fue la detección de dos personas con un trípode y una cámara apuntando hacia su residencia en Santa Fe el domingo pasado, cuando su custodia llegó para trasladarlo a Buenos Aires.
Uno de los identificados es de nacionalidad venezolana. El juez federal Julián Ercolini, a cargo del expediente, dispuso tomar declaración a los custodios, obtener filmaciones de seguridad y profundizar la investigación sobre las personas identificadas. También ordenó certificar causas previas relacionadas con la seguridad de Rosatti.
El episodio se suma a una larga serie de incidentes contra el magistrado. En abril pasado, la Cámara Federal de Casación confirmó cuatro años de cárcel para Damián Berruet, quien había intentado robar una camioneta asignada a Rosatti en la puerta del Palacio de Tribunales en mayo de 2024.
En ese juicio, el fiscal Diego Luciani sostuvo que el intento de robo fue parte del “hostigamiento y asedio” que Rosatti sufre desde 2019 y enumeró otros hechos: intentos de robo en su domicilio de Santa Fe, “pintadas y pasacalles intimidatorias”, “artefactos sospechosos que debieron ser detonados”, el robo de declaraciones juradas en el Consejo de la Magistratura y “sucesivos intentos de hackeos”.
En diciembre de 2025, Rosatti había descripto la magnitud del hostigamiento en una entrevista: “Debo ser el funcionario público más espiado y más vigilado en la República Argentina hoy, no tengo dudas de eso”. Pese a ello, descartó sentirse presionado: “Me pueden hackear, me pueden escanear mi conducta personal, mi conducta fiscal. No van a encontrar absolutamente nada, ningún material susceptible de generar una extorsión”.
La entrada Iniciaron una causa por posible espionaje ilegal contra Horacio Rosatti se publicó primero en Nexofin.
Corte Suprema,Espionaje,Horacio Rosatti
POLITICA3 días agoEl PRO redobló las críticas contra La Libertad Avanza y elevó la tensión: «Cuando ellos estaban callados, nosotros combatíamos al kirchnerismo”
POLITICA3 días agoVictoria Villarruel volvió a diferenciarse del Gobierno y cuestionó la compra de un avión
POLITICA2 días agoLos bancarios lograron un nuevo aumento alineado con la inflación y el sueldo inicial marca otro récord












