/* Inmobisur sobre Tabler 1.6.1: azul corporativo #1F4E78 como primario, y clases propias de la app. */
:root,[data-bs-theme=light]{--tblr-primary:#1F4E78;--tblr-primary-rgb:31,78,120;--tblr-primary-text:#1F4E78;--tblr-link-color:#1F4E78;--tblr-link-color-rgb:31,78,120;--tblr-primary-fg:#fff}
[data-bs-theme=dark]{--tblr-primary:#3d7ab8;--tblr-primary-rgb:61,122,184;--tblr-link-color:#7fb0e0;--tblr-link-color-rgb:127,176,224}
.navbar-vertical{background:#1F4E78!important}
.navbar-vertical .logo{height:36px;border-radius:6px;background:#fff;padding:2px}
.navbar-vertical .navbar-brand{font-size:.85rem;line-height:1.1;text-align:left;font-weight:600}
.navbar-vertical .nav-item.active>.nav-link{background:rgba(255,255,255,.12);border-radius:6px}
.selector-obra{background-color:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.25)}
.selector-obra option{color:#000}
.page-body{margin-top:1rem}
/* números alineados y semáforo */
.n,td.n,th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.neg{color:var(--tblr-danger)!important}.pos{color:var(--tblr-success)!important}
.sub{color:var(--tblr-secondary);margin:0 0 1rem}
.provisorio{color:var(--tblr-warning);font-style:italic}
tr.excede td{background:rgba(var(--tblr-danger-rgb),.08)}tr.excede .despues{color:var(--tblr-danger)}
/* botones sin variante (p. ej. Abrir/Cerrar de la tabla de la obra) */
.btn:not([class*=btn-]):not(.dropdown-item){--tblr-btn-bg:var(--tblr-primary);--tblr-btn-color:#fff;--tblr-btn-hover-bg:#173d5f;--tblr-btn-hover-color:#fff}
/* tarjetas de indicadores */
.kpi .subheader{font-size:.7rem}.kpi .h2{margin:0;font-variant-numeric:tabular-nums}
/* gráficos */
/* gráficos: siempre contra el presupuesto. Colores fijos en toda la app (validados con la skill dataviz, claro y oscuro):
   Gastado J azul · Comprometido I ámbar · Falta por gastar (O − J − I) violeta con rayas (es estimado) · Valor ganado M aqua ·
   Presupuesto E raya de tinta · avance esperado según plazo gris punteado. graficos.js los lee de aquí. */
:root,[data-bs-theme=light]{--g-gastado:#2a78d6;--g-comprometido:#eda100;--g-falta:#6250d6;--g-ganado:#1baf7a;--g-presupuesto:#1d1d1b;--g-esperado:#8a8984;--g-raya:rgba(255,255,255,.45);--g-grilla:#e6e5e0}
[data-bs-theme=dark]{--g-gastado:#3987e5;--g-comprometido:#c98500;--g-falta:#9085e9;--g-ganado:#199e70;--g-presupuesto:#f0efec;--g-esperado:#8a8984;--g-raya:rgba(0,0,0,.35);--g-grilla:#34342f}
.grafico{width:100%;height:320px}
.grafico.bajo{height:260px}
.grafico.costo{height:170px}
.lectura{font-size:.875rem;margin:.5rem 0 0;padding:.5rem .75rem;border-left:3px solid var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.05);border-radius:0 4px 4px 0}
.pregunta{font-size:.75rem;color:var(--tblr-secondary);font-weight:400;margin-left:.5rem}
/* barra de costo en HTML (inicio por obra, panel de la partida) */
.barra-costo{font-size:.8rem}
.bc-cifras{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem .75rem;margin-bottom:.25rem}
.bc-pista{position:relative;display:flex;height:16px;margin:2px 0 4px}
.bc-seg{display:block;height:100%;border-right:2px solid var(--tblr-bg-surface);min-width:2px}
.bc-seg:last-of-type{border-radius:0 4px 4px 0}
.bc-gastado{background:var(--g-gastado)}.bc-comprometido{background:var(--g-comprometido)}
.bc-falta{background:var(--g-falta) repeating-linear-gradient(135deg,transparent 0 4px,var(--g-raya) 4px 6px)}
.bc-marca{position:absolute;top:-4px;bottom:-4px;width:0;border-left:2px solid var(--g-presupuesto)}
.bc-leyenda{display:flex;flex-wrap:wrap;gap:.15rem .9rem;color:var(--tblr-secondary);font-size:.75rem;font-variant-numeric:tabular-nums}
.bc-cuadro{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.bc-raya{display:inline-block;width:0;height:12px;border-left:2px solid var(--g-presupuesto);margin:0 5px 0 3px;vertical-align:-2px}
/* gráficos, estilo nuevo (A y E, 30-10-2026; el anterior sigue arriba y vale con data-graficos="anterior"). Rampa de un solo
   azul de lo seguro a lo estimado: Gastado oscuro, Comprometido medio, Falta por gastar claro; en oscuro se invierte la
   rampa (lo gastado es lo más claro) para que siga destacando sobre la superficie. Valor ganado verde. Presupuesto = tinta. */
html[data-graficos=nuevo]{--g-gastado:#0C447C;--g-comprometido:#378ADD;--g-falta:#B5D4F4;--g-falta-linea:#85B7EB;--g-ganado:#1D9E75;--g-presupuesto:#222222;--g-esperado:#8a8984;--g-grilla:#e6e5e0}
html[data-graficos=nuevo][data-bs-theme=dark]{--g-gastado:#B5D4F4;--g-comprometido:#378ADD;--g-falta:#235A94;--g-falta-linea:#2A6CB0;--g-ganado:#1D9E75;--g-presupuesto:#e3e3e3;--g-esperado:#8a8984;--g-grilla:#34342f}
.ae{font-size:.8125rem;font-variant-numeric:tabular-nums}
.ae-pista{position:relative;margin-top:1.1rem}
.ae-barra{display:flex;gap:2px;height:34px;min-width:2px}
.ae-seg{display:block;height:100%;min-width:2px}
.ae-seg:first-child{border-radius:6px 0 0 6px}.ae-seg:last-child{border-radius:0 6px 6px 0}.ae-seg:only-child{border-radius:6px}
.ae-gastado{background:var(--g-gastado)}.ae-comprometido{background:var(--g-comprometido)}.ae-falta{background:var(--g-falta)}
.ae-ppto{position:absolute;top:-6px;bottom:-6px;width:2px;margin-left:-1px;background:var(--tblr-body-color)}
.ae-ppto-et{position:absolute;bottom:100%;left:5px;white-space:nowrap;font-size:.7rem;line-height:1.1;color:var(--tblr-body-color)}
.ae-ppto.izq .ae-ppto-et{left:auto;right:5px}
.ae-leyenda{display:flex;flex-wrap:wrap;gap:.2rem 1rem;margin-top:.6rem;color:var(--tblr-secondary);font-size:.75rem}
.ae-cuadro{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.ae-marca-ley{display:inline-block;width:2px;height:12px;background:var(--tblr-body-color);margin:0 6px 0 3px;vertical-align:-2px}
.ae-frase{margin-top:.35rem;font-size:.875rem}
.ae-chico .ae-pista{margin-top:.95rem}.ae-chico .ae-barra{height:20px}
.ae-chico .ae-seg:first-child{border-radius:4px 0 0 4px}.ae-chico .ae-seg:last-child{border-radius:0 4px 4px 0}.ae-chico .ae-seg:only-child{border-radius:4px}
.ae-chico .ae-ppto{top:-4px;bottom:-4px}.ae-chico .ae-frase{font-size:.8125rem}
.ae-filas{display:grid;grid-template-columns:minmax(0,min(14rem,34%)) minmax(0,1fr) auto;gap:.6rem .75rem;align-items:center}
.ae-nombre{color:var(--tblr-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ae-nombre a{color:inherit}
.ae-fila-pista{position:relative;height:16px}
.ae-fila-pista .ae-barra{height:16px}
.ae-fila-pista .ae-seg:first-child{border-radius:3px 0 0 3px}.ae-fila-pista .ae-seg:last-child{border-radius:0 3px 3px 0}.ae-fila-pista .ae-seg:only-child{border-radius:3px}
.ae-marca{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:var(--tblr-body-color)}
.ae-dif{text-align:right;white-space:nowrap;min-width:5.5rem}
.ae-total{color:var(--tblr-body-color)}
.ae-e .ae-leyenda{margin-top:.9rem}
@media (max-width:575.98px){.ae-filas{grid-template-columns:minmax(0,1fr) auto;row-gap:.2rem}.ae-nombre{grid-column:1/-1;margin-top:.35rem}.ae-dif{min-width:0}}
/* detalle de partida */
.offcanvas.detalle{--tblr-offcanvas-width:min(980px,100vw)}
@media (max-width:575.98px){.page-body{margin-top:.5rem}.card-body{padding:.75rem}}
/* Tabla del presupuesto (Tabulator) sobre los colores de Tabler, en claro y oscuro */
#tabla-obra.tabulator{font-size:.8rem;border:0;border-top:1px solid var(--tblr-border-color);background:var(--tblr-bg-surface);color:var(--tblr-body-color);margin:0}
#tabla-obra .tabulator-header,#tabla-obra .tabulator-header .tabulator-col,#tabla-obra .tabulator-footer,#tabla-obra .tabulator-calcs-holder,#tabla-obra .tabulator-calcs-holder .tabulator-row{background:var(--tblr-bg-surface-secondary);color:var(--tblr-body-color);border-color:var(--tblr-border-color)}
#tabla-obra .tabulator-tableholder,#tabla-obra .tabulator-table{background:var(--tblr-bg-surface);color:var(--tblr-body-color)}
#tabla-obra .tabulator-row{background:var(--tblr-bg-surface);border-bottom:1px solid var(--tblr-border-color-translucent);cursor:pointer;min-height:30px}
#tabla-obra .tabulator-row .tabulator-cell{border-right:0;padding:5px 8px;font-variant-numeric:tabular-nums}
/* letra y cálculo bajo el título de cada columna de la tabla de la obra */
#tabla-obra .letra{font-size:.66rem;font-weight:600;text-transform:none;letter-spacing:0;color:var(--tblr-body-color);opacity:.75;margin-top:2px;white-space:nowrap}
.guia-letras summary{cursor:pointer}
/* filas que abren su detalle */
tr[data-href]{cursor:pointer}
tr[data-href]:hover>td{background:rgba(var(--tblr-primary-rgb),.06)}
/* columnas fijas: fondo opaco (el tinte de la fila va encima) para que los números no se vean por debajo al desplazar */
#tabla-obra .tabulator-row .tabulator-cell.tabulator-frozen{background:var(--tblr-bg-surface);z-index:11}
#tabla-obra .tabulator-row.nivel-1 .tabulator-cell.tabulator-frozen{background:linear-gradient(rgba(var(--tblr-primary-rgb),.10),rgba(var(--tblr-primary-rgb),.10)),var(--tblr-bg-surface)}
#tabla-obra .tabulator-row:hover .tabulator-cell.tabulator-frozen{background:linear-gradient(rgba(var(--tblr-primary-rgb),.07),rgba(var(--tblr-primary-rgb),.07)),var(--tblr-bg-surface)!important}
#tabla-obra .tabulator-calcs-holder .tabulator-cell.tabulator-frozen,#tabla-obra .tabulator-header .tabulator-col.tabulator-frozen{background:var(--tblr-bg-surface-secondary);z-index:11}
#tabla-obra .tabulator-row.tabulator-row-even{background:var(--tblr-bg-surface)}
#tabla-obra .tabulator-row:hover{background:rgba(var(--tblr-primary-rgb),.07)!important}
#tabla-obra .tabulator-row.nivel-1{background:rgba(var(--tblr-primary-rgb),.10);font-weight:700}
#tabla-obra .tabulator-row.nivel-2{font-weight:600}
#tabla-obra .tabulator-row.nivel-3{color:var(--tblr-body-color)}
#tabla-obra .tabulator-frozen.tabulator-frozen-left{border-right:2px solid var(--tblr-border-color)!important}
#tabla-obra .tabulator-col-title{white-space:normal;font-size:.72rem;text-transform:uppercase;letter-spacing:.02em}
#tabla-obra .tabulator-calcs-bottom .tabulator-cell{font-weight:700;border-top:2px solid var(--tblr-border-color)}
#tabla-obra .con-provisorio .tabulator-cell[tabulator-field=pct_fisico],#tabla-obra .con-provisorio .tabulator-cell[tabulator-field=valor_ganado]{font-style:italic;color:var(--tblr-warning)}
#tabla-obra .tabulator-data-tree-control{border-color:var(--tblr-secondary)!important;background:transparent}
#tabla-obra .tabulator-data-tree-control .tabulator-data-tree-control-expand,#tabla-obra .tabulator-data-tree-control .tabulator-data-tree-control-collapse,#tabla-obra .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:var(--tblr-body-color)}
/* 5 bloques: encabezado del grupo en color fuerte, columnas con tinte suave */
#tabla-obra .tabulator-col.grupo>.tabulator-col-content{color:#fff;text-align:center}
#tabla-obra .tabulator-col.grupo.b-pre>.tabulator-col-content{background:#1F4E78}#tabla-obra .tabulator-col.grupo.b-com>.tabulator-col-content{background:#b54708}
#tabla-obra .tabulator-col.grupo.b-ava>.tabulator-col-content{background:#067647}#tabla-obra .tabulator-col.grupo.b-ren>.tabulator-col-content{background:#6941c6}
#tabla-obra .tabulator-col.grupo.b-pro>.tabulator-col-content{background:#b42318}
#tabla-obra .tabulator-col.b-pre:not(.grupo){background:rgba(31,78,120,.12)!important}#tabla-obra .tabulator-col.b-com:not(.grupo){background:rgba(247,144,9,.14)!important}
#tabla-obra .tabulator-col.b-ava:not(.grupo){background:rgba(18,183,106,.13)!important}#tabla-obra .tabulator-col.b-ren:not(.grupo){background:rgba(122,90,248,.13)!important}
#tabla-obra .tabulator-col.b-pro:not(.grupo){background:rgba(217,45,32,.11)!important}
#bloques .bloque{--tblr-btn-border-color:transparent}
#bloques .bloque.b-pre{--c:#1F4E78}#bloques .bloque.b-com{--c:#b54708}#bloques .bloque.b-ava{--c:#067647}#bloques .bloque.b-ren{--c:#6941c6}#bloques .bloque.b-pro{--c:#b42318}
#bloques .bloque{border:1px solid var(--c);color:var(--c);background:transparent}
[data-bs-theme=dark] #bloques .bloque{color:var(--tblr-body-color)}
#bloques .btn-check:checked+.bloque{background:var(--c);color:#fff}
#tabla-obra .arbol-flecha{display:inline-block;width:1.3em;margin-right:.25em;text-align:center;font-size:1.05rem;line-height:1;color:var(--tblr-primary);cursor:pointer;border-radius:4px}
#tabla-obra .arbol-flecha:hover{background:rgba(var(--tblr-primary-rgb),.15)}
@media (max-width:767.98px){#tabla-obra .tabulator-cell{padding:5px 4px!important}#tabla-obra .arbol-flecha{width:1em;margin-right:.1em}}
/* cabeceras: una acción principal (+ «Más»), en una sola fila también en el teléfono; volver como enlace sobre el título */
.page-header .acciones{flex-wrap:nowrap}
.page-header .acciones>.btn,.page-header .acciones>.dropdown>.btn{white-space:nowrap}
@media (max-width:575.98px){.page-header .acciones>.btn:first-child{flex:1 1 auto;justify-content:center}}
.page-pretitle a.volver{color:var(--tblr-primary);text-transform:none;font-weight:600;text-decoration:none}
.page-pretitle a.volver:hover{text-decoration:underline}
/* tablas de ingreso (líneas de OC, avance semanal) como tarjetas apiladas en el teléfono: cada celda con su rótulo (data-label) */
@media (max-width:767.98px){
.tarjetas-movil thead{display:none}
.tarjetas-movil,.tarjetas-movil tbody{display:block;width:100%}
.tarjetas-movil tbody>tr{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .75rem;padding:.75rem;border-bottom:1px solid var(--tblr-border-color)}
.tarjetas-movil tbody>tr>td{display:block;border:0!important;padding:0!important;min-width:0!important;text-align:left}
.tarjetas-movil tbody>tr>td.d-none{display:none!important}
.tarjetas-movil tbody>tr>td[data-label]::before{content:attr(data-label);display:block;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em;color:var(--tblr-secondary);margin-bottom:.15rem}
.tarjetas-movil tbody>tr>td.ancho,.tarjetas-movil tbody>tr>td.c-item,.tarjetas-movil tbody>tr>td.c-desc{grid-column:1/-1}
.tarjetas-movil tbody>tr>td input.form-control{width:100%!important;min-width:0!important}
.tarjetas-movil tbody>tr>td.n input{text-align:right}
.tarjetas-movil tbody>tr.excede{background:rgba(var(--tblr-danger-rgb),.08)}
.tarjetas-movil tbody>tr>td:empty{display:none}
.tarjetas-movil tbody>tr>td.quitar{text-align:left!important}
.tarjetas-movil select.form-select,.tarjetas-movil .ts-wrapper{width:100%!important}
}
/* firma de la OC en el teléfono: barra fija abajo con Aprobar y Rechazar */
.barra-firma{position:fixed;left:0;right:0;bottom:0;z-index:1030;display:flex;gap:.5rem;padding:.6rem 16px calc(.6rem + env(safe-area-inset-bottom));background:var(--tblr-bg-surface);border-top:1px solid var(--tblr-border-color);box-shadow:0 -4px 12px rgba(0,0,0,.08)}
.barra-firma .btn{flex:1 1 0}
@media (max-width:767.98px){body.con-barra-firma .page-body{padding-bottom:4.5rem}}
/* Tom Select usa variables --bs-*; Tabler las llama --tblr-*: así sigue el modo claro u oscuro. */
.ts-wrapper,.ts-dropdown{--bs-body-bg:var(--tblr-bg-forms);--bs-body-color:var(--tblr-body-color);--bs-border-color:var(--tblr-border-color);--bs-border-color-translucent:var(--tblr-border-color);--bs-border-radius:var(--tblr-border-radius);--bs-secondary-color:var(--tblr-secondary);--bs-tertiary-bg:var(--tblr-bg-surface-secondary);--bs-secondary-bg:var(--tblr-bg-surface-secondary)}
.ts-control,.ts-control input,.ts-dropdown{color:var(--tblr-body-color)}
.ts-dropdown{background:var(--tblr-bg-surface)}
.ts-dropdown .optgroup-header{background:var(--tblr-bg-surface);color:var(--tblr-secondary)}
.ts-dropdown .active{background:var(--tblr-primary-lt);color:var(--tblr-body-color)}
.focus .ts-control{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}
.ts-dropdown .no-results,.ts-dropdown .option{white-space:normal}
.navbar-vertical .navbar-toggler{color:#fff;border-color:rgba(255,255,255,.35)}
/* listas en el teléfono: menos margen a los lados para que la columna «Ver» quepa */
@media (max-width:575.98px){.card-table tr>td:first-child,.card-table tr>th:first-child{padding-left:.75rem}.card-table tr>td:last-child,.card-table tr>th:last-child{padding-right:.75rem}.table-sm>:not(caption)>*>*{padding-left:.4rem;padding-right:.4rem}}
/* bandeja de facturas: en pantallas medianas, solo lo necesario para decidir (las demás columnas, desde 1200 px) */
@media (max-width:1199.98px){table.bandeja tr>:nth-child(5),table.bandeja tr>:nth-child(8),table.bandeja tr>:nth-child(9),table.bandeja tr>:nth-child(10),table.bandeja tr>:nth-child(12){display:none!important}}
@media (max-width:991.98px){table.bandeja tr>:nth-child(4),table.bandeja tr>:nth-child(7){display:none!important}}

/* Menú lateral por secciones (30-10-2026): título pequeño en mayúsculas atenuado, plegable, espaciado compacto */
.menu-lateral .nav-link{padding-top:.35rem;padding-bottom:.35rem}
.menu-seccion{list-style:none;margin-top:.35rem}
.menu-titulo{display:flex;align-items:center;width:100%;background:none;border:0;padding:.45rem 1rem .2rem;color:rgba(255,255,255,.55);
  font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-align:left;cursor:pointer}
.menu-titulo:hover{color:rgba(255,255,255,.85)}
.menu-titulo .menu-flecha{margin-left:auto;opacity:.6;transition:transform .15s}
.menu-titulo .menu-flecha .icon{width:14px;height:14px}
.menu-seccion.plegada .menu-flecha{transform:rotate(-90deg)}
.menu-seccion.plegada .menu-lista{display:none}
.menu-lista{flex-direction:column;padding-left:0}
.menu-lista .badge{font-size:.7rem}
