/* 06 Presupuesto contra el libro de costes. */

.totales-presupuesto {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.total-caja {
  background: var(--panel);
  border: 1px solid var(--divisor);
  border-radius: var(--r);
  box-shadow: var(--sombra-panel);
  padding: 12px 16px;
}
.total-caja .rotulo { display: block; }
.total-caja .cifra {
  margin-top: 5px;
  font: 600 21px/1.15 var(--cuerpo);
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
}
.total-caja .pie { margin-top: 3px; font: 400 11.5px var(--cuerpo); color: var(--texto-3); }
.total-caja .cifra.rojo { color: var(--rojo-txt-2); }
.total-caja .cifra.verde { color: var(--verde-txt); }
.total-caja input {
  margin-top: 5px;
  width: 96px;
  font: 600 15px var(--cuerpo);
  font-variant-numeric: tabular-nums;
  padding: 3px 8px;
}

.opciones-presupuesto {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 8px 16px;
  background: var(--panel);
  border: 1px solid var(--divisor);
  border-radius: var(--r);
  box-shadow: var(--sombra-panel);
  margin-bottom: 16px;
  font-size: 12.5px;
}
.opciones-presupuesto .casilla { margin: 0; }
.opciones-presupuesto label.en-linea {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
}
.opciones-presupuesto select { width: 160px; margin: 0; }

.presupuesto {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 16px;
  height: calc(100vh - 272px);
  min-height: 0;
}
.presupuesto > .panel {
  display: flex;
  flex-direction: column;
  margin: 0;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}

/* una sola rejilla compartida por cabecera y filas, para que las columnas casen */
.cab-libro, .fila-libro {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 92px 92px 84px 62px 92px 84px 78px;
  align-items: baseline;
  gap: 8px;
  padding: 5px 14px;
}
.cab-libro {
  flex: none;
  border-bottom: 1px solid var(--divisor);
  padding-top: 11px;
  padding-bottom: 10px;
  font: 500 11.5px var(--cuerpo);
  color: var(--texto-3);
}
.cab-libro .num, .fila-libro .num { text-align: right; }

.arbol-libro { flex: 1; min-height: 0; overflow-y: auto; }

.fila-libro { border-bottom: 1px solid var(--divisor); font: 400 12px var(--mono); }
.fila-libro .num { font-variant-numeric: tabular-nums; }
.fila-libro.capitulo {
  background: var(--relleno, var(--fila-suave));
  box-shadow: inset 3px 0 0 var(--contorno, var(--texto-3));
  cursor: pointer;
  font-weight: 500;
  padding-top: 7px;
  padding-bottom: 7px;
}
.fila-libro.capitulo .nodo { font-weight: 600; }
.fila-libro.grupo {
  background: color-mix(in oklab, var(--relleno, var(--fila-suave)) 22%, white);
  box-shadow: inset 3px 0 0 var(--contorno, var(--texto-3)), inset 0 -1px 0 color-mix(in oklab, var(--contorno, var(--texto-3)) 35%, white);
  cursor: pointer;
  padding-left: 28px;
}
.fila-libro.grupo .nodo .cod { color: var(--tinta, var(--texto)); font-weight: 600; }
.fila-libro.grupo .nodo .nom { color: var(--tinta, var(--texto)); font-weight: 500; }
.fila-libro.cargo { padding-left: 42px; cursor: pointer; }
.fila-libro.cargo:hover { background: var(--fila-suave); }
.fila-libro.cargo.activo { background: var(--acento-100); box-shadow: inset 2px 0 0 var(--acento); }
.fila-libro .nodo {
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
  font-family: var(--cuerpo);
  font-size: 12.5px;
}
.fila-libro .nodo .cod { font: 500 11.5px var(--mono); flex: none; }
.fila-libro .nodo .nom { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fila-libro .caret { font-size: 9px; color: var(--texto-3); width: 8px; flex: none; }
.fila-libro .rojo { color: var(--rojo-txt-2); }
.fila-libro .verde { color: var(--verde-txt); }

.estado-cargo {
  font: 500 11px/1.5 var(--cuerpo);
  padding: 0 8px;
  border: 1px solid var(--divisor);
  border-radius: 999px;
  color: var(--texto-3);
  background: var(--cabecera-tabla);
  white-space: nowrap;
}
.estado-cargo.cubierta { color: var(--verde-txt); border-color: var(--verde-borde); background: var(--verde-fondo); }
.estado-cargo.parcial { color: var(--ambar-txt); border-color: var(--ambar-borde); background: var(--ambar-fondo); }
.estado-cargo.sin-oferta { color: var(--rojo-txt); border-color: var(--rojo-borde); background: var(--rojo-fondo); }
.estado-cargo.sin-presupuesto { color: var(--texto-3); border-style: dashed; background: transparent; }
.objetivo-cargo .sin-presupuesto { color: var(--texto-3); font-style: italic; }
.sin-presupuesto-op { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; white-space: nowrap; }
.leyenda-estados { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; margin: -4px 0 10px; font-size: 11.5px; color: var(--texto-3); }
.leyenda-estado { display: inline-flex; align-items: center; gap: 6px; }

/* objetivo del cargo: Editar → Guardar / Cancelar */
.objetivo-cargo dd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.objetivo-cargo dd .btn { white-space: nowrap; }
/* editando: el campo y sus botones debajo del rótulo, a todo el ancho */
.objetivo-cargo.editando { display: flex; flex-direction: column; align-items: stretch; gap: 6px; }
.objetivo-cargo.editando dd { justify-content: flex-start; }
.objetivo-cargo .cifra-objetivo { min-width: 70px; }
.objetivo-cargo input { width: 140px; margin: 0; font: 500 12.5px var(--mono); text-align: right; }
.objetivo-cargo.editando input { border-color: var(--acento); }

/* panel derecho del cargo */
.panel-cargo #detalle-cargo { flex: 1; min-height: 0; overflow-y: auto; }
.ruta-cargo {
  font: 400 11.5px var(--mono);
  color: var(--texto-3);
  padding-bottom: 12px;
  margin-bottom: 12px;
  border-bottom: 1px solid var(--divisor);
  overflow-wrap: anywhere;
}
.imputa {
  border: 1px solid var(--divisor);
  border-radius: var(--r);
  padding: 10px 12px;
  margin-bottom: 8px;
  background: var(--panel);
}
.imputa-cab { display: flex; align-items: baseline; gap: 8px; }
.imputa-cab .cod { font: 500 12px var(--mono); }
.imputa-cab .nom {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12.5px;
  color: var(--texto-2);
}
.imputa-cab input {
  width: 60px;
  margin: 0;
  text-align: right;
  font-family: var(--mono);
  font-size: 12px;
}
.imputa-oferta { margin-top: 7px; font: 400 11.5px var(--mono); color: var(--texto-3); }
.imputa-oferta .eur { color: var(--texto); font-weight: 500; }
.imputa-aviso {
  margin-top: 7px;
  font: 400 11.5px var(--cuerpo);
  color: var(--ambar-txt);
  background: var(--ambar-fondo);
  border: 1px solid var(--ambar-borde);
  border-radius: var(--r-sm);
  padding: 4px 8px;
}

/* libro entero: cuentas en capítulos y cargos plegados */
.cuenta-nodo { margin-left: 6px; font: 400 11px var(--cuerpo); color: var(--texto-3); white-space: nowrap; flex: none; }
.fila-libro.cargo .caret { cursor: pointer; }
.estado-cargo.con-partidas { color: var(--acento-700); border-color: var(--acento-300); background: var(--acento-100); }

/* partidas colgando de su cargo */
.fila-libro.partida {
  padding-left: 58px;
  cursor: pointer;
  background: var(--panel);
  font-size: 12px;
}
.fila-libro.partida .nodo { gap: 10px; position: relative; }
.fila-libro.partida .nodo::before {
  content: "";
  position: absolute;
  left: -14px; top: 50%;
  width: 8px; height: 1px;
  background: var(--borde-control);
}
.fila-libro.partida .nom { color: var(--texto); }
.fila-libro.partida .sumin { color: var(--texto-3); font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fila-libro.partida:hover { background: var(--fila-suave); }
.fila-libro.partida.activo { background: var(--acento-100); box-shadow: inset 2px 0 0 var(--acento); }

/* panel del cargo: lista y formulario de partidas */
.partida-caja {
  border: 1px solid var(--divisor);
  border-radius: var(--r);
  padding: 9px 12px;
  margin-bottom: 8px;
  display: grid;
  gap: 4px;
}
.partida-caja.editando { border-color: var(--acento-300); background: var(--acento-100); }
.partida-cab { display: flex; align-items: baseline; gap: 10px; }
.partida-cab .nom { flex: 1; min-width: 0; font: 500 12.5px var(--cuerpo); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.partida-cab .eur { font: 500 12.5px var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
.partida-pie { display: flex; flex-wrap: wrap; gap: 4px 12px; font: 400 11.5px var(--cuerpo); color: var(--texto-3); }
.nota-partida { font-style: italic; }
.partida-caja .grupo-btn { justify-content: flex-end; }
.form-partida {
  margin-top: 4px;
  padding: 12px;
  border: 1px dashed var(--borde-control);
  border-radius: var(--r);
  background: var(--fila-suave);
}
.form-partida > .rotulo { margin-bottom: 10px; }
.form-partida label { margin-bottom: 10px; }

/* el nombre manda: el contador se recorta antes que él */
.fila-libro .nodo .nom { flex: 0 1 auto; min-width: 4em; }
.cuenta-nodo { flex: 0 10 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }

/* sin «Comparar con», Histórico y Δ hist. solo dirían «—»: fuera, y su ancho al nombre */
.presupuesto.sin-hist .cab-libro, .presupuesto.sin-hist .fila-libro {
  grid-template-columns: minmax(0, 1fr) 84px 96px 84px 62px 96px;
}
.presupuesto.sin-hist .cab-libro > :nth-child(6), .presupuesto.sin-hist .cab-libro > :nth-child(7),
.presupuesto.sin-hist .fila-libro > :nth-child(6), .presupuesto.sin-hist .fila-libro > :nth-child(7) { display: none; }

/* Comparar con › Todos los buques: una columna por buque (importe y proveedor) */
.comparativa { flex: 1; min-height: 0; overflow: auto; }
.comparativa[hidden], .cab-libro[hidden], .arbol-libro[hidden] { display: none; }
.tabla-flota { border-collapse: separate; border-spacing: 0; font: 400 12px var(--mono); min-width: 100%; }
.tabla-flota th, .tabla-flota td { padding: 5px 10px; border-bottom: 1px solid var(--divisor); white-space: nowrap; }
.tabla-flota thead th {
  position: sticky; top: 0; z-index: 2; background: var(--panel); font: 500 11.5px var(--cuerpo);
  color: var(--texto-3); text-align: right; vertical-align: bottom;
}
.tabla-flota thead th .nb { font: 600 12px var(--mono); color: var(--texto); }
.tabla-flota thead th .sub { font-size: 10.5px; max-width: 150px; overflow: hidden; text-overflow: ellipsis; }
.tabla-flota .col-cargo {
  position: sticky; left: 0; z-index: 1; background: var(--panel); text-align: left;
  min-width: 260px; max-width: 320px; overflow: hidden; text-overflow: ellipsis;
}
.tabla-flota thead th.col-cargo { z-index: 3; }
.tabla-flota .col-cargo .cod { font-weight: 500; margin-right: 8px; }
.tabla-flota .col-cargo .nom { font: inherit; font-family: var(--cuerpo); }
.presupuesto.flota { grid-template-columns: minmax(0, 1fr); }
.presupuesto.flota .panel-cargo { display: none; }
.presupuesto.flota.con-cargo { grid-template-columns: minmax(0, 1fr) 360px; }
.presupuesto.flota.con-cargo .panel-cargo { display: flex; }
.tabla-flota .num { text-align: right; font-variant-numeric: tabular-nums; }
.tabla-flota td.num { min-width: 120px; }
.tabla-flota .actual { background: color-mix(in oklab, var(--acento-100, #eef2fb) 70%, white); }
.tabla-flota .prov {
  font: 400 10.5px var(--cuerpo); color: var(--texto-3); max-width: 150px; margin-left: auto;
  overflow: hidden; text-overflow: ellipsis;
}
.tabla-flota .vacia { color: var(--texto-3); }
.tabla-flota td.mas-caro .imp { color: var(--rojo-txt-2); }
.tabla-flota td.mas-barato .imp { color: var(--verde-txt); }
/* mismos niveles de color que el libro: capítulo fuerte, sublibro claro, cargo blanco */
.tabla-flota tr.nivel-cap td { background: var(--relleno); font-weight: 600; }
.tabla-flota tr.nivel-cap td.col-cargo { box-shadow: inset 3px 0 0 var(--contorno); }
.tabla-flota tr.nivel-gru td { background: color-mix(in oklab, var(--relleno) 22%, white); color: var(--tinta); font-weight: 600; }
.tabla-flota tr.nivel-gru td.col-cargo { padding-left: 22px; box-shadow: inset 3px 0 0 var(--contorno); }
.tabla-flota tr.nivel-cargo { cursor: pointer; }
.tabla-flota tr.nivel-cargo td.col-cargo { padding-left: 36px; }
.tabla-flota tr.nivel-cargo:hover td { background: var(--fila-suave); }
.tabla-flota tr.nivel-cargo.activo td { background: var(--acento-100); }
.tabla-flota tr.nivel-total td { position: sticky; bottom: 0; background: var(--marco, #1d2026); color: #fff; font-weight: 600; }

/* Excel del presupuesto ▾: este, otro buque o comparado */
.menu-excel-ancla { position: relative; display: inline-block; }
.menu-excel {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 20; width: 320px; padding: 4px;
  background: var(--panel); border: 1px solid var(--divisor); border-radius: var(--r);
  box-shadow: 0 12px 30px -10px rgba(18, 20, 24, .35); display: grid; gap: 2px;
}
.menu-excel[hidden] { display: none; }
.menu-excel-op {
  display: grid; gap: 1px; text-align: left; padding: 8px 10px; border: 0; border-radius: var(--r-sm);
  background: none; cursor: pointer; font: 400 12.5px var(--cuerpo); color: var(--texto);
}
.menu-excel-op:hover:not(:disabled) { background: var(--fila-suave); }
.menu-excel-op:disabled { cursor: default; opacity: .55; }
.menu-excel-op .tit { font-weight: 600; }
.menu-excel-op .desc { font-size: 11.5px; color: var(--texto-3); }

/* Ver › Capítulos / Sublibros / Cargos / Todo */
.ver-nivel { gap: 8px; }
.ver-nivel .segmentado { width: 300px; margin: 0; }
/* la barra no parte los rótulos: si no cabe, pasa a una segunda línea */
.opciones-presupuesto { flex-wrap: wrap; row-gap: 8px; }
.opciones-presupuesto .casilla, .opciones-presupuesto .en-linea, .opciones-presupuesto .btn { white-space: nowrap; }
.opciones-presupuesto .en-linea { display: inline-flex; align-items: center; gap: 8px; }
.opciones-presupuesto .en-linea select { margin: 0; width: auto; min-width: 150px; }
.ver-nivel .segmentado { width: auto; }
.ver-nivel .segmentado button { padding: 4px 10px; }

/* buscador y filtros del libro */
.filtros-presupuesto { margin: 12px 0 12px; }
.filtros-presupuesto .entrada-busqueda { width: 380px; }
.presupuesto { height: calc(100vh - 330px); }
.fila-libro.partida .sumin.oferto { color: var(--acento-700, #2b4a9a); }
.tabla-flota tr.plegable { cursor: pointer; }
.tabla-flota .col-cargo .caret { display: inline-block; width: 12px; font-size: 9px; color: var(--texto-3); margin-right: 4px; }
.tabla-flota tr.nivel-cargo td.col-cargo { padding-left: 52px; }

/* ================================================================ 2026-10-05 */
/* Libro de un buque: el cargo se abre en un desplegable bajo su fila (partidas,
   ofertas recibidas, sistemas); el panel lateral queda para «Todos los buques» */
.presupuesto:not(.flota) { grid-template-columns: minmax(0, 1fr); }
.presupuesto:not(.flota) .panel-cargo { display: none; }
.cargo-desplegable {
  background: var(--fila-suave);
  border-left: 2px solid var(--acento);
  box-shadow: inset 0 8px 12px -12px rgba(18, 20, 24, .18);
  border-bottom: 1px solid var(--divisor);
  animation: desplegar .22s cubic-bezier(.2, .7, .3, 1);
}
#detalle-cargo.en-fila {
  display: grid;
  grid-template-columns: minmax(280px, 380px) minmax(0, 1fr);
  gap: 24px;
  padding: 14px 18px 18px 42px;
}
#detalle-cargo.en-fila .cargo-datos, #detalle-cargo.en-fila .cargo-partidas { min-width: 0; }
#detalle-cargo.en-fila .cargo-partidas > .rotulo:first-child,
#detalle-cargo.en-fila .cargo-datos .rotulo:first-of-type { margin-top: 0 !important; }
#detalle-cargo.en-fila .partida-caja, #detalle-cargo.en-fila .imputa { background: var(--panel); }
@media (max-width: 1100px) { #detalle-cargo.en-fila { grid-template-columns: minmax(0, 1fr); } }
@media (prefers-reduced-motion: reduce) { .cargo-desplegable { animation: none; } }
/* importe en otra moneda: los euros y, debajo, el original */
.fila-libro .num .orig { display: block; font-size: 10.5px; color: var(--texto-3); white-space: nowrap; }
.sin-presupuesto-op input { width: auto; margin: 0; }
