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
José Luis Manzano compitió en una exclusiva regata en Cerdeña, a un año del incendio de su yate

De ministro de Menem a empresario de medios y energía
Un velero de 40 metros diseñado por Germán Frers
Cómo le fue en la Rolex Swan Cup
POLITICA
Neuquén: condenaron a tres años de prisión condicional al exintendente que atacó a su sucesor con un cuchillo

SAN CARLOS DE BARILOCHE.- A solo una semana del grave episodio ocurrido en Pilo Lil, en el que el actual presidente de la Comisión de Fomento protagonizó un enfrentamiento con su antecesor, la Justicia neuquina resolvió la causa penal mediante un procedimiento de juicio abreviado.
Eliseo Esteban Díaz, quien estuvo al frente de la comisión de fomento durante 12 años, fue condenado por el delito de coacción agravada por el uso de un arma tras haber amenazado de muerte con un cuchillo al actual presidente comunal, Andrés Avelino Infante.
El acuerdo de pena fue presentado por el fiscal jefe Gastón Ávila y homologado por el juez de garantías Maximiliano Bagnat, contando con el aval de la defensora Laura Plaza y de la abogada querellante Lorena Miani. La sentencia contempla una pena de tres años de prisión de ejecución condicional.
Para mantener la libertad condicional y evitar que la condena se convierta en prisión efectiva, Díaz deberá cumplir estrictas reglas de conducta durante un plazo de tres años. En principio, le impusieron una prohibición absoluta de contacto e intimidación: no podrá ejercer actos de perturbación ni mantener ningún tipo de contacto –por sí ni por terceros– con Infante ni con su grupo familiar.
Asimismo, Díaz deberá fijar un domicilio formal y concurrir a las citaciones y controles de la Dirección de Población Judicializada. Debido a las reducidas dimensiones de la localidad de Pilo Lil, el juez Bagnat remarcó que las prohibiciones responden a la necesidad de prevenir cualquier acto de violencia.
Ante la posibilidad de que ambos hombres se crucen en la vía pública, el magistrado le advirtió expresamente a Díaz: “Ante esa situación, usted deberá darse la vuelta e irse”.
El violento episodio que desencadenó el proceso judicial ocurrió el viernes pasado durante una jornada de trabajo con funcionarios provinciales en el comedor del Parador Turístico comunal. La discusión se originó cuando Díaz solicitó un camión de la comuna para trasladar fardos de pasto destinados a sus animales.
Al exigírsele la presentación de una nota formal para justificar la salida del vehículo y la rendición del combustible, el intercambio verbal derivó en gritos, insultos y empujones.
La situación escaló cuando el exjefe comunal extrajo un cuchillo de su cintura y amenazó de muerte a Infante al grito de “Te voy a matar”. Ante el riesgo inminente, la pareja de Infante, Raquel Fantini, debió interponerse físicamente como escudo para frenar la agresión.
Toda la secuencia fue registrada en video por la coordinadora regional provincial Eliana Rivera. Esa filmación se convirtió en la prueba audiovisual determinante presentada por el Ministerio Público Fiscal para sostener la acusación y lograr la condena expedita de Díaz.
En sus descargos, Díaz reconoció haber extraído un cuchillo tipo “verijero” (de 10 a 12 centímetros), pero argumentó que actuó únicamente en legítima defensa. Sostuvo que le habían preparado “una cama” y que pretendían agredirlo entre tres personas.
Por su parte, la esposa de Díaz, Belén Griselda Alfonso, afirmó que Díaz ya había gestionado el uso del camión comunal el día anterior, por lo que su molestia surgió al regresar y notar que el vehículo no estaba disponible. En la previa del juicio abreviado, Alfonso aseguró que fue el propio Infante quien inició la agresión física al tomar a Díaz del pecho.
Finalmente, en la audiencia judicial posterior, la defensora oficial de Díaz, Laura Plaza, avaló el acuerdo de juicio abreviado propuesto por la fiscalía para cerrar la causa.
enfrentamiento con su antecesor,Paz García Pastormerlo,Conforme a
POLITICA
Recortes en Discapacidad: el Gobierno rechazó las críticas de Bullrich, aunque reconoce que hubo “un error de coordinación”

En el Gobierno crece el malestar por los últimos desmarques públicos de Patricia Bullrich y comenzaron a aparecer también críticas internas al funcionamiento de la mesa política. En distintos sectores de la Casa Rosada cuestionan que la jefa del bloque libertario en el Senado exponga diferencias con la conducción y atribuyen parte de sus movimientos a una búsqueda de posicionamiento hacia 2027.
El último episodio se abrió después de que Bullrich asegurara que no había sido informada sobre los cambios en Discapacidad incluidos en el Presupuesto 2027, pese a haber participado de la reunión de la mesa política realizada pocas horas antes del envío del proyecto al Congreso. La senadora sostuvo que esa falta de información “resiente” la relación con los aliados.
En sectores del Ejecutivo reconocen que hubo un error de coordinación, pero cuestionan que Bullrich lo haya hecho público. “Nos equivocamos todos en general. Esto fue un error de coordinación”, admiten en Nación, donde sostienen al mismo tiempo que las diferencias deberían procesarse dentro del Gobierno y no a través de declaraciones públicas.
El episodio profundizó además las dudas sobre para qué sirve actualmente la mesa política. “No sé para qué sirve juntarse si no nos ordenamos”, cuestiona un funcionario de primera línea. En otros despachos describen el espacio como una instancia en la que los integrantes evitan anticipar decisiones por temor a filtraciones y tampoco exponen completamente sus planes.
La mesa se reúne con frecuencia semanal y está integrada por Karina Milei, Diego Santilli, Luis Caputo, Martín Menem, Patricia Bullrich, Ignacio Devitt, Eduardo “Lule” Menem, Santiago Caputo y Fabián Fernández. La reunión del martes se extendió durante casi tres horas y terminó poco antes de que el Presupuesto fuera enviado al Congreso.
Bullrich confirmó públicamente que los cambios sobre Discapacidad no se discutieron allí. “No nos enteramos, es la verdad”, sostuvo. También planteó que llegar al Congreso sin conocer el contenido de las iniciativas deja a los jefes parlamentarios expuestos frente a aliados y opositores.
Ese diagnóstico es compartido parcialmente puertas adentro. Funcionarios del Gobierno admiten que distintos sectores del oficialismo tampoco conocían el articulado y que el episodio desordenó la negociación que diputados libertarios ya mantenían con bloques dialoguistas para intentar acordar una salida sobre la Emergencia en Discapacidad.
ECONOMIA15 horas ago"Atendiendo a los kukas mentirosos": el presidente Javier Milei opinó sobre las reservas en el oro del Banco Central
POLITICA2 días agoCortocircuito y quiebre entre la Casa Rosada y sus diputados por la ley de discapacidad
POLITICA2 días agoMalvinas: una jueza de Río Grande ordenó a Rockhopper y Navitas frenar el avance del proyecto petrolero Sea Lion

















