/* estilos de los modulos de Dinero (facturas, presupuestos, gastos, informes, kpis, gestoria, autonomos, historico...)
 * Solo tokens var(--...). Cada modulo en su bloque «== Modulo ==» para no pisarse. */

/* == Comun a Dinero == */
/* importes: nunca partidos en dos lineas y cifras alineadas */
table.t td.num, table.t th.num, .importe { white-space: nowrap; font-variant-numeric: tabular-nums }
table.t td.num b, .importe b { font-weight: 600 }
.din-sub { display: block; margin-top: .15rem; font-size: var(--fs-sm, .875rem); color: var(--ink-soft) }
/* barra de herramientas de un listado: periodo a la izquierda, acciones secundarias a la derecha */
.din-toolbar { display: flex; flex-wrap: wrap; gap: var(--s-3); align-items: center; justify-content: space-between; margin-bottom: var(--s-4) }
.din-toolbar .actions { display: flex; flex-wrap: wrap; gap: var(--s-2) }
/* resumen de totales bajo una lista */
.din-resumen { display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-5); margin: var(--s-3) 0 0; color: var(--ink-soft) }
.din-resumen b { color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap }
/* zona de peligro (acciones irreversibles al final de una ficha) */
.din-peligro { border: 1px solid var(--err); border-radius: var(--r); padding: var(--s-4); margin-top: var(--s-6); background: var(--paper) }
.din-peligro h2 { color: var(--err-ink); font-size: var(--fs-lg, 1.125rem); margin: 0 0 var(--s-2) }
.din-peligro p { margin: 0 0 var(--s-3); color: var(--ink-soft) }
/* ficha en ventana emergente: mas compacta */
.modal-body .din-ficha .card { margin-bottom: var(--s-3) }
@media (max-width: 760px) {
  .din-toolbar { align-items: stretch }
  .din-toolbar .actions .btn { flex: 1 1 auto }
}
/* lista de datos (término: valor) en fichas */
.din-dl { display: grid; grid-template-columns: max-content 1fr; gap: var(--s-2) var(--s-4); margin: 0 }
.din-dl dt { color: var(--ink-soft); font-size: var(--fs-sm) }
.din-dl dd { margin: 0 }
/* anular un cobro: motivo + botón en la misma fila */
.din-anular { flex-wrap: nowrap; gap: var(--s-2); margin: 0 }
.din-anular input { min-width: 12rem; min-height: var(--tap) }
@media (max-width: 760px) { .din-anular { flex-wrap: wrap } .din-anular input { min-width: 0; flex: 1 1 100% } }
/* campos numéricos dentro de tablas de líneas */
.din-numin { max-width: 110px; text-align: right; font-variant-numeric: tabular-nums }
.din-numin.sm { max-width: 80px }
@media (max-width: 760px) { .din-numin, .din-numin.sm { max-width: 9rem } }
table.lines-t select { min-width: 5.5rem }
/* grupo de opciones con borde (rectificar) */
.din-opts { border: 1px solid var(--line); border-radius: var(--r); padding: var(--s-3) var(--s-4); margin: var(--s-4) 0 }
.din-opts legend { padding: 0 var(--s-1) }
/* listas de dinero: la columna del cliente manda; el resto, lo justo */
table.t.din-lista td:nth-child(2) { min-width: 11rem }
table.t td.acc { width: 1%; white-space: nowrap }
@media (max-width: 760px) {
  table.t.din-lista td:nth-child(2) { min-width: 0 }
}

/* == Presupuestos == */
/* ficha: fila de capítulo dentro de la tabla de partidas */
table.t tr.pv-cap th { text-align: left; background: var(--surface-2); color: var(--ink); font: 600 var(--fs-base) var(--font-head); text-transform: none; letter-spacing: 0 }
/* formulario: partidas en rejilla (antes en un <style> en línea) */
.pres-lineas .lgrid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--s-2) var(--s-3); align-items: end; padding: var(--s-3) 0 }
.pres-lineas .lgrid label, .pres-lineas .lgrid .lab { display: block; margin: 0 0 .15rem; font-size: var(--fs-xs); font-weight: 600; color: var(--ink-soft) }
.pres-lineas .c-tipo { grid-column: span 3 } .pres-lineas .c-conc { grid-column: span 5; position: relative } .pres-lineas .c-zona { grid-column: span 3 } .pres-lineas .c-x { grid-column: span 1; text-align: right }
.pres-lineas .c-u { grid-column: span 1 } .pres-lineas .c-q, .pres-lineas .c-p, .pres-lineas .c-i, .pres-lineas .c-c { grid-column: span 2 } .pres-lineas .c-d { grid-column: span 1 }
.pres-lineas .c-t { grid-column: span 2; text-align: right } .pres-lineas .c-t .f-total { font-weight: 700; min-height: var(--tap); display: flex; align-items: center; justify-content: flex-end }
.pres-lineas .c-desc { grid-column: 1 / -1 }
.pres-lineas .c-q input, .pres-lineas .c-p input, .pres-lineas .c-d input, .pres-lineas .c-c input { text-align: right; font-variant-numeric: tabular-nums }
.pres-lineas .lrow { border-bottom: 2px solid var(--line-soft) } .pres-lineas .lrow td { display: block; padding: 0 }
.pres-lineas .lrow[data-tipo=capitulo] .num-only { display: none } .pres-lineas .lrow[data-tipo=capitulo] .c-conc { grid-column: span 8 } .pres-lineas .lrow[data-tipo=capitulo] .c-x { grid-column: span 1 } .pres-lineas .lrow[data-tipo=capitulo] input.f-concepto { font-weight: 700 }
.pres-lineas .ac { position: absolute; left: 0; right: 0; top: 100%; background: var(--paper); border: 1px solid var(--field-border); border-radius: var(--r); box-shadow: var(--sh-2); z-index: var(--z-dropdown); max-height: 260px; overflow: auto }
.pres-lineas .ac button { display: block; width: 100%; min-height: var(--tap); text-align: left; background: none; border: 0; padding: .55rem .7rem; font: inherit; color: var(--ink); cursor: pointer; border-bottom: 1px solid var(--line-soft) }
.pres-lineas .ac button:hover, .pres-lineas .ac button:focus-visible { background: var(--terra-tint); color: var(--terra-700) }
@media (max-width: 900px) {
  .pres-lineas .c-tipo, .pres-lineas .c-x { grid-column: span 6 } .pres-lineas .c-conc, .pres-lineas .c-zona { grid-column: span 12 }
  .pres-lineas .c-u, .pres-lineas .c-q, .pres-lineas .c-p, .pres-lineas .c-d, .pres-lineas .c-i, .pres-lineas .c-c, .pres-lineas .c-t { grid-column: span 6 }
  .pres-lineas .lrow[data-tipo=capitulo] .c-conc { grid-column: span 12 }
}

/* == Gastos == */
.din-kpis { margin-bottom: var(--s-4) }
table.din-gastos td:nth-child(2) { min-width: 10rem }
table.din-gastos td:nth-child(5) { min-width: 8rem }
.gas-adj { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: var(--s-3) }
.gas-adj figure { margin: 0 }
.gas-adj .gas-pdf { display: grid; place-items: center; aspect-ratio: 1; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface-2); color: var(--ink-soft); font-weight: 600 }
.gas-adj img { width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; border-radius: var(--r-sm); border: 1px solid var(--line) }
.gas-adj figcaption { margin-top: var(--s-1) }
.gas-adj figcaption .btn { width: 100% }
.gas-fiscal { background: var(--cream); border: 1px solid var(--line); border-radius: var(--r); padding: var(--s-3) var(--s-4); margin: var(--s-4) 0 }
.gas-fiscal legend { font-weight: 600; padding: 0 var(--s-1) }
@media (max-width: 760px) {
  .din-kpis { grid-template-columns: 1fr 1fr }
  .din-kpis .kpi-value { font-size: 1.2rem }
  table.din-gastos td:nth-child(2) { min-width: 0 }
}
@media (max-width: 1024px) { .pagehead .gas-nuevo { display: none } }   /* ahí el alta va en el botón flotante (.fab.solo-movil) */
.gas-total { font-size: var(--fs-lg); font-weight: 600; font-variant-numeric: tabular-nums }
.gas-archivos input[type=file], .gas-adj ~ form input[type=file] { max-width: 100%; min-width: 0; width: 100% }
@media (min-width: 1025px) { .gas-prov-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.7fr) } }

/* == Informes y numeros == (Kpis, Ventas, Informes, Gestoria, Autonomos, Historico) */
/* grafico de tendencia (antes en un <style> dentro de la vista) */
.kpi-chart { width: 100%; height: auto; display: block }
.kpi-chart .kc-tx { font: 12px var(--font-body); fill: var(--ink-soft) }
.kpi-chart .kc-grid { stroke: var(--line); stroke-width: 1 }
.kpi-chart .kc-axis { stroke: var(--ink-faint); stroke-width: 1.5 }
.kpi-chart .kc-v { fill: var(--terra-600) }
.kpi-chart .kc-g { fill: var(--info) } .kpi-chart .kc-h { fill: var(--paper); opacity: .55 } .kpi-chart .kc-g2 { fill: url(#kc-hatch) }
.kpi-note { font-size: var(--fs-sm); color: var(--ink-soft) }
section[aria-labelledby^="k-"] > h2, .din-informes > h2 { display: flex; align-items: center; gap: var(--s-2); margin: var(--s-6) 0 var(--s-3) }
section[aria-labelledby^="k-"]:first-of-type > h2 { margin-top: var(--s-2) }
.kpi-card .faint { font-weight: 400 }
.kpis + .card, .kpis + .grid, .kpis + .kpi-note { margin-top: var(--s-4) }
/* desplegable «ver en tabla» / «cambiar fecha» con objetivo tactil */
.din-detalle { margin-top: var(--s-3) }
.din-detalle > summary { cursor: pointer; font-weight: 600; min-height: var(--tap); display: flex; align-items: center; color: var(--link) }
.din-detalle > summary:hover { color: var(--link-hover) }
/* informes: tarjetas del indice */
.din-informe { position: relative; display: flex; flex-direction: column; gap: var(--s-1); padding-right: var(--s-10); text-decoration: none; color: var(--ink); transition: box-shadow var(--dur), border-color var(--dur) }
.din-informe b { font: 600 var(--fs-lg)/1.25 var(--font-head); color: var(--ink) }
.din-informe span { color: var(--ink-soft); font-size: var(--fs-sm) }
.din-informe .din-informe-ir { position: absolute; right: var(--s-4); top: 50%; transform: translateY(-50%); color: var(--terra-600) }
.din-informe:hover { box-shadow: var(--sh-2); border-color: var(--field-border) }
.din-informe:hover b { color: var(--terra-700) }
table.t td.din-neg { color: var(--err-ink); font-weight: 700 }
/* acciones dentro de una fila (marcar pagado, subir justificante, presentada) */
.din-fila-accion { margin-top: var(--s-2) }
.din-subir { display: flex; flex-wrap: wrap; gap: var(--s-2); align-items: center }
.din-subir input[type=file] { max-width: 16rem; font-size: 16px }
.din-presentada { display: flex; flex-wrap: wrap; gap: var(--s-2); align-items: flex-end }
.din-presentada > div { flex: 1 1 9rem } .din-presentada label { font-size: var(--fs-xs); margin: 0 0 .15rem }
.din-fieldset { border: 0; padding: 0; margin: var(--s-4) 0 0 } .din-fieldset legend { font-weight: 600; padding: 0; margin-bottom: var(--s-2) }
/* paquete de la gestoria: dos bloques de accion */
.din-paquete > form { display: flex; flex-direction: column; gap: var(--s-2); align-items: flex-start; padding: var(--s-4); border: 1px solid var(--line); border-radius: var(--r); background: var(--surface) }
.din-paquete > form h3 { display: flex; align-items: center; gap: var(--s-2); margin: 0 }
/* ficha de solo lectura en rejilla (historico) */
.din-dl { display: grid; grid-template-columns: minmax(8rem, max-content) 1fr; gap: var(--s-2) var(--s-4); margin: 0 }
.din-dl dt { color: var(--ink-soft); font-weight: 600 } .din-dl dd { margin: 0; font-variant-numeric: tabular-nums }
@media (max-width: 760px) {
  .din-dl { grid-template-columns: 1fr } .din-dl dd { margin-bottom: var(--s-2) }
  .din-subir input[type=file] { max-width: 100% }
  .din-toolbar .periodo { flex: 1 1 100% }
  .din-fila-accion .btn, .din-presentada .btn, .din-detalle .btn { min-height: var(--tap) }
}
.kpis[tabindex="-1"]:focus { outline: none }
table.din-hist td[data-label="Proveedor"], table.din-hist td[data-label="Cliente"] { min-width: 12rem }
@media (max-width: 760px) { table.din-hist td[data-label="Proveedor"], table.din-hist td[data-label="Cliente"] { min-width: 0 } }
@media (max-width: 760px) {
  table.t.stack tfoot, table.t.stack tfoot tr { display: block; width: 100% }
  table.t.stack tfoot tr { border: 2px solid var(--line); border-radius: var(--r); padding: .4rem .6rem; background: var(--surface-2) }
  table.t.stack tfoot td.din-vacia { display: none }
}
table.din-inf td:first-child a { white-space: nowrap }
table.t.compact td:first-child > a { white-space: nowrap }
