/* ═══════════════════════════════════════════════════════════════════════════
   Conciliar con el libro (.conc-)
   Las pantallas que ponen un documento de la plataforma frente al libro
   contable: facturas ↔ asientos y activos ↔ partidas. Misma forma que
   Conciliar cuentas y expedientes (.rrhh-conc-), generalizada para que las
   dos pantallas —y las que vengan— compartan una sola hoja.
   Depende de pantalla.css (variables --pan-*).
   ═══════════════════════════════════════════════════════════════════════════ */

.conc-como { margin: 4px 0 0; padding-left: 18px; line-height: 1.6; }

/* Filtros del diagnóstico: rango de fechas y opciones, en una franja. */
.conc-filtros {
    display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 16px;
    margin: 0 0 12px;
}
.conc-filtro { display: flex; flex-direction: column; gap: 3px; }
.conc-filtro > label { font-size: 10.5px; letter-spacing: .6px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600; }

/* Cifras del diagnóstico y de la simulación. */
.conc-cifras {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 10px;
    margin-top: 4px;
}
.conc-cifra {
    display: flex; flex-direction: column; gap: 2px;
    padding: 12px 14px;
    border: 1px solid var(--pan-linea);
    border-radius: var(--pan-radio);
    background: #fff;
}
.conc-cifra-alerta { border-color: rgba(211, 47, 20, .35); background: #fff8f6; }
.conc-cifra-bien { border-color: rgba(31, 107, 52, .3); background: #f6fbf7; }
.conc-cifra-rotulo { font-size: 10.5px; letter-spacing: .6px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600; }
.conc-cifra-monto { font-size: 22px; font-weight: 700; color: var(--pan-tinta); line-height: 1.1; font-variant-numeric: tabular-nums; }
.conc-cifra-pie { font-size: 11.5px; color: var(--pan-apagado); }

/* Meses en que el libro no tiene ni un asiento: se enseñan como fichas. */
.conc-hueco { display: inline-block; font-size: 11.5px; font-weight: 600; padding: 1px 8px; border-radius: 999px; background: #fbe9c9; color: #7a5a00; margin: 2px 4px 2px 0; }

/* Un bloque por nivel o tipo de caso. */
.conc-bloque { margin-top: 16px; }
.conc-tipo {
    display: flex; align-items: center; gap: 8px; margin: 0 0 2px;
    font-size: 12.5px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-tinta);
}
.conc-tipo .rzi { color: var(--pan-apagado); font-size: 18px; }
.conc-tipo small { font-weight: 500; text-transform: none; letter-spacing: 0; color: var(--pan-apagado); }
.conc-pista { margin: 0 0 8px; }

/* La tabla de casos: filas altas porque cada celda dice varias cosas. */
.conc-tabla { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.conc-tabla th {
    text-align: left; padding: 6px 10px; font-size: 10.5px; letter-spacing: .6px; text-transform: uppercase;
    color: var(--pan-apagado); border-bottom: 1px solid var(--pan-linea); font-weight: 600;
}
.conc-tabla td { padding: 8px 10px; border-bottom: 1px solid var(--pan-linea); vertical-align: top; }
.conc-tabla tr.conc-marcado td { background: #f4faf5; }
.conc-tabla tr.conc-ambiguo td { background: #fffaf0; }
.conc-tabla tr.conc-apagado td { color: var(--pan-apagado); }
.conc-tabla th.conc-num, .conc-tabla td.conc-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.conc-celda-sel { min-width: 240px; }
.conc-celda-sel .pan-secundario { display: block; margin-top: 2px; }
.conc-celda-sel .pan-principal { display: block; }

/* El documento: lo principal y, debajo, lo que lo ubica. */
.conc-doc { display: flex; flex-direction: column; gap: 1px; min-width: 200px; }
.conc-doc .pan-principal { font-weight: 600; }
.conc-doc .pan-secundario { font-size: 11.5px; }

/* Candidatos: uno por línea, con su radio, y debajo la cuenta de cargo. */
.conc-cands { display: flex; flex-direction: column; gap: 6px; min-width: 300px; }
.conc-cand { display: grid; grid-template-columns: 20px 1fr; gap: 0 6px; align-items: start; cursor: pointer; }
.conc-cand input { margin: 3px 0 0; }
.conc-cand-titulo { font-weight: 600; }
.conc-cand-titulo small { font-weight: 500; color: var(--pan-apagado); }
.conc-cand-detalle { grid-column: 2; font-size: 11.5px; color: var(--pan-apagado); }
.conc-cand-elegido .conc-cand-titulo { color: #1f6b34; }

/* Búsqueda a mano para las facturas sin candidato. */
.conc-buscar { display: flex; gap: 6px; align-items: center; margin-top: 4px; }
.conc-buscar .rz-textbox { min-width: 180px; }

/* Motivo y confianza. */
.conc-motivo { max-width: 360px; }
.conc-motivo > span { display: block; }
.conc-nota { font-size: 11.5px; color: #7a5a00; margin-top: 2px; }
.conc-conf {
    display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: .5px;
    padding: 1px 6px; border-radius: 999px; margin-bottom: 3px;
}
.conc-conf-3 { background: #e4f3e6; color: #1f6b34; }
.conc-conf-2 { background: #e8effa; color: #2b4f87; }
.conc-conf-1 { background: #fbe9c9; color: #7a5a00; }
.conc-conf-0 { background: #eeeeee; color: #555; }

/* Partida del libro, en dos líneas: memo y cuenta · entidad · monto. */
.conc-partida { display: flex; flex-direction: column; gap: 1px; }
.conc-partida .pan-principal { font-weight: 600; }
.conc-partida .pan-secundario { font-size: 11.5px; }
.conc-partida-libre { font-size: 11px; color: #1f6b34; }

/* Resultado de la simulación / aplicación. */
.conc-resultado { margin-top: 12px; }
.conc-resultado h6 { margin: 0 0 4px; font-size: 11px; letter-spacing: .6px; text-transform: uppercase; color: #666; font-weight: 600; }
.conc-resultado-mal h6 { color: var(--pan-rojo); }
.conc-lista { margin: 0; padding-left: 18px; font-size: 12.5px; line-height: 1.55; }

/* Resumen por categoría: tabla compacta, sin filas altas. */
.conc-tabla-compacta td, .conc-tabla-compacta th { padding: 5px 10px; }
.conc-barra { display: inline-block; height: 6px; border-radius: 3px; background: #2b4f87; vertical-align: middle; margin-right: 6px; }

/* El bloque «En el libro» dentro de la ficha de factura y de activo. */
.conc-ficha { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--pan-linea); border-radius: var(--pan-radio); background: #fafafa; }
.conc-ficha-cab { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.conc-ficha-cab h4 { margin: 0; font-size: 11px; letter-spacing: .6px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600; flex: 1; }
.conc-ficha table { width: 100%; border-collapse: collapse; font-size: 12px; }
.conc-ficha td { padding: 3px 6px; border-bottom: 1px dashed var(--pan-linea); vertical-align: top; }
.conc-ficha tr:last-child td { border-bottom: 0; }
.conc-ficha td.conc-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.conc-ficha .conc-cargo td { font-weight: 600; }

/* ── Reparto por partida (activos ↔ libro) ── */

/* Anchos fijos por columna: con el memo largo y un desplegable en la fila, una
   tabla automática dejaba las últimas columnas de tres letras de ancho y las
   filas de veinte líneas. */
.conc-tabla-fija { table-layout: fixed; }
.conc-tabla-fija td { overflow-wrap: anywhere; }
.conc-tabla-fija .rz-dropdown, .conc-tabla-fija .rz-numeric { max-width: 100%; }

.conc-bloque-sec { display: block; margin-top: 1px; }
.conc-chip-sitio {
    display: inline-block; margin-top: 3px; padding: 1px 7px; border-radius: 999px;
    font-size: 10.5px; font-weight: 600; letter-spacing: .3px;
    background: #eef3f8; color: var(--pan-apagado);
}

.conc-resumen-lista {
    display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
    margin: 2px 0 8px; font-size: 12.5px; color: var(--pan-apagado);
}
.conc-paginacion { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--pan-apagado); font-variant-numeric: tabular-nums; white-space: nowrap; }

.conc-acciones-activo { display: flex; flex-direction: column; gap: 6px; }
.conc-descripcion { font-style: italic; }

/* La cabecera del panel: el memo grande y las cuatro cifras a la derecha. */
.conc-panel-memo {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; flex-wrap: wrap;
    padding: 12px 14px; margin-bottom: 12px;
    border: 1px solid var(--pan-linea); border-radius: var(--pan-radio); background: #fafbfd;
}
.conc-panel-memo-texto { flex: 1 1 320px; font-size: 14px; font-weight: 600; color: var(--pan-tinta); line-height: 1.4; }
/* La factura enlazada al asiento: bajo el memo, con su documento, descripción y productos. */
.conc-factura { display: block; margin-top: 3px; font-size: 11.5px; color: var(--pan-azul); }
.conc-factura .rzi { font-size: 13px; vertical-align: -2px; }
.conc-panel-factura {
    display: flex; flex-direction: column; gap: 2px; margin-top: 8px; padding-top: 8px;
    border-top: 1px dashed var(--pan-linea); font-size: 12.5px; font-weight: 500; color: var(--pan-tinta); line-height: 1.4;
}
.conc-panel-factura-doc { font-size: 11.5px; font-weight: 600; color: var(--pan-azul); }
.conc-panel-factura-doc .rzi { font-size: 14px; vertical-align: -3px; }
.conc-panel-cifras { display: flex; gap: 18px; flex-wrap: wrap; }
.conc-panel-cifras > span { display: flex; flex-direction: column; font-size: 14px; font-weight: 700; color: var(--pan-tinta); font-variant-numeric: tabular-nums; }
.conc-panel-cifras > span > small { font-size: 10.5px; font-weight: 600; letter-spacing: .6px; text-transform: uppercase; color: var(--pan-apagado); }
.conc-panel-cifras > span.conc-panel-excede { color: var(--pan-rojo); }

/* Cuánto del memo explica el activo, como barra corta bajo la etiqueta. */
.conc-cobertura { display: block; width: 90px; height: 4px; margin: 3px 0 4px; border-radius: 2px; background: #e6ecf2; overflow: hidden; }
.conc-cobertura > i { display: block; height: 100%; background: var(--pan-azul); border-radius: 2px; }

/* Resultados de la búsqueda y vínculos ya aplicados: una línea por activo. */
.conc-encontrados { display: flex; flex-direction: column; gap: 4px; }
.conc-encontrado {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 6px 10px; border: 1px solid var(--pan-linea); border-radius: 8px; background: #fff;
}
/* Un pago relacionado incluido en el reparto: mismo verde tenue que una fila marcada. */
.conc-encontrado.conc-marcado { background: #f4faf5; border-color: #cfe8d6; }

.conc-panel-pie { align-items: center; }
.conc-panel-pie-texto { flex: 1 1 auto; margin: 0; text-align: left; }

/* ── Corregir fechas del libro ── */

/* Botones de elección (año, veredicto) en una fila que se parte. */
.conc-selector { display: inline-flex; gap: 4px; flex-wrap: wrap; }

/* La fecha como está, tachada, y la corregida. */
.conc-fecha { display: block; white-space: nowrap; font-variant-numeric: tabular-nums; }
.conc-fecha-antes { color: var(--pan-apagado); text-decoration: line-through; text-decoration-color: rgba(211, 47, 20, .45); }
.conc-fecha-flecha { color: var(--pan-apagado); margin: 0 4px; }
.conc-fecha-despues { font-weight: 700; color: #1f6b34; }

/* Cada prueba como ficha: verde a favor de corregir, roja en contra; las débiles, con borde punteado. */
.conc-pruebas { display: flex; flex-wrap: wrap; gap: 4px; margin: 4px 0 2px; }
.conc-prueba {
    display: inline-block; font-size: 10.5px; font-weight: 600; letter-spacing: .2px;
    padding: 1px 7px; border-radius: 999px; border: 1px solid transparent; cursor: help;
}
.conc-prueba-si { background: #e4f3e6; color: #1f6b34; border-color: #cfe8d6; }
.conc-prueba-no { background: #fdecea; color: #a3261a; border-color: #f5c9c3; }
.conc-prueba-debil { background: #fff; border-style: dashed; font-weight: 500; }

.conc-barra-no { background: var(--pan-rojo); }

/* Asientos por mes: dos barras por mes, como están y con la corrección. */
.conc-meses {
    display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 6px; align-items: end;
    margin-top: 8px; padding: 10px 12px 8px; border: 1px solid var(--pan-linea); border-radius: var(--pan-radio); background: #fff;
}
.conc-mes { display: flex; flex-direction: column; align-items: center; gap: 4px; cursor: default; }
.conc-mes-barras { display: flex; align-items: flex-end; justify-content: center; gap: 3px; height: 96px; }
.conc-mes-barras > span { display: block; width: 12px; border-radius: 3px 3px 0 0; transition: height .3s ease; }
.conc-mes-hoy { background: #c9d3dd; }
.conc-mes-bien { background: var(--pan-azul); }
.conc-mes-rotulo { font-size: 10.5px; letter-spacing: .4px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600; }
.conc-mes-leyenda { display: flex; gap: 16px; align-items: center; font-size: 11.5px; color: var(--pan-apagado); margin-top: 6px; }
.conc-mes-leyenda i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: -1px; }

/* ── Conciliar energía con el libro ── */

.conc-conclusion { margin: 0 0 12px; align-items: flex-start; }
.conc-conclusion > span { line-height: 1.5; }
.conc-oracion { display: block; }
.conc-oracion + .conc-oracion { margin-top: 2px; }
.conc-como-caja > summary { cursor: pointer; color: var(--pan-apagado); }
.conc-como-caja > summary b { color: var(--pan-tinta); }
.conc-como-caja[open] > summary { margin-bottom: 2px; }

/* Mes por mes: venta por contrato y lo que costó cumplir; lo estimado, rayado. */
.conc-mes-venta { background: var(--pan-azul); }
.conc-mes-costo { background: var(--pan-ambar); }
.conc-mes-estimado { opacity: .6; background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, .65) 0 2px, transparent 2px 5px); }
.conc-punto { display: block; width: 6px; height: 6px; border-radius: 50%; }
.conc-punto-bien { background: var(--pan-verde); }
.conc-punto-mal { background: var(--pan-rojo); }
.conc-punto-vacio { background: transparent; box-shadow: inset 0 0 0 1px var(--pan-tenue); }
.conc-mes-leyenda i.conc-punto { width: 7px; height: 7px; border-radius: 50%; }

/* Tablas de doce meses: la fila se despliega con su detalle. */
.conc-fila-mes { cursor: pointer; }
.conc-fila-mes:hover td { background: #f7f9fc; }
.conc-fila-abierta td { background: #f2f6fb; border-bottom-color: transparent; }
.conc-tabla-meses td .pan-principal, .conc-tabla-meses td .pan-secundario { display: block; }
.conc-mes-nombre { display: inline-flex; align-items: center; gap: 2px; font-weight: 600; color: var(--pan-tinta); }
.conc-mes-nombre .rzi { font-size: 16px; color: var(--pan-apagado); }
.conc-tabla tfoot td { font-weight: 700; border-top: 2px solid var(--pan-linea); border-bottom: 0; padding: 8px 10px; font-variant-numeric: tabular-nums; }
.conc-tabla tfoot td.conc-num { text-align: right; white-space: nowrap; }

.conc-detalle > td { background: #fafbfd; padding: 10px 14px 14px; }
.conc-detalle-cuerpo { display: flex; flex-direction: column; gap: 2px; }
.conc-detalle-titulo { margin: 8px 0 4px; font-size: 10.5px; letter-spacing: .6px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600; }
.conc-detalle-contador { margin: 0 0 6px; font-size: 12px; color: var(--pan-tinta); line-height: 1.5; }
.conc-subtabla { width: 100%; border-collapse: collapse; font-size: 12px; background: #fff; border: 1px solid var(--pan-linea); border-radius: 8px; }
.conc-subtabla th { text-align: left; padding: 5px 8px; font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600; border-bottom: 1px solid var(--pan-linea); }
.conc-subtabla td { padding: 5px 8px; border-bottom: 1px dashed var(--pan-linea); vertical-align: top; }
.conc-subtabla tr:last-child td { border-bottom: 0; }
.conc-subtabla th.conc-num, .conc-subtabla td.conc-num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.conc-subtabla td .pan-secundario, .conc-subtabla td .pan-principal, .conc-subtabla td .conc-nota { display: block; }
.conc-subtabla tr.conc-ambiguo td { background: #fffaf0; }

/* El estado de un mes: verde cuadra, azul provisionado, ámbar revisar, rojo difiere, gris sin libro. */
.conc-estado {
    display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: .5px; white-space: nowrap;
    padding: 1px 7px; border-radius: 999px; background: #eef1f4; color: var(--pan-apagado); border: 1px solid transparent;
}
.conc-estado-bien { background: #e4f3e6; color: #1f6b34; }
.conc-estado-info { background: #e8effa; color: #2b4f87; }
.conc-estado-revisar { background: #fbe9c9; color: #7a5a00; }
.conc-estado-mal { background: #fdecea; color: #a3261a; }
.conc-estado-hueco { background: #fff; border-style: dashed; border-color: var(--pan-tenue); }

.conc-papel-compra { background: #fdf0e9; color: #9a4a17; }
.conc-papel-venta { background: #e8f3ec; color: #1f6b34; }

.conc-lista-avisos { margin: 0 0 8px; }
.conc-lista-avisos li { color: #7a5a00; }

@media (max-width: 600px) {
    .conc-mes-barras { height: 72px; gap: 2px; }
    .conc-mes-barras > span { width: 6px; }
}

@media (max-width: 900px) {
    .conc-tabla, .conc-tabla thead, .conc-tabla tbody, .conc-tabla tr, .conc-tabla td { display: block; }
    .conc-tabla thead { display: none; }
    .conc-tabla tr { border-bottom: 2px solid var(--pan-linea); padding: 6px 0; }
    .conc-tabla tfoot { display: block; }
    .conc-tabla-meses tr.conc-fila-mes { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 14px; padding: 8px 0; }
    .conc-tabla-meses tr.conc-fila-mes > td:first-child, .conc-tabla-meses tr.conc-fila-mes > td:last-child { grid-column: 1 / -1; }
    .conc-tabla-meses td[data-rotulo]::before {
        content: attr(data-rotulo); display: block; margin-bottom: 1px;
        font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600;
    }
    .conc-subtabla, .conc-subtabla tbody, .conc-subtabla tr, .conc-subtabla td { display: block; }
    .conc-subtabla thead { display: none; }
    .conc-subtabla td.conc-num { text-align: left; }
    .conc-tabla td { border-bottom: 0; padding: 4px 8px; }
    .conc-tabla td.conc-num { text-align: left; }
    .conc-celda-sel, .conc-cands { min-width: 0; }
    .conc-tabla-fija { table-layout: auto; }
    .conc-tabla-fija colgroup { display: none; }
    .conc-panel-pie { flex-wrap: wrap; }
}

@media print { .conc-tabla .rz-dropdown { border: 0; } .conc-buscar { display: none; } }

/* ── Activo fijo mayor ── */

/* Cuánto del costo ya se depreció: una barra fina que se lee de un vistazo. */
.conc-avance { display: inline-block; width: 70px; height: 5px; margin-right: 6px; border-radius: 3px; background: #e6ecf2; overflow: hidden; vertical-align: middle; }
.conc-avance > i { display: block; height: 100%; background: var(--pan-ambar); border-radius: 3px; }
.conc-tabla-meses td .conc-avance + .pan-secundario { display: inline; }

/* Las sugerencias de una cuenta o compra sin bien: una por renglón, con su botón. */
.conc-cands .conc-motivo > span:first-child { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.conc-cands .conc-motivo .conc-conf { margin-right: 2px; }

@media (max-width: 900px) {
    /* En el teléfono, las subtablas del detalle dicen qué es cada cifra. */
    .conc-subtabla-rotulada tr { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 12px; padding: 6px 0; border-bottom: 1px dashed var(--pan-linea); }
    .conc-subtabla-rotulada tr:last-child { border-bottom: 0; }
    .conc-subtabla-rotulada td { border-bottom: 0; padding: 2px 8px; }
    .conc-subtabla-rotulada td:first-child, .conc-subtabla-rotulada td:last-child { grid-column: 1 / -1; }
    .conc-subtabla-rotulada td[data-rotulo]::before {
        content: attr(data-rotulo); display: block; margin-bottom: 1px;
        font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600;
    }
}

/* ── Nómina: persona × quincena ── */

/* La rejilla: una fila por persona y, por mes, dos cuadros (1ra y 2da quincena).
   En el teléfono se desliza de lado dentro de su marco; el nombre queda fijo. */
.conc-rejilla-marco { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--pan-linea); border-radius: var(--pan-radio); background: #fff; }
.conc-rejilla { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12px; }
.conc-rejilla th {
    padding: 6px 3px; font-size: 10px; letter-spacing: .5px; text-transform: uppercase; font-weight: 600;
    color: var(--pan-apagado); text-align: center; border-bottom: 1px solid var(--pan-linea); background: #fff;
}
.conc-rejilla td { padding: 5px 3px; border-bottom: 1px solid var(--pan-linea); vertical-align: middle; }
.conc-rejilla th.conc-num, .conc-rejilla td.conc-num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; padding-right: 10px; }
.conc-rejilla .conc-rejilla-nombre {
    position: sticky; left: 0; z-index: 1; background: #fff; text-align: left;
    min-width: 200px; max-width: 280px; padding-left: 10px;
}
.conc-rejilla td.conc-rejilla-nombre .pan-principal { display: block; font-weight: 600; color: var(--pan-tinta); }
.conc-rejilla td.conc-rejilla-nombre .pan-secundario { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 11px; }
.conc-rejilla-fila { cursor: pointer; }
.conc-rejilla-fila:hover td, .conc-rejilla-fila:hover .conc-rejilla-nombre { background: #f7f9fc; }
.conc-rejilla-abierta td, .conc-rejilla-abierta .conc-rejilla-nombre { background: #f2f6fb; border-bottom-color: transparent; }
/* El detalle de una persona se lee sin deslizar: se queda pegado a la izquierda, del ancho de la pantalla. */
.conc-rejilla tr.conc-detalle .conc-detalle-cuerpo { position: sticky; left: 10px; max-width: calc(100vw - 56px); }
.conc-rejilla-mes { display: flex; gap: 2px; justify-content: center; }

/* Cada quincena: verde cuadra, azul retenciones, ámbar otro devengado, punteado lo
   que falta en un lado, rojo lo que está dos veces. Vacío: nadie cobró. */
.conc-q { display: block; width: 10px; height: 16px; border-radius: 3px; background: #f1f4f7; border: 1px solid transparent; box-sizing: border-box; }
.conc-q-bien { background: #a9d9b7; }
.conc-q-info { background: #b9cdef; }
.conc-q-revisar { background: #efc27a; }
.conc-q-libro { background: #fff7ea; border: 1px dashed var(--pan-ambar); }
.conc-q-plataforma { background: #fff; border: 1px dashed var(--pan-tenue); }
.conc-q-mal { background: #e0735c; }
.conc-rejilla-leyenda { flex-wrap: wrap; gap: 6px 16px; }
.conc-rejilla-leyenda i.conc-q { border-radius: 2px; }

@media (max-width: 600px) {
    .conc-rejilla .conc-rejilla-nombre { min-width: 150px; max-width: 170px; }
    .conc-q { width: 8px; height: 14px; }
}

@media print {
    .conc-rejilla-marco { overflow: visible; border: 0; }
    .conc-rejilla .conc-rejilla-nombre { position: static; }
}

/* ── Vales de combustible ↔ facturas ── */

/* Filas con varias cosas por celda: el documento arriba, lo que lo ubica debajo. */
.conc-tabla-vales td .conc-doc { min-width: 0; }
.conc-tabla-vales td.conc-num .pan-principal, .conc-tabla-vales td.conc-num .pan-secundario { display: block; }
.conc-tabla-vales td.conc-motivo > span { display: block; }
.conc-tabla-vales td.conc-motivo > span.conc-conf, .conc-tabla-vales td.conc-motivo > span.conc-estado { display: inline-block; }
.conc-tabla-vales td.conc-motivo .conc-conf, .conc-tabla-vales td.conc-motivo .conc-estado { margin-right: 4px; }
.conc-tabla-vales .conc-descripcion { display: block; max-width: 420px; }
.conc-tabla-vales input[type="checkbox"] { width: 16px; height: 16px; margin-top: 2px; cursor: pointer; }
details.conc-bloque > summary { cursor: pointer; list-style: none; }
details.conc-bloque > summary::-webkit-details-marker { display: none; }
/* El chevron del bloque plegable, dibujado: no depende de que cargue la fuente de iconos. */
details.conc-bloque > summary::after {
    content: ""; width: 7px; height: 7px; margin: 0 6px 0 auto;
    border-right: 2px solid var(--pan-apagado); border-bottom: 2px solid var(--pan-apagado);
    transform: rotate(45deg); transition: transform .15s ease;
}
details.conc-bloque[open] > summary::after { transform: rotate(-135deg); }

@media (max-width: 900px) {
    .conc-tabla-vales tr { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 14px; padding: 8px 0; }
    .conc-tabla-vales td { padding: 2px 8px; }
    .conc-tabla-vales td:first-child { grid-column: 1 / -1; }
    .conc-tabla-vales td[data-rotulo="Factura"], .conc-tabla-vales td[data-rotulo="Por qué"],
    .conc-tabla-vales td[data-rotulo="Descripción"], .conc-tabla-vales td[data-rotulo="Qué pasa"],
    .conc-tabla-vales td[data-rotulo="Vale"].conc-celda-sel, .conc-tabla-vales td[data-rotulo="Entidad y memo"] { grid-column: 1 / -1; }
    .conc-tabla-vales td[data-rotulo]:not([data-rotulo=""])::before {
        content: attr(data-rotulo); display: block; margin-bottom: 1px;
        font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600;
    }
    .conc-tabla-vales .conc-descripcion { max-width: none; }
}

/* ── Bodega: compra ↔ factura ↔ requerimiento ── */

/* Las mismas filas de varias líneas que los vales: el documento arriba, lo que lo ubica debajo. */
.conc-tabla-bodega td .conc-doc { min-width: 0; }
.conc-tabla-bodega td.conc-num .pan-principal, .conc-tabla-bodega td.conc-num .pan-secundario { display: block; }
.conc-tabla-bodega td .pan-secundario { display: block; }
.conc-tabla-bodega td.conc-motivo > span { display: block; }
.conc-tabla-bodega td.conc-motivo > span.conc-conf, .conc-tabla-bodega td.conc-motivo > span.conc-estado { display: inline-block; }
.conc-tabla-bodega td.conc-motivo .conc-conf, .conc-tabla-bodega td.conc-motivo .conc-estado { margin-right: 4px; }
.conc-tabla-bodega span.conc-estado, .conc-tabla-compacta span.conc-estado { display: inline-block; }
.conc-tabla-bodega .conc-descripcion { display: block; max-width: 420px; }
.conc-tabla-bodega input[type="checkbox"] { width: 16px; height: 16px; margin-top: 2px; cursor: pointer; }

@media (max-width: 900px) {
    .conc-tabla-bodega tr { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 14px; padding: 8px 0; }
    .conc-tabla-bodega td { padding: 2px 8px; }
    .conc-tabla-bodega td:first-child { grid-column: 1 / -1; }
    .conc-tabla-bodega td[data-rotulo="Qué entró"], .conc-tabla-bodega td[data-rotulo="Requerimiento"],
    .conc-tabla-bodega td[data-rotulo="Factura"], .conc-tabla-bodega td[data-rotulo="Facturas"],
    .conc-tabla-bodega td[data-rotulo="Por qué"], .conc-tabla-bodega td[data-rotulo="Qué pasa"],
    .conc-tabla-bodega td[data-rotulo="Qué falta"], .conc-tabla-bodega td[data-rotulo="Entidad y memo"],
    .conc-tabla-bodega td[data-rotulo="En la bodega"], .conc-tabla-bodega td[data-rotulo="Rubro que hereda"] { grid-column: 1 / -1; }
    .conc-tabla-bodega td[data-rotulo]:not([data-rotulo=""])::before {
        content: attr(data-rotulo); display: block; margin-bottom: 1px;
        font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600;
    }
    .conc-tabla-bodega .conc-descripcion { max-width: none; }
}

/* ── SAT: la autorización FEL, sus testigos y los DTE recibidos ── */

/* La autorización en letra de máquina, con lo que cambia en rojo. */
.conc-uuid { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.5px; letter-spacing: .2px; word-break: break-all; }
.conc-uuid b.conc-dif { background: #fdecea; color: #a3261a; border-radius: 2px; font-weight: 700; }
b.conc-cambia { color: #1f6b34; }
.conc-enlace { display: inline-block; font-size: 10.5px; font-weight: 700; letter-spacing: .4px; margin: 2px 10px 0 0; color: var(--pan-azul); text-decoration: none; }
.conc-enlace:hover { text-decoration: underline; }
.conc-testigo { display: block; font-size: 11px; line-height: 1.45; }
.conc-testigo b { font-weight: 600; }
.conc-tabla-sat .conc-prueba-debil { border-color: var(--pan-tenue); color: var(--pan-apagado); }
.conc-tabla-sat td[data-rotulo="Registrada"] .conc-uuid, .conc-tabla-sat td[data-rotulo="Quedaría"] .conc-uuid { white-space: nowrap; }

.conc-tabla-sat td .conc-doc { min-width: 0; }
.conc-tabla-sat td .pan-secundario { display: block; }
.conc-tabla-sat td.conc-num .pan-principal, .conc-tabla-sat td.conc-num .pan-secundario { display: block; }
.conc-tabla-sat td.conc-motivo { max-width: 420px; }
.conc-tabla-sat td.conc-motivo > span { display: block; }
.conc-tabla-sat td.conc-motivo > span.conc-conf, .conc-tabla-sat td.conc-motivo > span.conc-estado { display: inline-block; }
.conc-tabla-sat td.conc-motivo .conc-conf, .conc-tabla-sat td.conc-motivo .conc-estado { margin-right: 4px; }
.conc-tabla-sat td span.conc-estado { display: inline-block; }
.conc-tabla-sat input[type="checkbox"] { width: 16px; height: 16px; margin-top: 2px; cursor: pointer; }

@media (max-width: 900px) {
    .conc-tabla-sat tr { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 14px; padding: 8px 0; }
    .conc-tabla-sat td { padding: 2px 8px; }
    .conc-tabla-sat td:first-child { grid-column: 1 / -1; }
    .conc-tabla-sat td[data-rotulo="Registrada"], .conc-tabla-sat td[data-rotulo="Quedaría"],
    .conc-tabla-sat td[data-rotulo="Por qué"], .conc-tabla-sat td[data-rotulo="Qué pasa"],
    .conc-tabla-sat td[data-rotulo="La SAT"], .conc-tabla-sat td[data-rotulo="Documento"],
    .conc-tabla-sat td[data-rotulo="Dónde están"], .conc-tabla-sat td[data-rotulo="Emisor"] { grid-column: 1 / -1; }
    .conc-tabla-sat td[data-rotulo]:not([data-rotulo=""])::before {
        content: attr(data-rotulo); display: block; margin-bottom: 1px;
        font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600;
    }
    .conc-tabla-sat td.conc-motivo { max-width: none; }
    .conc-tabla-sat td[data-rotulo="Registrada"] .conc-uuid, .conc-tabla-sat td[data-rotulo="Quedaría"] .conc-uuid { white-space: normal; }
}

/* ── Presupuesto contra el libro ── */

/* Las filas de línea, de cuenta y de nómina: lo principal arriba, lo que lo explica debajo. */
.conc-tabla-presupuesto td .conc-doc { min-width: 0; }
.conc-tabla-presupuesto td .pan-secundario { display: block; }
.conc-tabla-presupuesto td.conc-num .pan-principal, .conc-tabla-presupuesto td.conc-num .pan-secundario { display: block; }
.conc-tabla-presupuesto td.conc-motivo { max-width: 460px; }
.conc-tabla-presupuesto td.conc-motivo > span { display: block; }
.conc-tabla-presupuesto td.conc-motivo > span.conc-conf, .conc-tabla-presupuesto td.conc-motivo > span.conc-estado { display: inline-block; margin-right: 4px; }
.conc-tabla-presupuesto input[type="checkbox"] { width: 16px; height: 16px; margin-top: 2px; cursor: pointer; }
.conc-tabla-presupuesto .conc-celda-sel { min-width: 210px; }
.conc-tabla-presupuesto .conc-celda-sel .rz-button { margin-top: 4px; }
.conc-tabla-presupuesto tr.conc-apagado td .pan-principal { color: var(--pan-apagado); }

/* Lo que sumarían las propuestas, y lo que cambia con lo marcado. */
.conc-propuesto { color: #1f6b34 !important; }
span.conc-cambia { color: #1f6b34; font-weight: 600; }
.conc-evidencia { margin-top: 2px; font-style: italic; }

/* El libro contra el presupuesto: dos barras sobre la misma escala. */
.conc-comparar { display: flex; flex-direction: column; gap: 3px; min-width: 150px; max-width: 260px; }
.conc-comparar-fila { display: flex; height: 7px; border-radius: 4px; background: #eef1f4; overflow: hidden; }
.conc-comparar-pres { display: block; height: 100%; background: #b9c3cf; border-radius: 4px; }
.conc-comparar-libro { display: block; height: 100%; background: var(--pan-azul); }
.conc-comparar-propuesto { display: block; height: 100%; background: #7fb48f; background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, .55) 0 2px, transparent 2px 5px); }
.conc-comparar-pie { font-size: 10.5px; color: var(--pan-apagado); font-variant-numeric: tabular-nums; }

/* Las cuentas que más pesan en una línea, como fichas. */
.conc-parte { display: inline-block; margin: 0 12px 4px 0; font-size: 12px; }
.conc-parte b { font-variant-numeric: tabular-nums; }
.conc-parte-mas { color: var(--pan-azul); cursor: pointer; font-weight: 600; }
.conc-parte-mas:hover { text-decoration: underline; }

/* Doce meses en una rejilla que se desliza sola si no cabe. */
.conc-doce-marco { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.conc-doce { min-width: 720px; }
.conc-doce td:first-child { font-weight: 600; white-space: nowrap; }

@media (max-width: 900px) {
    .conc-tabla-presupuesto tr { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 14px; padding: 8px 0; }
    .conc-tabla-presupuesto td { padding: 2px 8px; }
    .conc-tabla-presupuesto td:first-child { grid-column: 1 / -1; }
    .conc-tabla-presupuesto td[data-rotulo="Línea"], .conc-tabla-presupuesto td[data-rotulo="Cuenta"],
    .conc-tabla-presupuesto td[data-rotulo="Por qué"], .conc-tabla-presupuesto td[data-rotulo="Nómina"],
    .conc-tabla-presupuesto td[data-rotulo="El rubro que la lleva"], .conc-tabla-presupuesto td[data-rotulo="Asignar a"],
    .conc-tabla-presupuesto td[data-rotulo="El libro contra el presupuesto"] { grid-column: 1 / -1; }
    .conc-tabla-presupuesto td[data-rotulo]:not([data-rotulo=""])::before {
        content: attr(data-rotulo); display: block; margin-bottom: 1px;
        font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600;
    }
    .conc-tabla-presupuesto tr.conc-detalle { display: block; }
    .conc-tabla-presupuesto td.conc-motivo { max-width: none; }
    .conc-tabla-presupuesto .conc-celda-sel { min-width: 0; }
    .conc-comparar { max-width: none; }
    /* La rejilla de doce meses sigue siendo tabla: se desliza en vez de apilarse. */
    .conc-tabla-presupuesto table.conc-doce { display: table; }
    .conc-tabla-presupuesto .conc-doce thead { display: table-header-group; }
    .conc-tabla-presupuesto .conc-doce tbody { display: table-row-group; }
    .conc-tabla-presupuesto .conc-doce tr { display: table-row; padding: 0; border-bottom: 0; }
    .conc-tabla-presupuesto .conc-doce td, .conc-tabla-presupuesto .conc-doce th { display: table-cell; padding: 5px 8px; }
    .conc-tabla-presupuesto .conc-doce td.conc-num { text-align: right; }
}

@media print { .conc-tabla-presupuesto .rz-dropdown, .conc-tabla-presupuesto .rz-button { display: none; } }

/* ── Activos ↔ libro: lo que se lee del memo y las señas de cada sugerencia ── */
/* Bajo el memo del panel: qué cosa compró, cuántas piezas, adónde fue. */
.conc-lectura { display: block; margin-top: 6px; font-size: 11.5px; font-weight: 500; color: var(--pan-apagado); line-height: 1.45; }
/* Lo que coincide entre el memo y el activo: tipo, marca, modelo, medida, piezas, sitio… */
.conc-senales { display: flex; flex-wrap: wrap; gap: 3px; margin: 1px 0 3px; }
.conc-senal {
    display: inline-block; padding: 0 6px; border-radius: 999px;
    font-size: 10px; font-weight: 600; letter-spacing: .3px; line-height: 16px;
    background: #eef6ef; color: #1f6b34; border: 1px solid #d3e8d6;
}
/* Lo que conviene revisar antes de marcar: un servicio, un pago parcial, piezas de más. */
.conc-aviso-sug { display: block; margin-top: 2px; font-size: 11px; color: #7a5a00; }
.conc-aviso-sug::before { content: "⚠ "; }
/* En el panel, el grado va como etiqueta corta junto a su barra, no a lo ancho de la celda. */
.conc-tabla-activos td.conc-motivo > span.conc-conf { display: inline-block; margin-right: 4px; }

/* ── Conciliar terceros: los nombres del libro y sus fichas ── */

/* La clase del tercero, como etiqueta: proveedor, cliente, colaborador, agente, otro.
   La que sale de sus cuentas —nadie la ha decidido— va con el borde punteado. */
.conc-clase {
    display: inline-block; padding: 1px 8px; border-radius: 999px; border: 1px solid transparent;
    font-size: 10px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; white-space: nowrap;
}
.conc-clase-proveedor { background: #e8effa; color: #2b4f87; }
.conc-clase-cliente { background: #e8f3ec; color: #1f6b34; }
.conc-clase-colaborador { background: #f1ecf8; color: #5b3a86; }
.conc-clase-agente { background: #fdf0e9; color: #9a4a17; }
.conc-clase-otro { background: #eeeeee; color: #555; }
.conc-clase-inferida { background: #fff; border-style: dashed; border-color: currentColor; }
.conc-tabla-terceros .conc-clase { max-width: 100%; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; }

/* Por clase, bajo las cifras: cada etiqueta filtra la lista de nombres. */
.conc-clases { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 2px 0 0; }
.conc-clases-rotulo { font-size: 10.5px; letter-spacing: .6px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600; margin-right: 4px; }
.conc-clase-boton { cursor: pointer; font-family: inherit; line-height: 18px; transition: box-shadow .15s ease, transform .15s ease; }
.conc-clase-boton:hover { box-shadow: 0 1px 4px rgba(0, 0, 0, .12); transform: translateY(-1px); }
.conc-clase-activa { box-shadow: 0 0 0 2px currentColor inset; }

/* La casilla va junto al nombre, no en una columna aparte: igual en el teléfono. */
.conc-casilla-fila { display: flex; align-items: flex-start; gap: 8px; min-width: 0; }
.conc-casilla-fila > input[type="checkbox"] { width: 16px; height: 16px; margin: 2px 0 0; flex: 0 0 auto; cursor: pointer; }
.conc-casilla-fila .conc-doc { min-width: 0; }
/* Sin casilla (ya decidido, o nada que tomar): el hueco mantiene los nombres alineados. */
.conc-casilla-hueco { flex: 0 0 16px; width: 16px; }

/* Las fichas de un nombre: la decidida y las que podría ser, una por renglón. */
.conc-ficha-linea { display: block; margin-bottom: 4px; }
.conc-ficha-linea:last-child { margin-bottom: 0; }
.conc-ficha-linea .conc-conf { margin: 0 4px 0 0; }
.conc-ficha-tipo { font-size: 10px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: var(--pan-apagado); margin-right: 2px; }

/* El NIT en cifras parejas; el que no sirve, en rojo; el de la SAT, en azul debajo. */
.conc-nit { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; color: var(--pan-tinta); }
.conc-nit-mal { color: #a3261a; }
.conc-nit-sat { display: block; margin-top: 2px; font-size: 11.5px; color: #2b4f87; }
.conc-nit-sat b { font-variant-numeric: tabular-nums; }

/* Las filas de nombres, del padrón, del catálogo y del lote. */
.conc-tabla-terceros td .conc-doc { min-width: 0; }
.conc-tabla-terceros td.conc-motivo { max-width: none; }
.conc-tabla-terceros td.conc-motivo > span.conc-conf, .conc-tabla-terceros td.conc-motivo > span.conc-estado { display: inline-block; margin-right: 4px; }
.conc-tabla-terceros td.conc-num .pan-principal { display: block; }
.conc-acciones-tercero { flex-direction: column; align-items: stretch; gap: 4px; }

/* El panel de un nombre. */
.conc-formas { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-left: 6px; vertical-align: middle; }
.conc-forma {
    display: inline-block; padding: 0 7px; border-radius: 4px; border: 1px solid var(--pan-linea);
    background: #f5f7fa; font-size: 11px; color: var(--pan-tinta); line-height: 18px;
}
.conc-decidido {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    padding: 10px 12px; margin: 0 0 12px;
    border: 1px solid #cfe8d6; border-radius: var(--pan-radio); background: #f6fbf7;
}
.conc-decidido .conc-estado { margin-right: 4px; vertical-align: 1px; }
.conc-ficha-opcion { cursor: pointer; justify-content: flex-start; align-items: flex-start; }
.conc-ficha-opcion > input[type="checkbox"] { width: 16px; height: 16px; margin: 2px 0 0; flex: 0 0 auto; cursor: pointer; }
.conc-ficha-opcion .pan-principal .conc-conf, .conc-ficha-opcion .pan-principal .conc-estado { margin: 0 6px 0 0; }
.conc-buscar-texto { min-width: 320px; flex: 1 1 320px; box-sizing: border-box; }
.conc-decidir-rejilla {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 22px;
    margin-top: 18px; padding-top: 14px; border-top: 1px dashed var(--pan-linea);
}
.conc-decidir-campo { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.conc-decidir-campo > label:first-child { font-size: 10.5px; letter-spacing: .6px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600; }
.conc-decidir-campo input.rz-textbox { width: 100%; box-sizing: border-box; }
.conc-decidir-campo .conc-casilla-fila > span { font-size: 12.5px; color: var(--pan-tinta); }

@media (max-width: 900px) {
    .conc-tabla-terceros tr { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 14px; padding: 8px 0; }
    .conc-tabla-terceros td { padding: 2px 8px; }
    .conc-tabla-terceros td[data-rotulo="Nombre del libro"], .conc-tabla-terceros td[data-rotulo="Ficha"],
    .conc-tabla-terceros td[data-rotulo="Proveedor"], .conc-tabla-terceros td[data-rotulo="Qué le pasa"],
    .conc-tabla-terceros td[data-rotulo="Lo que dice su nombre"], .conc-tabla-terceros td[data-rotulo="Queda"] { grid-column: 1 / -1; }
    .conc-tabla-terceros td[data-rotulo]:not([data-rotulo=""])::before {
        content: attr(data-rotulo); display: block; margin-bottom: 1px;
        font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: var(--pan-apagado); font-weight: 600;
    }
    .conc-tabla-terceros td[data-rotulo="Nombre del libro"]:not([data-rotulo=""])::before,
    .conc-tabla-terceros td[data-rotulo="Proveedor"]:not([data-rotulo=""])::before,
    .conc-tabla-terceros td[data-rotulo="Cuenta"]:not([data-rotulo=""])::before { display: none; }
    /* El color de la fila va en la fila: en rejilla, las celdas dejan huecos entre sí. */
    .conc-tabla-terceros tr.conc-marcado, .conc-tabla-terceros tr.conc-marcado td { background: #f4faf5; }
    .conc-tabla-terceros tr.conc-ambiguo, .conc-tabla-terceros tr.conc-ambiguo td { background: #fffaf0; }
    .conc-acciones-tercero { flex-direction: row; justify-content: flex-end; }
    .conc-decidir-rejilla { grid-template-columns: 1fr; }
    .conc-buscar-texto { min-width: 0; }
}

@media print { .conc-tabla-terceros input[type="checkbox"], .conc-acciones-tercero, .conc-clase-boton { display: none; } }
