/* adm-fin.css — estilos del módulo fin de administración (finanzas). Prefijo: adm-fin-*
   Sólo tokens --cs-* / --mb-t1-* (claro y oscuro salen solos). Escritorio denso: pensado para 1366×768. */

.adm-fin { display: flex; flex-direction: column; gap: .7rem; padding: .25rem 0 1rem; color: var(--cs-text); font-family: var(--cs-font); min-width: 0; }
.adm-fin h1 { font-size: 1.25rem; font-weight: 800; color: var(--cs-ink); margin: 0; line-height: 1.2; }
.adm-fin h2 { font-size: .95rem; font-weight: 700; color: var(--cs-ink); margin: 0 0 .5rem; }
.adm-fin-h3 { font-size: .85rem; font-weight: 700; color: var(--cs-muted); margin: .8rem 0 .3rem; text-transform: uppercase; letter-spacing: .03em; }
.adm-fin-cab { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; }
.adm-fin-sub { margin: .2rem 0 0; color: var(--cs-muted); font-size: .8rem; max-width: 62rem; }
.adm-fin-acciones { display: flex; gap: .45rem; flex-wrap: wrap; align-items: center; }
.adm-fin-acciones--fin { justify-content: flex-end; margin-top: .4rem; }

/* botones */
.adm-fin-btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; min-height: 32px; padding: 0 .85rem; border-radius: 8px; border: 1px solid var(--cs-primary); background: var(--cs-primary);
    color: #fff; font: 600 .8rem/1 var(--cs-font); cursor: pointer; text-decoration: none; white-space: nowrap; transition: filter .15s, background .15s; }
.adm-fin-btn:hover:not([disabled]):not(.adm-fin-off) { filter: brightness(1.08); }
.adm-fin-btn:focus-visible { outline: 3px solid var(--cs-primary-ring); outline-offset: 1px; }
.adm-fin-btn[disabled], .adm-fin-btn.adm-fin-off { opacity: .45; cursor: not-allowed; pointer-events: none; }
.adm-fin-btn--suave { background: var(--cs-primary-soft); color: var(--cs-primary-dark); border-color: transparent; }
.adm-fin-btn--borde { background: transparent; color: var(--cs-primary); }
.adm-fin-btn--ok { background: var(--cs-ok); border-color: var(--cs-ok); }
.adm-fin-btn--peligro { background: var(--cs-err); border-color: var(--cs-err); }
.adm-fin-btn--sm { min-height: 26px; padding: 0 .55rem; font-size: .75rem; }

/* mensajes */
.adm-fin-vacio { color: var(--cs-muted); padding: .8rem; text-align: center; font-size: .85rem; }
.adm-fin-error { color: var(--cs-err); background: var(--cs-err-bg); border-radius: 8px; padding: .5rem .7rem; font-size: .82rem; margin: .4rem 0; }
.adm-fin-exito { color: var(--cs-ok); background: var(--cs-ok-bg); border-radius: 8px; padding: .5rem .7rem; font-size: .85rem; font-weight: 600; }
.adm-fin-aviso { color: var(--cs-warn); background: var(--cs-warn-bg); border-radius: 8px; padding: .5rem .7rem; font-size: .82rem; margin: .4rem 0; }
.adm-fin-nota { color: var(--cs-muted); font-size: .78rem; margin: .3rem 0 .5rem; }

/* indicadores */
.adm-fin-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .6rem; }
.adm-fin-kpi { background: var(--cs-surface); border: 1px solid var(--cs-line); border-radius: 12px; padding: .6rem .8rem; display: flex; flex-direction: column; gap: .1rem; border-left: 4px solid var(--cs-primary); }
.adm-fin-kpi > span { font-size: .72rem; font-weight: 700; color: var(--cs-muted); text-transform: uppercase; letter-spacing: .03em; }
.adm-fin-kpi > strong { font-size: 1.3rem; color: var(--cs-ink); font-variant-numeric: tabular-nums; }
.adm-fin-kpi > small { font-size: .72rem; color: var(--cs-muted); }
.adm-fin-kpi--err { border-left-color: var(--cs-err); }
.adm-fin-kpi--ok { border-left-color: var(--cs-ok); }

.adm-fin-dos { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; align-items: start; }
.adm-fin-dos--pago { grid-template-columns: minmax(380px, 1fr) minmax(380px, 1fr); }
.adm-fin-panel { background: var(--cs-surface); border: 1px solid var(--cs-line); border-radius: 12px; padding: .8rem; min-width: 0; }
.adm-fin-atajos { display: grid; gap: .5rem; }
.adm-fin-atajo { display: flex; flex-direction: column; padding: .55rem .7rem; border-radius: 10px; background: var(--cs-surface-2); border: 1px solid var(--cs-line); text-decoration: none; color: var(--cs-text); }
.adm-fin-atajo:hover { border-color: var(--cs-primary); background: var(--cs-primary-soft); }
.adm-fin-atajo strong { font-size: .85rem; } .adm-fin-atajo span { font-size: .75rem; color: var(--cs-muted); }

/* tablas simples */
.adm-fin-tabla { width: 100%; border-collapse: collapse; font-size: .8rem; }
.adm-fin-tabla th { text-align: left; font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; color: var(--cs-muted); padding: .35rem .5rem; border-bottom: 2px solid var(--cs-line); }
.adm-fin-tabla td { padding: .3rem .5rem; border-bottom: 1px solid var(--cs-line); vertical-align: middle; }
.adm-fin-tabla tbody tr:hover { background: var(--cs-surface-2); }
.adm-fin-tabla .num { text-align: right; font-variant-numeric: tabular-nums; }
.adm-fin-tabla tfoot td { font-weight: 800; border-top: 2px solid var(--cs-line); border-bottom: 0; }
.adm-fin-tabla small { color: var(--cs-muted); }
.adm-fin-cancelado td { color: var(--cs-faint); text-decoration: line-through; }
.adm-fin-vencido td:nth-last-child(2) { color: var(--cs-err); font-weight: 700; }
.adm-fin-neg { color: var(--cs-err); font-weight: 700; }
.adm-fin-tabla--presup td { padding-top: .2rem; padding-bottom: .2rem; }

/* barra de filtros y resumen */
.adm-fin-filtros { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .6rem; padding: .55rem .7rem; background: var(--cs-surface); border: 1px solid var(--cs-line); border-radius: 12px; }
.adm-fin-resumen { display: flex; flex-wrap: wrap; gap: 1.2rem; align-items: center; font-size: .8rem; color: var(--cs-muted); padding: 0 .3rem; }
.adm-fin-resumen b { color: var(--cs-ink); font-variant-numeric: tabular-nums; }
.adm-fin-pag { margin-left: auto; display: inline-flex; gap: .3rem; align-items: center; }

.adm-fin-tabs { display: flex; gap: .2rem; border-bottom: 1px solid var(--cs-line); }
.adm-fin-tabs button { background: none; border: 0; padding: .5rem 1rem; font: 600 .82rem var(--cs-font); color: var(--cs-muted); cursor: pointer; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.adm-fin-tabs button.activo { color: var(--cs-primary-dark); border-bottom-color: var(--cs-primary); }
.adm-fin-tabs button:hover { color: var(--cs-ink); }

/* formularios */
.adm-fin-form { display: grid; gap: .65rem; }
.adm-fin-form--2 { grid-template-columns: 1fr 1fr; }
.adm-fin-form--3 { grid-template-columns: 1fr 1fr 1fr; }
.adm-fin-opciones { margin: .6rem 0; }
.adm-fin-ficha { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .5rem; margin: .6rem 0; }
.adm-fin-ficha > div { background: var(--cs-surface-2); border: 1px solid var(--cs-line); border-radius: 10px; padding: .4rem .6rem; display: flex; flex-direction: column; min-width: 0; }
.adm-fin-ficha span { font-size: .7rem; color: var(--cs-muted); text-transform: uppercase; letter-spacing: .03em; }
.adm-fin-ficha b { font-size: .9rem; color: var(--cs-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }
.adm-fin-ficha--ancha { grid-template-columns: 1fr 1.4fr 2fr 1.4fr; }
.adm-fin-previa { background: var(--cs-info-bg); color: var(--cs-info); border-radius: 10px; padding: .55rem .7rem; font-size: .82rem; margin-top: .6rem; }
.adm-fin-previa-lista { display: flex; flex-wrap: wrap; gap: .25rem .9rem; margin-top: .3rem; font-size: .76rem; }
.adm-fin-exitopanel { background: var(--cs-surface); border: 1px solid var(--cs-ok); border-radius: 12px; padding: 1rem; }
.adm-fin-exitopanel h2 { color: var(--cs-ok); font-size: 1.1rem; }

/* ventana modal (sin JS) */
.adm-fin-velo { position: fixed; inset: 0; z-index: 900; background: rgba(11,18,32,.5); display: flex; align-items: flex-start; justify-content: center; padding: 3.5vh 1rem; overflow: auto; }
.adm-fin-modal { background: var(--cs-surface); color: var(--cs-text); border-radius: 14px; box-shadow: var(--cs-shadow-lg); width: min(95vw, 640px); max-height: 93vh; display: flex; flex-direction: column; }
.adm-fin-modal-cab { display: flex; justify-content: space-between; align-items: center; padding: .7rem 1rem; border-bottom: 1px solid var(--cs-line); }
.adm-fin-modal-cab h2 { margin: 0; font-size: 1rem; }
.adm-fin-x { border: 0; background: none; font-size: 1.5rem; line-height: 1; color: var(--cs-muted); cursor: pointer; padding: 0 .3rem; }
.adm-fin-x:hover { color: var(--cs-err); }
.adm-fin-modal-cuerpo { padding: 1rem; overflow: auto; }
.adm-fin-modal-pie { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: .5rem; margin-top: .9rem; padding-top: .8rem; border-top: 1px solid var(--cs-line); }

/* antigüedad de saldos */
.adm-fin-antig h2 { margin-bottom: .3rem; }
.adm-fin-antig-barras { display: grid; grid-template-columns: repeat(5, 1fr); gap: .5rem; }
.adm-fin-antig-item { background: var(--cs-surface); border: 1px solid var(--cs-line); border-radius: 10px; padding: .4rem .6rem; border-top: 4px solid var(--cs-warn); display: flex; flex-direction: column; }
.adm-fin-antig-item span { font-size: .7rem; color: var(--cs-muted); text-transform: uppercase; }
.adm-fin-antig-item strong { font-variant-numeric: tabular-nums; }
.adm-fin-antig-item.ok { border-top-color: var(--cs-ok); }
.adm-fin-antig-item.a3, .adm-fin-antig-item.a4 { border-top-color: var(--cs-err); }
.adm-fin-bandas { display: grid; grid-template-columns: repeat(5, 1fr); gap: .6rem; }
.adm-fin-banda { position: relative; overflow: hidden; background: var(--cs-surface); border: 1px solid var(--cs-line); border-radius: 12px; padding: .55rem .8rem .7rem; display: flex; flex-direction: column; }
.adm-fin-banda span { font-size: .72rem; font-weight: 700; color: var(--cs-muted); text-transform: uppercase; }
.adm-fin-banda strong { font-size: 1.2rem; color: var(--cs-ink); font-variant-numeric: tabular-nums; }
.adm-fin-banda small { font-size: .72rem; color: var(--cs-muted); }
.adm-fin-banda i { position: absolute; left: 0; bottom: 0; height: 5px; background: var(--cs-warn); max-width: 100%; }
.adm-fin-banda.b0 i { background: var(--cs-ok); } .adm-fin-banda.b3 i, .adm-fin-banda.b4 i { background: var(--cs-err); }

/* presupuesto */
.adm-fin-barra { position: relative; height: 18px; min-width: 140px; background: var(--cs-line); border-radius: 9px; overflow: hidden; }
.adm-fin-barra i { display: block; height: 100%; background: var(--cs-ok); border-radius: 9px; }
.adm-fin-barra i.alto { background: var(--cs-warn); } .adm-fin-barra i.excede { background: var(--cs-err); }
.adm-fin-barra span { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: .7rem; font-weight: 700; color: var(--cs-ink); }

/* gráfica de barras (SVG en línea) */
.adm-fin-grafica { background: var(--cs-surface); border: 1px solid var(--cs-line); border-radius: 12px; padding: .5rem .8rem; }
.adm-fin-grafica svg { width: 100%; height: 190px; display: block; }
.adm-fin-grafica .gi { fill: var(--cs-primary); } .adm-fin-grafica .ge { fill: var(--cs-warn); }
.adm-fin-grafica .gm { fill: var(--cs-muted); font-size: 11px; font-family: var(--cs-font); } .adm-fin-grafica .gl { stroke: var(--cs-line); stroke-width: 1; }
.adm-fin-leyenda { display: flex; gap: 1rem; font-size: .75rem; color: var(--cs-muted); }
.adm-fin-leyenda i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: .3rem; }
.adm-fin-leyenda i.gi { background: var(--cs-primary); } .adm-fin-leyenda i.ge { background: var(--cs-warn); }

/* tabla dinámica */
.adm-fin--pivote { height: calc(100vh - 80px); }
.adm-fin-pivote-caja { flex: 1; min-height: 420px; border: 1px solid var(--cs-line); border-radius: 12px; overflow: hidden; background: var(--cs-surface); }

@media (max-width: 1100px) {
    .adm-fin-dos, .adm-fin-dos--pago { grid-template-columns: 1fr; }
    .adm-fin-form--3 { grid-template-columns: 1fr 1fr; }
    .adm-fin-bandas, .adm-fin-antig-barras { grid-template-columns: repeat(3, 1fr); }
}
@media print {
    .adm-fin-acciones, .adm-fin-filtros, .adm-fin-tabs { display: none !important; }
}
.adm-fin-meses { display: grid; grid-template-columns: repeat(12, 8.11%); margin: -.2rem 0 .3rem 2.2%; font-size: .72rem; color: var(--cs-muted); text-align: center; }
/* la consola provisional (grid de 2 columnas) deja que el contenido ensanche la página: se lo impedimos al cuerpo que aloja finanzas */
.adm-cuerpo:has(> .adm-fin) { min-width: 0; overflow-x: hidden; }

/* ---------- Bancos: «saldo inicial + ingresos − gastos = saldo final» y estado de resultados ---------- */
.adm-fin-ecuacion { display: flex; flex-wrap: wrap; align-items: stretch; gap: .35rem; margin: .5rem 0; }
.adm-fin-ecuacion > i { align-self: center; font-style: normal; font-size: 1.4rem; font-weight: 700; color: var(--cs-muted); padding: 0 .1rem; }
.adm-fin-ecuacion > article { background: var(--cs-surface); border: 1px solid var(--cs-line); border-radius: 12px; padding: .5rem .8rem; display: flex; flex-direction: column; gap: .1rem; min-width: 8.5rem; }
.adm-fin-ecuacion > article > span { font-size: .7rem; font-weight: 700; color: var(--cs-muted); text-transform: uppercase; letter-spacing: .03em; }
.adm-fin-ecuacion > article > strong { font-size: 1.15rem; color: var(--cs-ink); font-variant-numeric: tabular-nums; }
.adm-fin-ecuacion > article > small { font-size: .72rem; color: var(--cs-muted); }
.adm-fin-ecuacion > article.ok { border-left: 4px solid var(--cs-ok); }
.adm-fin-ecuacion > article.gasto { border-left: 4px solid var(--cs-err); }
.adm-fin-ecuacion > article.total { background: var(--cs-primary-soft, var(--cs-surface)); border-color: var(--cs-primary); }
.adm-fin-ecuacion > article.entrada { gap: .25rem; }
.adm-fin-ecuacion--banco { margin-top: .2rem; }
.adm-fin-filtros--accion { background: var(--cs-surface); border: 1px dashed var(--cs-line); border-radius: 12px; padding: .5rem .7rem; }

.adm-fin-estado { width: 100%; max-width: 60rem; border-collapse: collapse; background: var(--cs-surface); border: 1px solid var(--cs-line); border-radius: 12px; overflow: hidden; font-size: .88rem; }
.adm-fin-estado th, .adm-fin-estado td { padding: .38rem .7rem; border-bottom: 1px solid var(--cs-line); }
.adm-fin-estado thead th { background: var(--cs-bg); color: var(--cs-muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; text-align: left; }
.adm-fin-estado .n { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.adm-fin-estado .seccion td { background: var(--cs-primary); color: #fff; font-weight: 800; letter-spacing: .04em; font-size: .78rem; }
.adm-fin-estado .grupo td { font-weight: 700; color: var(--cs-ink); background: var(--cs-bg); }
.adm-fin-estado .sangria { padding-left: 1.8rem; }
.adm-fin-estado .vacio { color: var(--cs-muted); font-style: italic; }
.adm-fin-estado .total td { font-weight: 800; border-top: 2px solid var(--cs-ink); color: var(--cs-ink); }
.adm-fin-estado .resultado td { font-weight: 800; font-size: 1rem; background: var(--cs-ok-bg); color: var(--cs-ok); }
.adm-fin-estado .resultado.mal td, .adm-fin-estado .mal { color: var(--cs-err); }
.adm-fin-estado .resultado.mal td { background: var(--cs-err-bg, var(--cs-bg)); }
.adm-fin-estado tr.ok td { color: var(--cs-ok); font-weight: 600; }

/* Alta rápida de categoría/proveedor y advertencia de presupuesto dentro de la ventana de egreso */
.adm-fin-campo-mas { display: flex; align-items: flex-end; gap: .4rem; }
.adm-fin-campo-mas > :first-child { flex: 1 1 auto; min-width: 0; }
.adm-fin-campo-mas > button { flex: 0 0 auto; margin-bottom: .1rem; white-space: nowrap; }
.adm-fin-rapido { border: 1px dashed var(--cs-line); border-radius: 10px; padding: .6rem .75rem; margin: .6rem 0; background: color-mix(in srgb, var(--cs-primary) 4%, transparent); }
.adm-fin-rapido h3 { margin: 0 0 .5rem; font-size: .88rem; }
.adm-fin-rapido-pie { display: flex; justify-content: flex-end; gap: .5rem; margin-top: .6rem; flex-wrap: wrap; }
.adm-fin-aviso--presup p { margin: 0 0 .5rem; }
.adm-fin-aviso-asignar { display: flex; align-items: flex-end; gap: .6rem; flex-wrap: wrap; margin: .4rem 0; }
@media (max-width: 700px) { .adm-fin-campo-mas { flex-wrap: wrap; } }
.adm-fin-chip { display: inline-block; margin-left: .45rem; padding: .08rem .5rem; border-radius: 999px; font-size: .7rem; font-weight: 700; background: var(--cs-line); color: var(--cs-muted); vertical-align: middle; }
.adm-fin-chip--warn { background: var(--cs-warn-bg); color: var(--cs-warn); }

/* presupuesto/categoría, fondo bloqueado y movimientos del banco por identificar */
.adm-fin-h2 { font-size: 1rem; margin: 1.1rem 0 .2rem; color: var(--cs-ink); }
.adm-fin-fila-aparte td { background: var(--cs-bg); color: var(--cs-muted); font-style: italic; }
.adm-fin-estado .bloqueo td { color: var(--cs-warn); }
.adm-fin-estado .disponible td { font-weight: 800; border-top: 2px solid var(--cs-ink); color: var(--cs-ink); }
.adm-fin-estado .disponible.mal td { color: var(--cs-error, #b3261e); }
.adm-fin-estado .detalle { padding-left: 2.8rem; font-size: .8rem; color: var(--cs-muted); }
.adm-fin-seccion { margin: 1rem 0 .3rem; }
.adm-fin-seccion h2 { font-size: 1rem; margin: 0 0 .2rem; color: var(--cs-ink); }
.adm-fin-candidatos { display: grid; gap: .35rem; margin: .4rem 0; }
.adm-fin-candidatos label { display: flex; gap: .5rem; align-items: baseline; padding: .35rem .55rem; border: 1px solid var(--cs-line); border-radius: 8px; font-size: .85rem; cursor: pointer; }
.adm-fin-candidatos label:has(input:checked) { border-color: var(--cs-primary); background: var(--cs-bg); }
