CI / Build Native (push) Successful in 6m56s
- Ranking de rentabilidad: add 3 columns (C. Cristales / C. Ore / C. Fee) alongside the existing Costo column. Update rankingFiltrado() to include the 3 sub-costs in its map output. - Totales Presupuesto (3 sub-vistas: simple/maximizado/mezcla): add Distribución del costo block with bar + legend under existing 3 cards. - Totales Objetivo: extend objetivoTotales() to aggregate sub-costs, then add the same distribution block. - Totales Plan cristales: same distribution block (planTotalesCristales already aggregated sub-costs). - Add 3 generic helpers pctCOf/pctOOf/pctFOf that take a totals object (handles both 'costoTotal' and 'costo' field names). - Fix x-show condition for Presupuesto distribution: use .costo (the field actually returned by planTotalesPresupuesto) instead of .costoTotal. Verified in browser across all 5 distribution points; percentages sum to 100% and math matches per-row calculations.