/* ===================== Griddex · bbdd.css ===================== */
/* Indicadores, filtros, tablas, bloques por estado, fichas,      */
/* facturación, clientes y ajustes. Solo lo usa bbdd.html.         */

/* ---------- indicadores ---------- */
.stats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 14px;min-width:130px;box-shadow:var(--shadow)}
.stat b{display:block;font-family:var(--titulo);font-size:20px;line-height:1.25}
.stat span{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-weight:600}
.stat em{font-style:normal;display:block;font-size:12.5px;color:var(--verde);font-weight:600;margin-top:1px}
.stat.alerta{border-color:#f0dca8;background:#fffdf6}
.stat.alerta b{color:#a8720a}

/* ---------- barra de filtros ---------- */
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input[type=search],.toolbar select,.toolbar input[type=date],.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--card);border-radius:9px;padding:7px 11px;outline:none}
.toolbar input[type=search]{min-width:270px}
.toolbar input:focus,.toolbar select:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--hoja);box-shadow:0 0 0 3px rgba(136,204,67,.22)}
.toolbar .spacer{flex:1}
.chipf{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:500}
.chipf[aria-pressed=true]{background:var(--noche);border-color:var(--noche);color:#fff}
.resultados{font-size:12.5px;color:var(--muted);font-weight:600}

/* ---------- grupos y tabla ---------- */
.group{margin-bottom:16px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}
.ghead{display:flex;align-items:center;gap:10px;padding:11px 14px;cursor:pointer;user-select:none;border-bottom:1px solid var(--line2);background:#fcfbf8;width:100%;border:0;text-align:left;font-size:14px}
.ghead .arw{transition:transform .15s;font-size:11px;color:var(--muted)}
.group.closed .ghead{border-bottom:0}
.group.closed .arw{transform:rotate(-90deg)}
.group.closed .gbody{display:none}
.ghead .cnt{color:var(--muted);font-size:13px}
.ghead .sum{margin-left:auto;font-weight:700;color:var(--verde)}
.gbody{overflow-x:auto}
table{border-collapse:separate;border-spacing:0;width:100%}
#tab-peticiones table{min-width:1222px}
#tab-facturacion table{min-width:1222px}
th{position:sticky;top:0;z-index:2;background:#e4ecf6;text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.6px;color:#3c4c60;font-weight:700;padding:9px;border-bottom:1px solid var(--line);border-right:1px solid var(--colline);white-space:nowrap;position:relative}
th:last-child{border-right:0}
td{padding:5px 6px;border-bottom:1px solid var(--line2);border-right:1px solid var(--colline);vertical-align:middle;background:#fff}
td:last-child{border-right:0}
tr:last-child td{border-bottom:0}
tbody tr:nth-child(even) td{background:var(--zebra)}
tr.pet:hover td{background:var(--hover)}
th:first-child{left:0;z-index:4}
td.req{position:sticky;left:0;z-index:1;font-weight:800;font-size:14.5px;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:12px;color:var(--noche);box-shadow:1px 0 0 var(--colline)}
td.req .avisos{font-size:11px;font-weight:600;color:#a8720a;display:block;letter-spacing:0}
td.req .avisos.venc{color:var(--rojo)}
.cellinput{width:100%;border:1px solid transparent;background:transparent;border-radius:7px;padding:6px 7px;min-height:30px;font-size:14px;color:var(--txt);text-overflow:ellipsis}
.cellinput:hover{border-color:var(--line);background:rgba(255,255,255,.75)}
.cellinput:focus{border-color:var(--hoja);background:#fff;box-shadow:0 0 0 3px rgba(136,204,67,.22);outline:none;text-overflow:clip}
select.cellinput{font-weight:500}
.cellinput::placeholder{color:#b9bdb2;opacity:1}
td.num .cellinput{text-align:right;font-variant-numeric:tabular-nums;font-weight:700;font-size:14.5px;color:var(--noche)}
td.cp .cellinput{text-align:center;font-variant-numeric:tabular-nums;color:#4a5241}
td.pres .cellinput{font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:.3px;color:var(--verde);text-align:center}
body.faltas td.falta{background:var(--ambar)}
body.faltas td.falta .cellinput::placeholder{color:var(--ambarTxt);font-weight:700}
body.faltas tr.pet:hover td.falta{background:var(--ambar2)}
.acts{display:flex;gap:3px;justify-content:flex-end;padding-right:10px}
.iconbtn{border:1px solid transparent;background:transparent;border-radius:7px;width:28px;height:28px;display:grid;place-items:center;font-size:14px;line-height:1}
.iconbtn:hover{background:var(--line2);border-color:var(--line)}
.iconbtn.has{background:var(--t-otros-bg)}
.empty{padding:30px;text-align:center;color:var(--muted)}
.masfilas{padding:10px;text-align:center;border-top:1px solid var(--line2);background:#fcfbf8}
.rz{position:absolute;top:0;right:-3px;width:7px;height:100%;cursor:col-resize;z-index:5;background:transparent;border:0;padding:0}
.rz:hover::after,.rz.on::after{content:'';position:absolute;top:0;left:2px;width:3px;height:100%;background:var(--hoja)}
body.rzing{cursor:col-resize;user-select:none}
body.rzing .cellinput{pointer-events:none}

select.tsel,select.esel{border:1px solid transparent;border-radius:999px;padding:5px 8px;font-size:12px;font-weight:700;appearance:none;text-align:center;cursor:pointer;max-width:100%}
select.tsel:focus,select.esel:focus{outline:none;box-shadow:0 0 0 3px rgba(136,204,67,.25)}
select.tsel option,select.esel option{background:#fff;color:var(--txt);font-weight:500}
.t-Proyecto{background:var(--t-proyecto-bg);color:var(--t-proyecto)}
.t-Expediente{background:var(--t-expediente-bg);color:var(--t-expediente)}
.t-Licitación{background:var(--t-licitacion-bg);color:var(--t-licitacion)}
.t-Legalización{background:var(--t-legalizacion-bg);color:var(--t-legalizacion)}
.t-Otros{background:var(--t-otros-bg);color:var(--t-otros)}
.t-Anteproyecto{background:var(--t-anteproyecto-bg);color:var(--t-anteproyecto)}
.t-Subvención{background:var(--t-subvencion-bg);color:var(--t-subvencion)}
.t-Viabilidad{background:var(--t-viabilidad-bg);color:var(--t-viabilidad)}
.t-BIK-ONL{background:var(--t-bikonl-bg);color:var(--t-bikonl);letter-spacing:.3px}
.t-{background:var(--line2);color:var(--muted)}
.e-Nueva{background:var(--e-nue-bg);color:var(--e-nue);border-color:var(--e-nue-bd)}
.e-Presupuesto{background:var(--e-pre-bg);color:var(--e-pre);border-color:var(--e-pre-bd)}
.e-SinIniciar{background:var(--e-sin-bg);color:var(--e-sin);border-color:var(--e-sin-bd)}
.e-EnProgreso{background:var(--e-pro-bg);color:var(--e-pro);border-color:var(--e-pro-bd)}
.e-Finalizado{background:var(--e-fin-bg);color:var(--e-fin);border-color:var(--e-fin-bd)}
.e-Cancelado{background:var(--e-can-bg);color:var(--e-can);border-color:var(--e-can-bd)}
.pill{display:inline-block;border:1px solid transparent;border-radius:999px;padding:3px 11px;font-size:12px;font-weight:700}

/* ---------- contraste de los bloques por estado (pestaña Peticiones) ----------
   Sólo color: ni la estructura de la tabla ni el comportamiento cambian.
   Cada grupo define sus 7 tonos y las reglas de abajo los aplican. */
#tab-peticiones .group[data-est="Nueva Solicitud"]{--g-bd:#3b7cc9;--g-line:#bcd6f0;--g-head:#dbebfc;--g-th:#e9f2fd;--g-fila:#f8fbff;--g-zebra:#eef5fd;--g-hover:#dce9f8}
#tab-peticiones .group[data-est="Presupuesto"]{--g-bd:#7c5cbf;--g-line:#d5c9ee;--g-head:#ece5f8;--g-th:#f3eefb;--g-fila:#fcfaff;--g-zebra:#f4effb;--g-hover:#e8dff7}
#tab-peticiones .group[data-est="Sin Iniciar"]{--g-bd:#6b7483;--g-line:#d3d8df;--g-head:#e4e8ee;--g-th:#edf0f4;--g-fila:#fafbfc;--g-zebra:#f1f3f6;--g-hover:#e3e7ec}
#tab-peticiones .group[data-est="En Progreso"]{--g-bd:#d2810f;--g-line:#eed4a8;--g-head:#fbe6c4;--g-th:#fdf0da;--g-fila:#fffcf5;--g-zebra:#fdf1e0;--g-hover:#fae4c5}
#tab-peticiones .group[data-est="Finalizado"]{--g-bd:#2b9d63;--g-line:#b6e2c9;--g-head:#d9f2e4;--g-th:#e8f7ef;--g-fila:#f8fdfa;--g-zebra:#eef8f2;--g-hover:#ddf1e6}
#tab-peticiones .group[data-est="Cancelado"]{--g-bd:#cf5227;--g-line:#f2c9b6;--g-head:#fbe1d6;--g-th:#fdeee7;--g-fila:#fffaf8;--g-zebra:#fdefe8;--g-hover:#fadfd2}

#tab-peticiones .group[data-est],#tab-facturacion .group[data-fgrupo]{
  margin-bottom:16px;
  border:1px solid var(--g-line);
  border-left:4px solid var(--g-bd);
  box-shadow:0 1px 3px rgba(36,51,26,.10),0 6px 18px rgba(36,51,26,.05);
}
#tab-peticiones .group[data-est] .ghead,#tab-facturacion .group[data-fgrupo] .ghead{background:var(--g-head);border-bottom:1px solid var(--g-line);padding:10px 14px}
#tab-peticiones .group[data-est] .ghead .arw,#tab-facturacion .group[data-fgrupo] .ghead .arw{color:var(--g-bd);font-size:12px}
#tab-peticiones .group[data-est] .ghead .pill,#tab-facturacion .group[data-fgrupo] .ghead .pill{font-size:12px;font-weight:800;letter-spacing:.4px;padding:3px 12px;text-transform:uppercase}
#tab-peticiones .group[data-est] .ghead .cnt,#tab-facturacion .group[data-fgrupo] .ghead .cnt{color:#4b5346;font-weight:700;font-size:12.5px}
#tab-peticiones .group[data-est] .ghead .sum,#tab-facturacion .group[data-fgrupo] .ghead .sum{color:var(--noche);font-size:14px;font-variant-numeric:tabular-nums}
#tab-peticiones .group[data-est] th,#tab-facturacion .group[data-fgrupo] th{background:var(--g-th);border-bottom-color:var(--g-line)}
#tab-peticiones .group[data-est] td,#tab-facturacion .group[data-fgrupo] td{background:var(--g-fila)}
#tab-peticiones .group[data-est] tbody tr:nth-child(even) td,#tab-facturacion .group[data-fgrupo] tbody tr:nth-child(even) td{background:var(--g-zebra)}
#tab-peticiones .group[data-est] tr.pet:hover td,#tab-facturacion .group[data-fgrupo] tr.fac:hover td{background:var(--g-hover)}
#tab-peticiones .group[data-est] .masfilas,#tab-peticiones .group[data-est] .empty{background:var(--g-fila);border-top-color:var(--g-line)}
.ghead .extra{font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;background:rgba(0,0,0,.06)}
/* el sombreado ámbar de «faltan datos» manda sobre el matiz del bloque */
body.faltas #tab-peticiones .group[data-est] td.falta,body.faltas #tab-facturacion .group[data-fgrupo] td.falta{background:var(--ambar)}
body.faltas #tab-peticiones .group[data-est] tr.pet:hover td.falta{background:var(--ambar2)}
body.faltas #tab-peticiones .group[data-est="En Progreso"] tbody tr:nth-child(even) td.falta{background:#fbe8b4}

/* ---------- ficha de petición en secciones ---------- */
.modal{display:flex;flex-direction:column}
.mbody{flex:1;min-height:0;overflow:auto}
.modal .mfoot{position:sticky;bottom:0;background:var(--card);border-top:1px solid var(--line);z-index:2}
.modal .mhead{position:sticky;top:0;background:var(--card);z-index:2}
.fichap{padding-top:6px}
.fsec{border:1px solid var(--line);border-radius:11px;margin-bottom:8px;overflow:hidden}
.fhead{display:flex;align-items:center;gap:10px;width:100%;border:0;background:#fbfcf9;padding:10px 13px;text-align:left;font-weight:700;font-size:13.5px;font-family:var(--titulo)}
.fhead:hover{background:#f5f8f0}
.fhead .arw{font-size:10px;color:var(--muted);transition:transform .15s;font-family:var(--fuente)}
.fsec:not(.abierta) .arw{transform:rotate(-90deg)}
.fsec:not(.abierta) .fbody{display:none}
.fhead .fresumen{margin-left:auto;font-weight:500;font-size:12.5px;color:var(--muted);font-family:var(--fuente);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:52%}
.fhead .fresumen.al{color:#a8720a;font-weight:600}
.fbody{padding:12px 13px 14px;border-top:1px solid var(--line2)}
.fbody .grid{margin:0}

/* ---------- bloques de Facturación ---------- */
#tab-facturacion .group[data-fgrupo="Sin facturar"]{--g-bd:#6B7280;--g-line:#d8dce1;--g-head:#F3F4F6;--g-th:#f7f8f9;--g-fila:#fdfdfe;--g-zebra:#f4f5f7;--g-hover:#e9ebee}
#tab-facturacion .group[data-fgrupo="Facturado"]{--g-bd:#2563EB;--g-line:#c6dafb;--g-head:#EFF6FF;--g-th:#f5f9ff;--g-fila:#fcfdff;--g-zebra:#f2f7fe;--g-hover:#e3eefd}
#tab-facturacion .group[data-fgrupo="Recordatorio enviado"]{--g-bd:#D97706;--g-line:#f3ddbd;--g-head:#FFF7ED;--g-th:#fffaf3;--g-fila:#fffdfa;--g-zebra:#fdf6ec;--g-hover:#fbeeda}
#tab-facturacion .group[data-fgrupo="Vencido"]{--g-bd:#DC2626;--g-line:#f5cdcd;--g-head:#FEF2F2;--g-th:#fff7f7;--g-fila:#fffbfb;--g-zebra:#fdf2f2;--g-hover:#fbe4e4}
#tab-facturacion .group[data-fgrupo="Cobrado"]{--g-bd:#168447;--g-line:#bfe6d0;--g-head:#ECFDF3;--g-th:#f4fdf8;--g-fila:#fcfefd;--g-zebra:#f1fbf5;--g-hover:#e3f6ea}
.f-Vencido{background:#fbd9d9;color:#a01c1c;border-color:#f0b4b4}
#tab-facturacion .group[data-fgrupo="Vencido"] .ghead .extra{background:#fadcdc;color:#a01c1c}
.stat.k-g-sf{border-left:3px solid #6B7280} .stat.k-g-fa{border-left:3px solid #2563EB}
.stat.k-g-re{border-left:3px solid #D97706} .stat.k-g-ve{border-left:3px solid #DC2626}
.stat.k-g-co{border-left:3px solid #168447}
.stat.sel{cursor:pointer;text-align:left;font:inherit}
.btn.sm.accf{font-weight:700;padding:3px 9px;font-size:12px}
#tab-facturacion .acts{gap:4px}
#tab-peticiones .acts{gap:3px;padding-right:6px}
#tab-peticiones .iconbtn{width:25px;height:25px;font-size:12px}
#tab-facturacion td.req .pres2{display:block;font-size:11px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}

/* ---------- Ajustes en acordeones ---------- */
.ajustes{max-width:960px}
.acc{background:var(--card);border:1px solid var(--line);border-radius:13px;margin-bottom:9px;overflow:hidden;box-shadow:0 1px 2px rgba(36,51,26,.05)}
.ahead{display:flex;align-items:center;gap:11px;width:100%;border:0;background:#fdfdfc;padding:13px 16px;text-align:left;font-size:14px}
.ahead:hover{background:#f7f9f4}
.ahead .arw{font-size:11px;color:var(--muted);transition:transform .15s}
.acc:not(.abierto) .arw{transform:rotate(-90deg)}
.acc:not(.abierto) .abody{display:none}
.ahead .atit{font-weight:700;font-family:var(--titulo);font-size:14.5px;white-space:nowrap}
.ahead .asub{color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ahead .aest{margin-left:auto;font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap}
.ahead .aest.al{color:#a8720a;font-weight:700}
.ahead .aest.ok{color:var(--verde)}
.abody{padding:4px 16px 16px;border-top:1px solid var(--line2)}
.abody .panel{box-shadow:none;border:0;padding:12px 0 0;margin:0;max-width:none}
.abody .panel + .panel{border-top:1px solid var(--line2);margin-top:12px}
.peligro{border:1px solid #f0c8c2;background:#fdf5f4;border-radius:13px;padding:14px 16px;margin-top:22px;max-width:960px}
.peligro .pelcab{font-size:14px;color:#a02c1c}
.peligro .pelsub{color:#8a4a3e;font-size:12.5px;margin-top:4px}
@media(max-width:760px){.ahead .asub{display:none}}

/* ---------- propuesta A: filas compactas ---------- */
#tab-peticiones td,#tab-facturacion td{padding:3px 7px}
#tab-peticiones td.req,#tab-facturacion td.req{font-size:13.5px}
#tab-peticiones th,#tab-facturacion th{padding:7px 8px;font-size:10.5px}
/* indicadores más bajos: en portátil cada píxel de aquí es una fila menos */
#tab-peticiones .stat,#tab-facturacion .stat{padding:7px 12px;min-width:118px}
#tab-peticiones .stat b,#tab-facturacion .stat b{font-size:17px}
#tab-peticiones .stat span,#tab-facturacion .stat span{font-size:10.5px}
#tab-peticiones .stat em,#tab-facturacion .stat em{font-size:11.5px}
#tab-peticiones .stats,#tab-facturacion .stats{gap:8px;margin-bottom:10px}
#tab-peticiones .toolbar,#tab-facturacion .toolbar{margin-bottom:9px}
#tab-peticiones .cellinput,#tab-facturacion .cellinput{padding:4px 6px;min-height:26px;font-size:13.5px}
/* el presupuesto va en la MISMA línea que el REQ: sumar una segunda línea
   costaba 13 px por fila, que es justo lo que la propuesta A quiere ahorrar */
td.req .pres2{font-size:11.5px;font-weight:600;letter-spacing:.2px;color:var(--verde);font-variant-numeric:tabular-nums;margin-left:6px}
td.req .pres2::before{content:'·';color:#c8ccc0;margin-right:5px;font-weight:400}
td.req .pres2.vacio{color:#c5c9bd;font-weight:500}
td.req{line-height:1.25}
td.req .avisos{margin-top:1px}
td.dir{position:relative}
td.dir .cellinput{width:calc(100% - 52px);display:inline-block;vertical-align:middle}
.cpmini{width:48px;border:1px solid transparent;background:transparent;border-radius:6px;padding:4px 3px;font-size:12px;text-align:center;font-variant-numeric:tabular-nums;color:#4a5241;vertical-align:middle}
.cpmini:hover{border-color:var(--line);background:rgba(255,255,255,.75)}
.cpmini:focus{border-color:var(--hoja);background:#fff;outline:none;box-shadow:0 0 0 3px rgba(136,204,67,.22)}
body.faltas .cpmini.falta{background:var(--ambar2);color:var(--ambarTxt);font-weight:700}
/* el aviso de «sin contacto» no debe partir la celda en dos líneas */
#tab-peticiones td .cellinput[data-f="clienteId"]{width:calc(100% - 13px);display:inline-block;vertical-align:middle}
.sincont{color:#d2810f;font-weight:900;cursor:help;display:inline-block;width:11px;text-align:center;vertical-align:middle;line-height:1}
/* la barra de filtros cabe en una sola línea a 1366 */
#tab-peticiones .toolbar input[type=search],#tab-facturacion .toolbar input[type=search]{min-width:210px;flex:1 1 210px;max-width:330px}
#tab-peticiones .toolbar select,#tab-facturacion .toolbar select{max-width:190px}
#tab-peticiones .toolbar .resultados,#tab-facturacion .toolbar .resultados{margin-left:auto}
#tab-peticiones .toolbar,#tab-facturacion .toolbar{flex-wrap:nowrap;overflow:visible}
@media(max-width:1100px){#tab-peticiones .toolbar,#tab-facturacion .toolbar{flex-wrap:wrap}}
.iconbtn svg{display:block}
.stat.sel{cursor:pointer;transition:border-color .12s}
.stat.sel:hover{border-color:var(--hoja)}
/* menú de acciones de fila */
.menufila{position:absolute;z-index:70;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 28px rgba(36,51,26,.18);padding:5px;min-width:212px}
.menufila button{display:flex;align-items:center;gap:9px;width:100%;border:0;background:none;padding:8px 10px;border-radius:7px;font-size:13px;text-align:left}
.menufila button:hover{background:var(--line2)}
.menufila button.danger{color:var(--rojo)}
.menufila button[disabled]{opacity:.4;cursor:not-allowed}
.menufila hr{border:0;border-top:1px solid var(--line2);margin:4px 2px}
/* filtros avanzados plegables */
.filtrosav{display:none;border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:12px;background:#fcfbf8}
.filtrosav.on{display:block}
.filtrosav .frow{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.filtrosav .frow + .frow{margin-top:9px}
.mas-badge{background:var(--noche);color:#fff;border-radius:999px;padding:0 6px;font-size:11px;font-weight:800;margin-left:5px}

/* ---------- facturación ---------- */
.e-Sinfacturar{background:#f1efe9;color:#6a7061}
.e-Facturado{background:#e3eefc;color:#1668d6}
.e-Recordatorioenviado{background:#fdeadb;color:#c25a12}
.e-Cobrado{background:#e3f5ea;color:#1f8a4c}
select.ffsel{border:1px solid transparent;border-radius:999px;padding:5px 8px;font-size:12px;font-weight:700;appearance:none;text-align:center;cursor:pointer;max-width:100%}
select.ffsel:focus{outline:none;box-shadow:0 0 0 3px rgba(136,204,67,.25)}
select.ffsel option{background:#fff;color:var(--txt);font-weight:500}
table.tfac{min-width:1172px}
tr.fac:hover td{background:var(--hover)}
td.req .sub{display:block;font-size:11px;font-weight:600;letter-spacing:0;color:var(--muted)}
td.req .sub.venc{color:var(--rojo)}
td.req .sub.pronto{color:#a8720a}
td.prev{font-variant-numeric:tabular-nums;text-align:right;font-weight:600;color:#4a5241;white-space:nowrap}
td.prev .dif{display:block;font-size:11px;color:#c25a12;font-weight:700}
.badge{display:inline-block;border-radius:6px;padding:2px 7px;font-size:11px;font-weight:700;border:1px solid transparent}
.badge.rojo{background:var(--rojoBg);color:#8c2c20;border-color:#f0c8c2}
.badge.ambar{background:var(--ambar);color:var(--ambarTxt);border-color:#eddcae}
.badge.gris{background:var(--line2);color:var(--muted);border-color:var(--line)}
.prevaviso{font-size:11px;color:#a8720a;font-weight:700}

/* ---------- empresas y contactos ---------- */
.ccard.archivada{opacity:.72;border-style:dashed}
.ccard .sub2{font-size:12.5px;color:var(--muted);margin:-2px 0 6px;font-style:italic}
.badge.verde{background:#e3f5ea;color:#1f8a4c;border-color:#c5e8d3}
.badge.azul{background:#e3eefc;color:#1668d6;border-color:#c7ddf7}
.tablaint{max-height:290px;overflow:auto;border:1px solid var(--line);border-radius:10px}
table.tint{min-width:0;width:100%;font-size:13px}
table.tint th{font-size:10.5px;padding:7px 8px;background:#eef2f8}
table.tint td{padding:6px 8px}
table.tint td .sub{display:block;font-size:11px;color:var(--muted)}
table.tint tr[data-petid]:hover td,table.tint tr[data-facid]:hover td{background:var(--hover)}
table.tcli{min-width:980px}
table.tcli td.req .pres2{display:block;font-size:11.5px;font-weight:500;color:var(--muted);margin-left:0}
table.tcli td.req .pres2::before{content:none}
.hueco2{color:#a8720a;font-weight:600;font-size:12.5px}
.dash{color:#b9bdb2}
tr.cli:hover td{background:var(--hover)}
.btn.sm.danger{color:var(--rojo);border-color:#f0d3ce}
#tab-clientes .cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.seglista{display:grid;gap:8px;margin-top:8px;max-height:260px;overflow:auto}
.seg{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fcfbf8}
.seg .fec{font-size:12px;color:var(--verde);font-weight:700;font-variant-numeric:tabular-nums}
.seg .txt{white-space:pre-wrap;margin-top:3px;font-size:13.5px}
.seg .acts{justify-content:flex-end;padding:0;margin-top:4px}
.chipserv{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:12px;cursor:pointer;background:#fff}
.chipserv[aria-pressed=true]{background:var(--t-expediente-bg);border-color:var(--t-expediente);color:var(--t-expediente);font-weight:700}
.servbox{display:flex;flex-wrap:wrap;gap:6px;max-height:140px;overflow:auto;padding:4px 0}


/* ---------- clientes ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.ccard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:var(--shadow)}
.ccard h4{margin:0 0 3px;font-family:var(--titulo);font-size:15px}
.ccard .meta{font-size:12.5px;color:var(--muted);line-height:1.55}
.ccard .meta .mal{color:var(--rojo);font-weight:600}
.ccard .foot{display:flex;gap:6px;margin-top:10px;align-items:center;flex-wrap:wrap}
.ccard .foot .n{margin-right:auto;font-size:12px;color:var(--verde);font-weight:600}


/* ---------- presupuesto como columna propia ---------- */
#tab-peticiones td .cellinput.pres{font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:12.5px;letter-spacing:.2px}

/* ---------- reparto de lo facturado, al pie de la celda Total ----------
   La barra va posicionada sobre el borde inferior de la celda: informa
   sin robar ni un píxel de alto a la fila, que es lo que costó ajustar. */
#tab-peticiones td.num{position:relative}
#tab-peticiones td.num .facbar{position:absolute;left:7px;right:7px;bottom:2px;height:3px;
  border-radius:2px;background:#e6e4de;overflow:hidden}
#tab-peticiones td.num .facbar i{display:block;height:100%;border-radius:2px;background:var(--e-pro)}
#tab-peticiones td.num .facbar.completa i{background:var(--e-fin)}
#tab-peticiones td.num .facbar.cobrada i{background:var(--hoja)}
#tab-peticiones td.num .facbar.sinref i{background:var(--e-sin);opacity:.55}
#tab-peticiones td.num .facpct{position:absolute;left:7px;bottom:4px;font-size:10px;font-weight:700;
  color:var(--e-pro);letter-spacing:.2px;line-height:1;pointer-events:none}
#tab-peticiones td.num .cellinput{padding-bottom:6px}

/* ---------- varias facturas por petición ---------- */
#tab-peticiones td.num .facn{position:absolute;right:7px;bottom:4px;font-size:9.5px;font-weight:700;
  color:var(--muted);line-height:1;pointer-events:none}
#tab-peticiones .iconbtn.parcial{color:var(--e-pro);font-weight:700;font-size:12px}
#tab-facturacion td .parte{display:block;font-size:10.5px;font-weight:700;color:var(--e-pro);
  letter-spacing:.2px;margin-top:1px}
#tab-facturacion td.pres{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;
  color:var(--txt);white-space:nowrap}
#tab-facturacion td.pres.falta{color:var(--ambarTxt)}

/* reparto dentro del diálogo de nueva factura */
.repbar{height:8px;border-radius:5px;background:#e6e4de;overflow:hidden;margin:0 0 7px}
.repbar i{display:block;height:100%;border-radius:5px;background:var(--e-pro)}
.repcifras{display:flex;gap:18px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin-bottom:14px}
.repcifras b{color:var(--txt);font-variant-numeric:tabular-nums}
.repcifras .pend b{color:var(--e-pro)}
#tab-peticiones .iconbtn.parcial{white-space:nowrap;letter-spacing:-.5px;padding:0 3px}

/* ---------- ventanita de ayuda del botón € ---------- */
.tipfac{position:fixed;z-index:300;width:min(400px,92vw);background:var(--card);
  border:1px solid var(--line);border-radius:13px;padding:13px 15px;
  box-shadow:0 4px 10px rgba(36,51,26,.10),0 18px 44px rgba(36,51,26,.16);
  font-size:12.5px;line-height:1.5;pointer-events:none;color:var(--txt)}
.tipfac .tf-cab{font-family:var(--titulo);font-size:13.5px;margin-bottom:5px}
.tipfac .tf-sub{color:var(--muted);margin-bottom:10px}
.tipfac .tf-bar{height:6px;border-radius:4px;background:#e6e4de;overflow:hidden;margin:7px 0 7px}
.tipfac .tf-bar i{display:block;height:100%;border-radius:4px;background:var(--e-pro)}
.tipfac .tf-cifras{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);margin-bottom:11px;font-size:12px}
.tipfac .tf-cifras b{color:var(--txt);font-variant-numeric:tabular-nums}
.tipfac .tf-cifras .pend b{color:var(--e-pro)}
.tipfac .tf-leyenda{width:100%;min-width:0;border-collapse:collapse;
  border-top:1px solid var(--line2);margin-top:2px}
.tipfac .tf-leyenda td{border:0;background:none;padding:5px 8px 5px 0;vertical-align:top;font-size:12px}
.tipfac .tf-leyenda .sim{width:34px;font-weight:700;color:var(--verde);white-space:nowrap;
  font-size:12.5px;letter-spacing:-.4px}
.tipfac .tf-leyenda .est{white-space:nowrap;font-weight:600}
.tipfac .tf-leyenda .que{color:var(--muted)}
.tipfac .tf-leyenda tr.ahora td{background:#f2f7ea}
.tipfac .tf-leyenda tr.ahora .sim{color:var(--hoja)}
.tipfac .tf-leyenda tr.ahora .est::after{content:' · ahora';color:var(--hoja);font-weight:700}
