
/* ===== assets/app.css ===== */
:root{color-scheme:dark;--fondo:#171a1f;--panel:#242830;--borde:#3a404b;--texto:#f5f7fa;--muted:#aeb6c2;--acento:#d6a516;--verde:#237343;--rojo:#8e3440}*{box-sizing:border-box}body{margin:0;background:var(--fondo);color:var(--texto);font-family:system-ui,-apple-system,"Segoe UI",sans-serif}.barra{min-height:72px;padding:14px max(24px,calc((100% - 1180px)/2));display:flex;align-items:center;justify-content:space-between;gap:20px;background:#20242a;border-bottom:1px solid var(--borde)}.marca{color:var(--acento);text-decoration:none;font-size:1.25rem;font-weight:800;letter-spacing:.04em}.marca span{color:inherit}.sesion,.acciones,.titulo-acciones{display:flex;align-items:center;gap:12px}.sesion{text-align:right}.sesion small{display:block;color:var(--muted)}.contenedor{width:min(1180px,92%);margin:38px auto}.panel{background:var(--panel);border:1px solid var(--borde);border-radius:15px;padding:28px}.login{width:min(430px,92%);margin:70px auto}.login h1{margin-top:0}.campo{margin:18px 0}.campo label{display:block;margin-bottom:7px;font-weight:650}.campo input,.campo select,.campo textarea,.busqueda{width:100%;padding:12px;border-radius:8px;border:1px solid #515967;background:#171a1f;color:#fff}.boton{display:inline-block;padding:10px 15px;border:0;border-radius:8px;background:var(--acento);color:#171a1f;text-decoration:none;font-weight:750;cursor:pointer}.boton.secundario{background:#39414d;color:#fff}.boton.peligro{background:var(--rojo);color:#fff}.boton.exito{background:var(--verde);color:#fff}.boton.pequeno{padding:7px 10px;font-size:.86rem}.ancho{width:100%}.alerta{padding:12px 14px;margin:16px 0;border-radius:8px;background:#5d252a}.alerta.exito{background:#1f5939}.rejilla,.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:18px}.tarjeta{display:block;min-height:140px;padding:22px;background:var(--panel);border:1px solid var(--borde);border-radius:14px;color:#fff;text-decoration:none}.tarjeta:hover{border-color:var(--acento);transform:translateY(-2px)}.tarjeta h2{font-size:1.1rem;margin:0 0 10px}.tarjeta p{color:var(--muted);margin:0}.apagada{opacity:.48;pointer-events:none}.titulo-acciones{justify-content:space-between;margin-bottom:20px}.tabla-wrap{overflow-x:auto}.tabla{width:100%;border-collapse:collapse}.tabla th,.tabla td{padding:13px 11px;border-bottom:1px solid var(--borde);text-align:left;vertical-align:middle}.tabla th{color:var(--muted);font-size:.82rem;text-transform:uppercase}.estado{display:inline-block;padding:4px 9px;border-radius:99px;background:#39414d;font-size:.8rem}.estado.activo{background:#1f5939}.vacio{text-align:center;padding:35px;color:var(--muted)}h1{font-size:1.8rem}p{color:var(--muted)}footer{text-align:center;color:#727b88;padding:25px}@media(max-width:720px){.barra,.sesion,.titulo-acciones{align-items:flex-start}.barra,.titulo-acciones{flex-direction:column}.sesion{width:100%;flex-wrap:wrap;text-align:left}.sesion div{width:100%}}

.marca small{display:block;font-size:.68rem;font-weight:500;letter-spacing:0;color:var(--muted);margin-top:2px}

/* ===== assets/v0.4.css ===== */
.buscador { display: flex; gap: 12px; margin-bottom: 18px; }
.buscador .busqueda { flex: 1; }
.acciones-tabla { flex-wrap: wrap; }
.seccion { margin-top: 30px; }
.acciones-formulario { margin-top: 24px; }
@media (max-width: 720px) { .buscador { flex-direction: column; } }
.tabla td { vertical-align: top; }
.modulo-etiqueta { margin: 0 0 5px; color: #aeb6c2; font-size: .85rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.inicio-erp { margin-bottom: 30px; }.inicio-erp h1 { margin-bottom: 6px; }
.grupo-menu { margin: 28px 0; }.grupo-menu > h2 { margin: 0 0 13px; color: #aeb6c2; font-size: .86rem; letter-spacing: .06em; text-transform: uppercase; }.grupo-menu > h2 i { margin-right: 7px; color: #91a3bb; }
.menu-modulos { display: grid; gap: 16px; }.menu-cuatro { grid-template-columns: repeat(4, minmax(0, 1fr)); }.menu-dos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.modulo { min-height: 172px; display: flex; gap: 15px; padding: 23px; border: 1px solid var(--borde); border-radius: 15px; background: var(--panel); color: var(--texto); text-decoration: none; transition: border-color .16s, transform .16s; }.modulo h3 { margin: 2px 0 8px; font-size: 1.02rem; }.modulo p { margin: 0; font-size: .91rem; line-height: 1.35; }a.modulo:hover { border-color: var(--acento); transform: translateY(-2px); }.modulo.proximamente { opacity: .7; }
.icono-modulo { flex: 0 0 50px; height: 50px; display: grid; place-items: center; border-radius: 13px; font-size: 1.4rem; }.icono-modulo.azul { color: #3d93ff; background: #1d467f; }.icono-modulo.cian { color: #24d0e9; background: #155362; }.icono-modulo.amarillo { color: #ffd038; background: #685516; }.icono-modulo.verde { color: #28d68c; background: #185a43; }.icono-modulo.rojo { color: #ff697c; background: #6b2938; }.icono-modulo.gris { color: #fff; background: #404752; }
@media (max-width: 1050px) { .menu-cuatro { grid-template-columns: repeat(2, minmax(0, 1fr)); } }@media (max-width: 620px) { .menu-cuatro,.menu-dos { grid-template-columns: 1fr; }.modulo { min-height: 135px; } }

/* ===== assets/v0.8.css ===== */
.panel form > .form-grid:first-of-type::before {
  content: "* Campos obligatorios";
  grid-column: 1 / -1;
  margin: 0 0 -4px;
  color: #aeb6c2;
  font-size: .9rem;
}
.panel form > .form-grid:first-of-type::before {
  color: #aeb6c2;
}
.panel form > .form-grid:first-of-type::before::first-letter {
  color: #ffce3a;
  font-weight: 800;
}
.campo-descripcion { grid-column: 1 / -1; }
.check { display: inline-flex; align-items: center; gap: 8px; color: #f5f7fa; font-weight: 650; }
.check input { width: 17px; height: 17px; accent-color: #f2b705; }
.estado.producto { background: #155362; color: #79e5f4; }
.estado.servicio { background: #685516; color: #ffe270; }

/* ===== assets/v0.10.css ===== */
/* Formulario compacto para Productos y Servicios. */
.panel:has(#tipo) { padding: 22px 28px; }
form:has(#tipo) .form-grid { gap: 12px 18px; }
form:has(#tipo) .campo { margin: 10px 0; }
form:has(#tipo) .campo-descripcion textarea { height: 58px; min-height: 58px; }
form:has(#tipo) h2 { margin: 12px 0 8px; }
form:has(#tipo) .seccion { margin-top: 18px; margin-bottom: 10px; }
form:has(#tipo) .acciones-formulario { margin-top: 16px; }

/* ===== assets/v0.11.css ===== */
.grupo-fila { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.grupo-fila .grupo-menu { margin: 28px 0; }
.grupo-fila .modulo { min-height: 128px; }
.cotizacion-form .form-grid { gap: 12px 18px; }
.cotizacion-form .campo { margin: 10px 0; }
.tabla-partidas input,.tabla-partidas select { width: 100%; min-width: 90px; padding: 9px; border: 1px solid #515967; border-radius: 7px; background: #171a1f; color: #fff; }
.tabla-partidas td { vertical-align: middle; }
.totales { width: min(100%, 340px); margin: 18px 0 18px auto; padding: 14px; border: 1px solid var(--borde); border-radius: 10px; background: #1b1f25; }
.totales div { display: flex; justify-content: space-between; gap: 20px; padding: 4px 0; }.totales div:last-child { color: #ffdc63; font-size: 1.08rem; }
.estado-cotizacion.borrador { background: #685516; color: #ffe270; }.estado-cotizacion.cancelada { background: #6b2938; color: #ff9aaa; }
@media(max-width:720px){.grupo-fila{grid-template-columns:1fr}.totales{width:100%}}

/* ===== assets/v0.13.css ===== */
/* La leyenda de obligatorios acompaña el título de la sección, sin ocupar otro renglón. */
.panel form { position: relative; }
.panel form > .form-grid:first-of-type::before {
  position: absolute;
  top: 4px;
  right: 0;
  margin: 0;
  color: #aeb6c2;
  font-size: .9rem;
  white-space: nowrap;
}
@media (max-width: 620px) {
  .panel form > .form-grid:first-of-type::before { position: static; justify-self: start; margin-bottom: 7px; }
}

/* ===== assets/v0.14.css ===== */
/* Mayor área útil vertical en Cotizaciones. */
.contenedor:has(.cotizacion-form) { margin-top: 22px; }
.contenedor:has(.cotizacion-form) .titulo-acciones { margin-bottom: 12px; }
.cotizacion-form { padding-top: 20px; }
.cotizacion-form h2:first-child { margin-top: 4px; }
.encabezado-seccion { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.encabezado-seccion h2 { margin:4px 0 0; }
.encabezado-seccion .leyenda-obligatorio { margin:4px 0 0; white-space:nowrap; }
.datos-comerciales { display:grid; grid-template-columns:repeat(15,minmax(0,1fr)); gap:0 18px; }
.datos-comerciales .campo { margin:14px 0; }
.campo-cotizacion { grid-column:span 4; }
.campo-cliente { grid-column:span 5; }
.campo-contacto { grid-column:span 6; }
.campo-version { grid-column:1 / span 3; grid-row:2; }
.campo-fecha { grid-column:4 / span 3; grid-row:2; }
.campo-moneda { grid-column:7 / span 3; grid-row:2; max-width:none; }
.campo-vigencia { grid-column:10 / span 3; grid-row:2; max-width:none; }
.campo-estado { grid-column:13 / span 3; grid-row:2; }
.campo-cotizacion input { font:inherit; font-weight:650; }
.campo-fecha input { font:inherit; font-weight:inherit; }
.estado.cotizada { background:#1f5939; }
.entrega-form { display:grid; grid-template-columns:130px 100px minmax(130px,1fr) auto; gap:7px; align-items:center; }
@media(max-width:900px){.entrega-form{grid-template-columns:1fr;}}
/* Mapa institucional de módulos ERP. */
.mapa-erp{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;max-width:1120px;margin:30px auto}.nucleo-erp{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);width:178px;height:178px;border-radius:50%;display:grid;place-content:center;text-align:center;background:#171a1f;border:14px solid #d7dde5;box-shadow:0 0 0 8px #343b46;color:#fff}.nucleo-erp strong{font-size:1.7rem;letter-spacing:.04em}.nucleo-erp span{color:var(--acento);font-size:1.05rem;font-weight:800}.sector-erp{min-height:210px;padding:22px;border-radius:20px;border:1px solid var(--borde);background:#242830;display:flex;flex-direction:column;justify-content:space-between}.sector-titulo{display:flex;align-items:center;gap:11px}.sector-titulo>i{font-size:1.9rem}.sector-titulo h2{margin:0;font-size:1.1rem}.sector-accesos{display:grid;gap:8px;margin-top:18px}.acceso-erp{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:9px;background:#171a1f;color:#fff;text-decoration:none;font-weight:650;font-size:.9rem}.acceso-erp:hover{outline:1px solid #fff}.acceso-erp.proximamente{opacity:.52}.ventas{border-top:5px solid #2679bd}.proyectos{border-top:5px solid #d33145}.produccion{border-top:5px solid #e9884b}.finanzas{border-top:5px solid #25a995}.personal{border-top:5px solid #8652a3}.reportes{border-top:5px solid #3f9fd4}.mapa-nota{text-align:center;margin:12px auto 25px;max-width:760px}@media(max-width:880px){.mapa-erp{grid-template-columns:repeat(2,minmax(0,1fr))}.nucleo-erp{display:none}}@media(max-width:560px){.mapa-erp{grid-template-columns:1fr}.sector-erp{min-height:150px}}
@media (max-width:620px) { .encabezado-seccion { align-items:flex-start; flex-direction:column; gap:4px; } }
.productos-servicios{border-top:5px solid #2679bd}.clientes-contactos{border-top:5px solid #25a995}.cotizaciones-modulo{border-top:5px solid #d6a516}
@media (max-width:850px) { .datos-comerciales { grid-template-columns:repeat(2,minmax(0,1fr)); } .campo-cotizacion,.campo-cliente,.campo-contacto,.campo-version,.campo-fecha,.campo-vigencia,.campo-moneda,.campo-estado { grid-column:auto; grid-row:auto; } }
@media (max-width:520px) { .datos-comerciales { grid-template-columns:1fr; } }
.folio-previsto{align-self:center;display:flex;align-items:baseline;gap:7px;white-space:nowrap}.folio-previsto strong{font-size:1.08rem}.pago-resumen{margin:16px 0 0 auto;max-width:350px;padding:13px 15px;border:1px solid var(--borde);border-radius:10px;background:#1a1e24}.pago-resumen div{display:flex;justify-content:space-between;gap:24px;padding:4px 0}.pago-resumen strong{font-variant-numeric:tabular-nums}.saldo-excedido{color:#ff8798}.saldo-completo{color:#5fd38a}@media(max-width:620px){.folio-previsto{align-self:flex-start}.pago-resumen{margin-left:0;width:100%;box-sizing:border-box}}
.comentarios-sistema{max-width:1120px;margin:22px auto 30px}.comentarios-sistema h2{margin:0 0 14px;font-size:1.05rem}.comentarios-sistema ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}.comentarios-sistema li{display:flex;align-items:center;gap:10px}.comentarios-sistema li>i{color:var(--acento)}.comentarios-sistema a{color:inherit;text-decoration:none}.comentarios-sistema a:hover{text-decoration:underline}
.totales-factura{margin:16px 0 0 auto;width:min(340px,100%);padding:13px 15px;border:1px solid var(--borde);border-radius:10px;background:#1a1e24}.totales-factura div{display:flex;justify-content:space-between;gap:24px;padding:4px 0}.totales-factura div:last-child{color:var(--acento);font-weight:750}
.boton{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;font:inherit;font-size:1rem;line-height:1.15}.boton i{line-height:1}.boton.pequeno{min-height:32px;font-size:.86rem}
/* Estándar de directorios: cabecera visible y acciones en una sola línea. */
.tabla-listado{max-height:560px;overflow:auto}.tabla-listado .tabla thead th{position:sticky;top:0;z-index:1;background:var(--panel);box-shadow:0 1px 0 var(--borde)}.acciones-tabla{flex-wrap:nowrap;white-space:nowrap}.acciones-tabla form{margin:0;display:inline-flex}.estado.estructura{background:#285b78}.proveedores-modulo{border-top:5px solid #7e8fa7}
@media(max-width:720px){.tabla-listado{max-height:500px}.acciones-tabla{flex-wrap:wrap;white-space:normal}}
/* Los listados comparten scroll vertical interno y encabezado fijo. */
.tabla-wrap{overflow:auto;max-height:560px}.tabla-wrap .tabla thead th{position:sticky;top:0;z-index:1;background:var(--panel);box-shadow:0 1px 0 var(--borde)}
/* V0.51: directorios con scroll siempre visible y controles de estado. */
.tabla-listado{height:520px;max-height:520px;overflow-x:auto;overflow-y:scroll}.tabla-listado .tabla th:last-child,.tabla-listado .tabla td:last-child{min-width:260px}.acciones-tabla{min-width:max-content;gap:8px}.estado-toggle{display:flex;align-items:center;gap:7px;margin:0;white-space:nowrap}.estado-toggle small{font-weight:650}.interruptor{position:relative;display:inline-flex;width:38px;height:21px;cursor:pointer}.interruptor input{opacity:0;width:0;height:0}.interruptor span{position:absolute;inset:0;border-radius:99px;background:#6a3240;transition:.18s}.interruptor span:after{content:"";position:absolute;width:15px;height:15px;left:3px;top:3px;border-radius:50%;background:#fff;transition:.18s}.interruptor input:checked+span{background:#237343}.interruptor input:checked+span:after{transform:translateX(17px)}.cantidad-estructura{text-align:center}.cantidad-estructura input{width:110px!important;text-align:center;font-variant-numeric:tabular-nums}
@media(max-width:720px){.tabla-listado{height:470px;max-height:470px}.tabla-listado .tabla th:last-child,.tabla-listado .tabla td:last-child{min-width:unset}.acciones-tabla{min-width:0}}
.panel>.tabla-wrap:not(.tabla-listado){height:520px;max-height:520px;overflow-x:auto;overflow-y:scroll}@media(max-width:720px){.panel>.tabla-wrap:not(.tabla-listado){height:470px;max-height:470px}}

/* ===== assets/v0.15.css ===== */
/* V0.52 — directorios: área de resultados independiente del desplazamiento de página. */
.tabla-wrap.tabla-listado{
  height:430px!important;
  max-height:calc(100vh - 250px)!important;
  min-height:300px;
  overflow-x:auto!important;
  overflow-y:scroll!important;
  scrollbar-gutter:stable;
}
.tabla-wrap.tabla-listado .tabla thead th{
  position:sticky;
  top:0;
  z-index:2;
  background:var(--panel);
}
@media(max-width:720px){
  .tabla-wrap.tabla-listado{height:390px!important;max-height:calc(100vh - 220px)!important;min-height:260px;}
}

/* ===== assets/v0.16.css ===== */
/* V0.53 — acciones de directorios sin quiebres de renglón. */
.tabla-wrap.tabla-listado .tabla{min-width:1180px;}
.tabla-wrap.tabla-listado .tabla th:last-child,
.tabla-wrap.tabla-listado .tabla td:last-child{width:310px;min-width:310px;}
.tabla-wrap.tabla-listado .acciones-tabla{
  display:flex!important;
  flex-flow:row nowrap!important;
  align-items:center;
  gap:8px;
  white-space:nowrap;
}
.tabla-categorias th:nth-child(3),.tabla-categorias th:nth-child(4),
.tabla-categorias td:nth-child(3),.tabla-categorias td:nth-child(4){text-align:right;}
@media(max-width:720px){
  .tabla-wrap.tabla-listado .tabla{min-width:980px;}
  .tabla-wrap.tabla-listado .tabla th:last-child,
  .tabla-wrap.tabla-listado .tabla td:last-child{width:280px;min-width:280px;}
}

/* ===== assets/v0.60.css ===== */
/* Sistema visual V0.60 */
:root{--sgi-panel-2:#1b2026;--sgi-line:#3b434e;--sgi-blue:#3c91ca}
.barra{position:sticky;top:0;z-index:50;min-height:68px}.marca small{display:block;font-size:.68rem;font-weight:500;letter-spacing:0;color:#8792a2;margin-top:2px}
.contenedor{width:min(1380px,94%);margin:28px auto}.inicio-erp{margin-bottom:24px}.inicio-erp h1{font-size:2rem;margin:.35rem 0}.inicio-erp p{margin:.3rem 0}.modulo-etiqueta{text-transform:uppercase;font-size:.76rem;letter-spacing:.055em;font-weight:800;color:#b6c2d5}
.mapa-erp{display:grid!important;grid-template-columns:repeat(5,minmax(190px,1fr))!important;gap:16px!important;align-items:stretch}.sector-erp{min-height:190px!important;border-radius:14px!important;padding:20px!important;border:1px solid var(--sgi-line)!important;background:var(--panel)!important}.sector-erp:hover{border-color:var(--acento)!important;transform:translateY(-2px)}.sector-titulo h2{font-size:1.08rem!important}.sector-accesos{margin-top:18px!important}
.migas{display:flex;align-items:center;gap:7px;color:#8f9bad;font-size:.82rem;margin:0 0 14px}.migas a{color:#8f9bad;text-decoration:none}.migas span:last-child{color:#d8dde5}.migas i{font-size:.65rem}
.tabs-modulo{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--borde);margin:0 0 22px}.tab-modulo{padding:12px 18px;color:#b8c1cd;text-decoration:none;font-weight:700;white-space:nowrap;border-bottom:3px solid transparent;border-radius:8px 8px 0 0}.tab-modulo:hover{background:#1c2127;color:#fff}.tab-modulo.activo{background:#1c2127;color:#fff;border-color:var(--acento)}
.panel{box-shadow:none}.tabla-listado{max-height:460px}.tabla thead th{position:sticky;top:0;z-index:2;background:#20252c}.acciones-tabla{flex-wrap:nowrap!important}.campo input,.campo select,.campo textarea,.busqueda,.boton{font-family:inherit;font-size:.94rem}
footer{display:none}
@media(max-width:1120px){.mapa-erp{grid-template-columns:repeat(3,minmax(210px,1fr))!important}}
@media(max-width:720px){.contenedor{width:min(94%,1380px);margin:18px auto}.mapa-erp{display:flex!important;overflow-x:auto;padding-bottom:8px}.sector-erp{min-width:245px!important}.titulo-acciones{gap:14px}.tabs-modulo{margin-left:-2px;margin-right:-2px}}

/* ===== assets/v0.61.css ===== */
.mapa-erp{margin-top:2.1rem}
input[type=number],.numero,.tabla td.numero,.tabla th.numero{text-align:right;font-variant-numeric:tabular-nums}
.tabs-formulario{display:flex;gap:.45rem;margin:0 0 1.25rem;border-bottom:1px solid #3d4654}
.tabs-formulario button{border:0;border-bottom:3px solid transparent;background:transparent;color:inherit;padding:.8rem 1rem;font:inherit;font-weight:700;cursor:pointer}
.tabs-formulario button.activo{color:#e2ad00;border-color:#e2ad00}.panel-tab[hidden]{display:none!important}
.barra-acciones-formulario{position:sticky;bottom:0;z-index:4;padding:1rem 0;background:linear-gradient(transparent,#15191f 24%)}
.form-grid.tres-columnas{grid-template-columns:repeat(3,minmax(0,1fr))}.graficas-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1rem 0}
.grafica-tarjeta{border:1px solid #3d4654;border-radius:12px;padding:1rem;background:#1b2027}.grafica-tarjeta canvas{width:100%;height:240px}.peligro-zona{border-color:#8e3544}.peligro-zona h2{color:#ff9aaa}
@media(max-width:900px){.form-grid.tres-columnas,.graficas-grid{grid-template-columns:1fr}.mapa-erp{margin-top:1.25rem}}

/* ===== assets/v0.62.css ===== */
/* Sistema de Gestión Integral V0.62 */
.mapa-erp{margin-top:3.2rem;margin-bottom:5vh}
.barra-acciones-formulario{position:static!important;bottom:auto!important;z-index:auto!important;background:none!important;padding:1.25rem 0 0!important;box-shadow:none!important}
.acciones-formulario{margin-top:1.25rem;border:0!important}
.campos-obligatorios{display:block;text-align:right;color:#b8c3d4;font-size:.84rem;margin:-.3rem 0 .8rem}
.campo-comentarios{position:relative}.campo-comentarios .campos-obligatorios{position:absolute;right:0;top:-2.2rem;white-space:nowrap}
.estado-toggle{display:inline-flex;align-items:center;gap:.55rem;margin:0}.estado-toggle small{font-size:.9rem;font-weight:700;color:#fff}.interruptor{position:relative;display:inline-block;width:40px;height:22px}.interruptor>input{opacity:0;width:0;height:0}.interruptor>span{position:absolute;inset:0;border-radius:999px;background:#555e6a;cursor:pointer;transition:.2s}.interruptor>span:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;border-radius:50%;background:#fff;transition:.2s}.interruptor>input:checked+span{background:#23804c}.interruptor>input:checked+span:before{transform:translateX(18px)}
.tabla td.numero,.tabla th.numero{text-align:right!important;font-variant-numeric:tabular-nums}.tabla td.acciones-celda{white-space:nowrap}
.panel-inventario[hidden]{display:none!important}
.panel form>.form-grid:first-of-type::before{position:static!important;top:auto!important;right:auto!important;grid-column:1/-1!important;justify-self:end;margin:0 0 -.45rem!important}
.grafica-resumen{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.25rem 0}.grafica-resumen .grafica-tarjeta{min-width:0}
@media(min-height:850px) and (min-width:1100px){.inicio-erp{margin-top:1.1rem}.mapa-erp{margin-top:4rem}}
@media(max-width:900px){.mapa-erp{margin-top:1.5rem}.grafica-resumen{grid-template-columns:1fr}.campo-comentarios .campos-obligatorios{position:static;text-align:left;margin:.2rem 0}}

/* ===== assets/v0.63.css ===== */
/* Sistema de Gestión Integral V0.63 */
.estado-proveedor{max-width:260px;margin-left:auto}
.texto-error{color:#ff9aa8;font-weight:700}
.panel>[hidden],#inventario[hidden]{display:none!important}
.panel form{position:relative}
.campos-obligatorios{clear:both;margin:0 0 .65rem!important}
.tabla td.numero,.tabla th.numero,input.numero{text-align:right!important;font-variant-numeric:tabular-nums}
.normalizar-mayusculas{text-transform:uppercase}


/* ===== assets/v0.65.css ===== */
/* Sistema de Gestión Integral V0.65 */
.mapa-erp{margin-top:9rem}
.barra-acciones-formulario{position:static!important;bottom:auto!important;background:transparent!important;padding:0!important;box-shadow:none!important}
.acciones-formulario{margin-top:1.6rem;padding-top:0;background:transparent!important}
.panel form{background:transparent}
.producto-form-panel .campos-obligatorios{display:block;text-align:right;margin:0 0 1.1rem!important}
.producto-dos-renglones{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start}
.producto-dos-renglones .campo input,
.producto-dos-renglones .campo select{min-height:46px}
.producto-dos-renglones #campoCategoria[hidden],
.panel-inventario[hidden]{display:none!important}
.acciones-tabla{display:flex;align-items:center;gap:.55rem;flex-wrap:nowrap!important}
.acciones-tabla .boton{white-space:nowrap}
input.numero,input[type=number],.tabla td.numero,.tabla th.numero{text-align:right!important;font-variant-numeric:tabular-nums}
.tabla-listado{max-height:520px;overflow:auto}
.tabla-listado .tabla thead th{position:sticky;top:0;z-index:2;background:var(--panel)}
.estado-toggle{display:inline-flex;align-items:center;gap:.55rem;white-space:nowrap}
.estado-toggle small{font-weight:750;color:#fff}
.estado-proveedor{max-width:260px;margin-left:auto;margin-bottom:1rem}
.panel-tab h2:first-child{margin-top:0}
.tabs-formulario{margin-bottom:1.5rem}
footer{display:none!important}
@media(max-width:1100px){.producto-dos-renglones{grid-template-columns:repeat(2,minmax(0,1fr))}.mapa-erp{margin-top:3.5rem}}
@media(max-width:720px){.producto-dos-renglones{grid-template-columns:1fr}.mapa-erp{margin-top:1.75rem}}

/* ===== assets/v0.66.css ===== */
/* Sistema de Gestión Integral V0.66 */
.mapa-erp{grid-template-columns:repeat(6,minmax(0,1fr))!important;gap:14px!important}
.sector-erp{padding:18px!important}
.sector-titulo h2{font-size:1rem!important}
.acceso-erp{font-size:.86rem!important;padding:8px 10px!important}
.sector-erp.rh{border-top:5px solid #7c5cff}
@media(max-width:1120px){.mapa-erp{grid-template-columns:repeat(3,minmax(210px,1fr))!important}}
@media(max-width:720px){.mapa-erp{display:flex!important;overflow-x:auto;padding-bottom:8px}.sector-erp{min-width:245px!important}}

/* ===== assets/v0.67.css ===== */
/* Sistema de Gestión Integral V0.67 */
.mapa-modulos{margin-top:7rem!important}
.mapa-modulos .modulo-principal{min-height:190px!important;color:#fff;text-decoration:none}
.modulo-principal{display:flex;flex-direction:column;justify-content:space-between}
.modulo-principal.proximamente{opacity:.45}
.entrada-modulo{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--sgi-line);font-weight:800;color:#fff}
.mapa-submodulos{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;align-items:stretch}
.mapa-submodulos .modulo-principal{min-height:150px!important;color:#fff;text-decoration:none}
.mapa-submodulos .sector-titulo{align-items:flex-start}
.mapa-submodulos .sector-titulo i{font-size:2rem}
@media(max-width:720px){.mapa-modulos{margin-top:2rem!important}}

/* ===== assets/v0.68.css ===== */
/* Sistema de Gestión Integral V0.68 */
.barra{padding-left:max(3%,calc((100% - 1380px)/2))!important;padding-right:max(3%,calc((100% - 1380px)/2))!important}
.mapa-modulos{grid-template-columns:repeat(4,minmax(190px,1fr))!important;max-width:1120px;margin-left:auto!important;margin-right:auto!important}
.mapa-modulos .sector-erp{min-height:180px!important}
.sector-erp.reportes{border-top:5px solid #3f9fd4}
.sector-erp.compras{border-top:5px solid #25a995}
.contador-modulo{display:inline-block;margin-top:1.4rem;font-size:2.7rem;line-height:1;color:#fff;font-variant-numeric:tabular-nums}
.detalle-modulo{display:inline-block;margin-left:.7rem;color:var(--muted);font-size:1rem;font-weight:800}
.modulo-principal .contador-modulo:first-of-type{margin-left:auto}
.modulo-principal .detalle-modulo:last-child{margin-right:auto}
.resumen-metricas{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:0 0 1rem}
.metrica{display:flex;align-items:center;justify-content:center;gap:.75rem;border:1px solid var(--sgi-line);background:var(--panel);border-radius:10px;padding:18px 16px}
.metrica span{color:var(--muted);font-size:1rem;font-weight:800;text-transform:none;letter-spacing:0;order:2}
.metrica strong{font-size:2.7rem;line-height:1;font-variant-numeric:tabular-nums;order:1}
.resumen-metricas.alertas-comercial{margin-top:1rem}
.metrica-alerta{color:#fff;text-decoration:none}
.metrica-alerta:hover{border-color:var(--acento)}
.filtros-comercial{display:grid;grid-template-columns:minmax(260px,1fr) repeat(2,minmax(170px,220px)) auto auto;gap:12px;align-items:center;margin-bottom:18px}
.filtros-comercial select{width:100%;padding:12px;border-radius:8px;border:1px solid #515967;background:#171a1f;color:#fff}
.filtros-comercial .boton{text-align:center;white-space:nowrap}
.tabla-cotizaciones+.acciones-tabla,.tabla-contactos+.acciones-tabla{justify-content:center}
.tabla-clientes th.col-rfc,.tabla-clientes td.col-rfc,
.tabla-clientes th.col-contactos,.tabla-clientes td.col-contactos,
.tabla-clientes th.col-estado,.tabla-clientes td.col-estado,
.tabla-clientes th.col-acciones,.tabla-clientes td.col-acciones{text-align:center}
.tabla-clientes .col-estado .estado-toggle,.tabla-clientes .col-acciones .acciones-tabla{justify-content:center}
.tabla-contactos th.col-puesto,.tabla-contactos td.col-puesto,
.tabla-contactos th.col-contacto,.tabla-contactos td.col-contacto,
.tabla-contactos th.col-estado,.tabla-contactos td.col-estado,
.tabla-contactos th.col-acciones,.tabla-contactos td.col-acciones{text-align:center}
.tabla-contactos .col-estado .estado-toggle,.tabla-contactos .col-acciones .acciones-tabla{justify-content:center}
.tabla-cotizaciones th.col-fecha,.tabla-cotizaciones td.col-fecha,
.tabla-cotizaciones th.col-vigencia,.tabla-cotizaciones td.col-vigencia,
.tabla-cotizaciones th.col-total,.tabla-cotizaciones td.col-total,
.tabla-cotizaciones th.col-estado,.tabla-cotizaciones td.col-estado,
.tabla-cotizaciones th.col-acciones,.tabla-cotizaciones td.col-acciones{text-align:center}
.tabla-cotizaciones .col-acciones .acciones-tabla{justify-content:center}
.estado-tipo-cotizacion.comercial{background:#39414d}
.estado-tipo-cotizacion.historica{background:#25526a}
.estado-tipo-cotizacion.regularizacion{background:#7b5b12}
.tabla-contactos-cliente-wrap{height:auto!important;max-height:calc(100vh - 320px)!important;min-height:0!important;overflow:auto!important}
.tabla-contactos-cliente th.col-puesto,.tabla-contactos-cliente td.col-puesto,
.tabla-contactos-cliente th.col-correo,.tabla-contactos-cliente td.col-correo,
.tabla-contactos-cliente th.col-telefono,.tabla-contactos-cliente td.col-telefono,
.tabla-contactos-cliente th.col-estado,.tabla-contactos-cliente td.col-estado,
.tabla-contactos-cliente th.col-acciones,.tabla-contactos-cliente td.col-acciones{text-align:center}
.tabla-contactos-cliente .col-estado .estado-toggle,.tabla-contactos-cliente .col-acciones .acciones-tabla{justify-content:center}
@media(max-width:980px){.mapa-modulos{grid-template-columns:repeat(2,minmax(220px,1fr))!important}}
@media(max-width:980px){.filtros-comercial{grid-template-columns:1fr 1fr}.filtros-comercial .busqueda{grid-column:1/-1}}
@media(max-width:720px){.mapa-modulos{display:flex!important;max-width:none;overflow-x:auto}.mapa-modulos .sector-erp{min-width:245px!important}.filtros-comercial{grid-template-columns:1fr}}

/* ===== assets/v0.72.css ===== */
/* Sistema de Gestión Integral V0.72 */
.barra{padding-left:max(3%,calc((100% - 1380px)/2))!important;padding-right:max(3%,calc((100% - 1380px)/2))!important}
.mapa-modulos{grid-template-columns:repeat(4,minmax(190px,1fr))!important;max-width:1120px;margin-left:auto!important;margin-right:auto!important}
.mapa-modulos .sector-erp{min-height:180px!important}
.sector-erp.reportes{border-top:5px solid #3f9fd4}
.sector-erp.compras{border-top:5px solid #25a995}
.contador-modulo{display:inline-block;margin-top:1.4rem;font-size:2.7rem;line-height:1;color:#fff;font-variant-numeric:tabular-nums}
.detalle-modulo{display:inline-block;margin-left:.7rem;color:var(--muted);font-size:1rem;font-weight:800}
.modulo-principal .contador-modulo:first-of-type{margin-left:auto}
.modulo-principal .detalle-modulo:last-child{margin-right:auto}
.resumen-metricas{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:0 0 1rem}
.metrica{display:flex;align-items:center;justify-content:center;gap:.75rem;border:1px solid var(--sgi-line);background:var(--panel);border-radius:10px;padding:18px 16px}
.metrica span{color:var(--muted);font-size:1rem;font-weight:800;text-transform:none;letter-spacing:0;order:2}
.metrica strong{font-size:2.7rem;line-height:1;font-variant-numeric:tabular-nums;order:1}
.resumen-metricas.alertas-comercial{margin-top:1rem}
.metrica-alerta{color:#fff;text-decoration:none}
.metrica-alerta:hover{border-color:var(--acento)}
.filtros-comercial{display:grid;grid-template-columns:minmax(260px,1fr) repeat(2,minmax(170px,220px)) auto auto;gap:12px;align-items:center;margin-bottom:18px}
.filtros-comercial select{width:100%;padding:12px;border-radius:8px;border:1px solid #515967;background:#171a1f;color:#fff}
.filtros-comercial .boton{text-align:center;white-space:nowrap}
.tabla-cotizaciones+.acciones-tabla,.tabla-contactos+.acciones-tabla{justify-content:center}
.tabla-clientes th.col-rfc,.tabla-clientes td.col-rfc,
.tabla-clientes th.col-contactos,.tabla-clientes td.col-contactos,
.tabla-clientes th.col-estado,.tabla-clientes td.col-estado,
.tabla-clientes th.col-acciones,.tabla-clientes td.col-acciones{text-align:center}
.tabla-clientes .col-estado .estado-toggle,.tabla-clientes .col-acciones .acciones-tabla{justify-content:center}
.tabla-contactos th.col-puesto,.tabla-contactos td.col-puesto,
.tabla-contactos th.col-contacto,.tabla-contactos td.col-contacto,
.tabla-contactos th.col-estado,.tabla-contactos td.col-estado,
.tabla-contactos th.col-acciones,.tabla-contactos td.col-acciones{text-align:center}
.tabla-contactos .col-estado .estado-toggle,.tabla-contactos .col-acciones .acciones-tabla{justify-content:center}
.tabla-cotizaciones th.col-fecha,.tabla-cotizaciones td.col-fecha,
.tabla-cotizaciones th.col-vigencia,.tabla-cotizaciones td.col-vigencia,
.tabla-cotizaciones th.col-total,.tabla-cotizaciones td.col-total,
.tabla-cotizaciones th.col-estado,.tabla-cotizaciones td.col-estado,
.tabla-cotizaciones th.col-acciones,.tabla-cotizaciones td.col-acciones{text-align:center}
.tabla-cotizaciones .col-acciones .acciones-tabla{justify-content:center}
.estado-tipo-cotizacion.comercial{background:#39414d}
.estado-tipo-cotizacion.historica{background:#25526a}
.estado-tipo-cotizacion.regularizacion{background:#7b5b12}
.tabla-contactos-cliente-wrap{height:auto!important;max-height:calc(100vh - 320px)!important;min-height:0!important;overflow:auto!important}
.tabla-contactos-cliente th.col-puesto,.tabla-contactos-cliente td.col-puesto,
.tabla-contactos-cliente th.col-correo,.tabla-contactos-cliente td.col-correo,
.tabla-contactos-cliente th.col-telefono,.tabla-contactos-cliente td.col-telefono,
.tabla-contactos-cliente th.col-estado,.tabla-contactos-cliente td.col-estado,
.tabla-contactos-cliente th.col-acciones,.tabla-contactos-cliente td.col-acciones{text-align:center}
.tabla-contactos-cliente .col-estado .estado-toggle,.tabla-contactos-cliente .col-acciones .acciones-tabla{justify-content:center}
@media(max-width:980px){.mapa-modulos{grid-template-columns:repeat(2,minmax(220px,1fr))!important}}
@media(max-width:980px){.filtros-comercial{grid-template-columns:1fr 1fr}.filtros-comercial .busqueda{grid-column:1/-1}}
@media(max-width:720px){.mapa-modulos{display:flex!important;max-width:none;overflow-x:auto}.mapa-modulos .sector-erp{min-width:245px!important}.filtros-comercial{grid-template-columns:1fr}}


/* V0.72 — jerarquía UI, señalización y scroll de contactos. */
.alertas-comercial{grid-template-columns:repeat(3,minmax(190px,1fr))!important}
.monitoreo-cotizaciones{grid-template-columns:repeat(2,minmax(190px,1fr))!important;margin-top:1rem}
.metrica-alerta{cursor:default}
.metrica-alerta:hover{border-color:var(--sgi-line)!important}
.semaforo{display:inline-block;flex:0 0 12px;width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 3px rgba(255,255,255,.05)}
.semaforo.verde{background:#2fb36d}
.semaforo.ambar{background:#d6a516}
.semaforo.rojo{background:#d64d5d}
.tabla-contactos-cliente-wrap{height:clamp(300px,calc(100vh - 320px),520px)!important;max-height:none!important;min-height:300px!important;overflow-x:auto!important;overflow-y:scroll!important;scrollbar-gutter:stable!important}
@media(max-width:720px){.alertas-comercial,.monitoreo-cotizaciones{grid-template-columns:1fr!important}.tabla-contactos-cliente-wrap{height:clamp(260px,calc(100vh - 280px),470px)!important;min-height:260px!important}}

/* ===== assets/v0.73.css ===== */
/* Sistema de Gestión Integral V0.73
   Refinamiento UI/UX del módulo Comercial. */

/* Bloques principales: contador + descripción en un solo renglón. */
.mapa-submodulos .modulo-principal{min-height:150px!important}
.indicador-modulo{display:flex;align-items:baseline;justify-content:center;gap:.7rem;width:100%;white-space:nowrap}
.indicador-modulo .contador-modulo{display:inline;margin:0!important;font-size:2.55rem;line-height:1}
.indicador-modulo .detalle-modulo{display:inline;margin:0!important;font-size:1rem;line-height:1.2}

/* Formularios Comercial: mayor densidad y jerarquía uniforme. */
.formulario-titulo{margin-bottom:14px!important}
.formulario-titulo h1{margin-bottom:.35rem}
.formulario-titulo p{margin:.25rem 0 0}
.formulario-comercial{padding:22px 28px}
.formulario-comercial .campo{margin:9px 0}
.formulario-comercial h2{margin:0 0 .7rem}
.formulario-comercial h2.seccion{margin:1.45rem 0 .7rem}
.formulario-comercial .acciones-formulario{margin-top:1.2rem}
.formulario-comercial input:read-only,
.formulario-comercial select:disabled{background:#20252c!important;border-color:#454d59!important;color:#c7cfda!important;opacity:1;cursor:not-allowed}
.campo-bloqueado label i{margin-left:.4rem;color:var(--muted);font-size:.85rem}

/* Cliente: cuatro columnas lógicas y ubicación en secuencia operativa. */
.cliente-identificacion,.cliente-ubicacion{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 18px}
.cliente-form .panel,.cliente-form{min-height:0}

/* Contacto: cinco datos en una fila; notas con ancho útil real. */
.contacto-grid{grid-template-columns:repeat(10,minmax(0,1fr));gap:10px 18px}
.contacto-grid .campo-contacto-dato{grid-column:span 2}
.contacto-grid .campo-notas-contacto{grid-column:span 6}
.contacto-grid .campo-notas-contacto textarea{min-height:86px;resize:vertical}

/* Cotizaciones: dos filas compactas y tipo de cotización legible. */
.cotizacion-form{padding:20px 28px}
.cotizacion-form .datos-comerciales{grid-template-columns:repeat(18,minmax(0,1fr));gap:0 16px}
.cotizacion-form .datos-comerciales .campo{margin:9px 0}
.cotizacion-form .campo-cotizacion{grid-column:span 4;grid-row:1}
.cotizacion-form .campo-cliente{grid-column:span 6;grid-row:1}
.cotizacion-form .campo-contacto{grid-column:span 8;grid-row:1}
.cotizacion-form .campo-version{grid-column:span 2;grid-row:2}
.cotizacion-form .campo-fecha{grid-column:span 3;grid-row:2}
.cotizacion-form .campo-moneda{grid-column:span 2;grid-row:2}
.cotizacion-form .campo-vigencia{grid-column:span 3;grid-row:2}
.cotizacion-form .campo-estado{grid-column:span 3;grid-row:2}
.cotizacion-form .campo-tipo-cotizacion{grid-column:span 5;grid-row:2;min-width:0}
.cotizacion-form .campo-tipo-cotizacion select{min-width:215px}
.cotizacion-form .campo-descripcion{margin:10px 0}
.cotizacion-form .campo-descripcion textarea{min-height:58px;resize:vertical}
.encabezado-partidas{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:1.45rem 0 .55rem}
.encabezado-partidas h2{margin:0!important}
.boton-agregar-partida{white-space:nowrap}
.tabla-partidas-wrap{max-height:390px!important;overflow:auto!important}
.tabla-partidas{min-width:1080px;table-layout:fixed}
.tabla-partidas th:nth-child(1),.tabla-partidas td:nth-child(1){width:25%}
.tabla-partidas th:nth-child(2),.tabla-partidas td:nth-child(2){width:22%}
.tabla-partidas th:nth-child(3),.tabla-partidas td:nth-child(3){width:11%}
.tabla-partidas th:nth-child(4),.tabla-partidas td:nth-child(4){width:10%}
.tabla-partidas th:nth-child(5),.tabla-partidas td:nth-child(5){width:11%}
.tabla-partidas th:nth-child(6),.tabla-partidas td:nth-child(6){width:8%}
.tabla-partidas th:nth-child(7),.tabla-partidas td:nth-child(7){width:9%;white-space:nowrap}
.tabla-partidas th:nth-child(8),.tabla-partidas td:nth-child(8){width:4%;text-align:center}
.cotizacion-form .totales{margin:12px 0 12px auto}

/* Controles y acciones consistentes dentro de Comercial. */
.formulario-comercial .boton.secundario{background:#39414d;color:#fff}
.formulario-comercial .boton:not(.secundario):not(.peligro):not(.exito){background:var(--acento);color:#171a1f}
.formulario-comercial select{overflow:hidden;text-overflow:ellipsis}

@media(max-width:1100px){
  .cliente-identificacion,.cliente-ubicacion{grid-template-columns:repeat(2,minmax(0,1fr))}
  .contacto-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .contacto-grid .campo-contacto-dato{grid-column:span 2}
  .contacto-grid .campo-notas-contacto{grid-column:1/-1}
  .cotizacion-form .datos-comerciales{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cotizacion-form .campo-cotizacion,.cotizacion-form .campo-cliente,.cotizacion-form .campo-contacto,
  .cotizacion-form .campo-version,.cotizacion-form .campo-fecha,.cotizacion-form .campo-moneda,
  .cotizacion-form .campo-vigencia,.cotizacion-form .campo-estado,.cotizacion-form .campo-tipo-cotizacion{grid-column:auto;grid-row:auto}
  .cotizacion-form .campo-tipo-cotizacion select{min-width:0}
}
@media(max-width:720px){
  .formulario-comercial{padding:18px}
  .cliente-identificacion,.cliente-ubicacion,.contacto-grid,.cotizacion-form .datos-comerciales{grid-template-columns:1fr}
  .contacto-grid .campo-contacto-dato,.contacto-grid .campo-notas-contacto{grid-column:auto}
  .encabezado-partidas{align-items:stretch;flex-direction:column}
  .boton-agregar-partida{align-self:flex-start}
  .indicador-modulo{justify-content:flex-start;white-space:normal}
}

/* ===== assets/v0.74.css ===== */
/* Sistema de Gestión Integral V0.74
   Cierre de pendientes UI/UX del módulo Comercial. */

/* Semáforos: fondo neutro en todos los bloques y acento lateral sutil por estado. */
.semaforo-bloque{background:var(--panel)!important;border-color:var(--sgi-line)!important;border-left-width:4px!important}
.semaforo-bloque.semaforo-verde{border-left-color:#2fb36d!important}
.semaforo-bloque.semaforo-ambar{border-left-color:#d6a516!important}
.semaforo-bloque.semaforo-rojo{border-left-color:#d64d5d!important}
.semaforo-bloque:hover{background:var(--panel)!important}

/* Contactos: una sola acción operativa por registro. */
.tabla-contactos .col-acciones .acciones-tabla{justify-content:flex-start}

/* Cotizaciones: nueva columna de descuento por partida sin sacrificar Unidad. */
.tabla-partidas{min-width:1180px}
.tabla-partidas th:nth-child(1),.tabla-partidas td:nth-child(1){width:22%}
.tabla-partidas th:nth-child(2),.tabla-partidas td:nth-child(2){width:20%}
.tabla-partidas th:nth-child(3),.tabla-partidas td:nth-child(3){width:9%}
.tabla-partidas th:nth-child(4),.tabla-partidas td:nth-child(4){width:9%}
.tabla-partidas th:nth-child(5),.tabla-partidas td:nth-child(5){width:10%}
.tabla-partidas th:nth-child(6),.tabla-partidas td:nth-child(6){width:8%}
.tabla-partidas th:nth-child(7),.tabla-partidas td:nth-child(7){width:8%}
.tabla-partidas th:nth-child(8),.tabla-partidas td:nth-child(8){width:10%;white-space:nowrap}
.tabla-partidas th:nth-child(9),.tabla-partidas td:nth-child(9){width:4%;text-align:center}
.cotizacion-form .totales{min-width:340px}
.cotizacion-form .totales #des{color:var(--muted)}

/* ===== assets/v0.75.css ===== */
/* Sistema de Gestión Integral V0.75
   Refinamiento UI/UX de Servicios Internos. */

/* Catálogos: listas compactas, sin altura vacía fija. */
.panel-catalogo .tabla-catalogo-wrap,
.panel-estructuras .tabla-estructuras-wrap{
  height:auto!important;
  min-height:0!important;
  max-height:520px!important;
  overflow:auto!important;
}

/* Catálogo: columnas estables y acciones legibles. */
.tabla-catalogo{table-layout:fixed;min-width:1180px!important}
.tabla-catalogo.catalogo-externo{min-width:1380px!important}
.tabla-catalogo .col-tipo{width:90px;min-width:90px}
.tabla-catalogo .col-sku{width:260px;min-width:260px}
.tabla-catalogo .col-categoria{width:155px;min-width:155px}
.tabla-catalogo .col-proveedor{width:205px;min-width:205px}
.tabla-catalogo .col-precio{width:165px;min-width:165px}
.tabla-catalogo .col-inventario{width:115px;min-width:115px}
.tabla-catalogo .col-estructura{width:110px;min-width:110px}
.tabla-catalogo .col-estado{width:125px;min-width:125px}
.tabla-catalogo .col-acciones{width:220px;min-width:220px}
.tabla-catalogo .col-estructura,
.tabla-catalogo .col-estado{vertical-align:middle}
.tabla-catalogo .col-acciones .acciones-tabla{justify-content:flex-start;gap:8px}

/* Servicios Internos comparte el estándar de indicadores de Comercial. */
.mapa-submodulos .indicador-modulo{margin-top:auto}

@media(max-width:720px){
  .panel-catalogo .tabla-catalogo-wrap,
  .panel-estructuras .tabla-estructuras-wrap{max-height:470px!important}
}

/* ===== assets/v0.76.css ===== */
/* Sistema de Gestión Integral V0.76
   Cierre de pendientes de Comercial y Servicios Internos. */

/* Comercial: acciones de Contactos centradas. */
.tabla-contactos th.col-acciones,
.tabla-contactos td.col-acciones,
.tabla-contactos-cliente th.col-acciones,
.tabla-contactos-cliente td.col-acciones{text-align:center!important}
.tabla-contactos .col-acciones .acciones-tabla,
.tabla-contactos-cliente .col-acciones .acciones-tabla{justify-content:center!important;min-width:0!important}

/* Servicios Internos: catálogo ajustado al ancho útil, sin scroll horizontal innecesario. */
.panel-catalogo .tabla-catalogo-wrap{overflow-x:hidden!important;overflow-y:auto!important}
.tabla-catalogo{width:100%!important;min-width:0!important;table-layout:fixed!important}
.tabla-catalogo.catalogo-externo{min-width:0!important}
.tabla-catalogo th,.tabla-catalogo td{overflow-wrap:anywhere}
.tabla-catalogo .col-acciones{text-align:center!important;min-width:0!important}
.tabla-catalogo th.col-acciones{text-align:center!important}
.tabla-catalogo .col-acciones .acciones-tabla{justify-content:center!important;gap:6px!important;min-width:0!important}
.tabla-catalogo .col-acciones .boton{white-space:nowrap}

/* Anchos del catálogo interno. */
.tabla-catalogo.catalogo-interno .col-tipo{width:7%!important;min-width:0!important}
.tabla-catalogo.catalogo-interno .col-sku{width:20%!important;min-width:0!important}
.tabla-catalogo.catalogo-interno .col-categoria{width:12%!important;min-width:0!important}
.tabla-catalogo.catalogo-interno .col-precio{width:13%!important;min-width:0!important}
.tabla-catalogo.catalogo-interno .col-inventario{width:9%!important;min-width:0!important}
.tabla-catalogo.catalogo-interno .col-estructura{width:8%!important;min-width:0!important}
.tabla-catalogo.catalogo-interno .col-estado{width:10%!important;min-width:0!important}
.tabla-catalogo.catalogo-interno .col-acciones{width:21%!important;min-width:0!important}

/* Anchos del catálogo externo. */
.tabla-catalogo.catalogo-externo .col-tipo{width:6%!important;min-width:0!important}
.tabla-catalogo.catalogo-externo .col-sku{width:17%!important;min-width:0!important}
.tabla-catalogo.catalogo-externo .col-categoria{width:10%!important;min-width:0!important}
.tabla-catalogo.catalogo-externo .col-proveedor{width:14%!important;min-width:0!important}
.tabla-catalogo.catalogo-externo .col-precio{width:12%!important;min-width:0!important}
.tabla-catalogo.catalogo-externo .col-inventario{width:8%!important;min-width:0!important}
.tabla-catalogo.catalogo-externo .col-estructura{width:7%!important;min-width:0!important}
.tabla-catalogo.catalogo-externo .col-estado{width:9%!important;min-width:0!important}
.tabla-catalogo.catalogo-externo .col-acciones{width:17%!important;min-width:0!important}

/* Componentes: agregar junto al encabezado, donde se trabaja. */
.tabla-componentes-wrap{height:auto!important;min-height:0!important;max-height:520px!important;overflow:auto!important}
.tabla-componentes{width:100%;table-layout:fixed;min-width:1050px}
.tabla-componentes th:nth-child(1),.tabla-componentes td:nth-child(1){width:31%}
.tabla-componentes th:nth-child(2),.tabla-componentes td:nth-child(2){width:7%}
.tabla-componentes th:nth-child(3),.tabla-componentes td:nth-child(3){width:13%}
.tabla-componentes th:nth-child(4),.tabla-componentes td:nth-child(4){width:13%}
.tabla-componentes th:nth-child(5),.tabla-componentes td:nth-child(5){width:21%}
.tabla-componentes th:nth-child(6),.tabla-componentes td:nth-child(6){width:15%;text-align:center}
.tabla-componentes .col-agregar-componente{text-align:center!important}
.tabla-componentes .boton-agregar-componente{white-space:nowrap;text-transform:none;font-size:.82rem;padding:7px 10px}
.tabla-componentes .cantidad-estructura input{width:100%!important;max-width:120px}

@media(max-width:1100px){
  .panel-catalogo .tabla-catalogo-wrap{overflow-x:auto!important}
  .tabla-catalogo{min-width:1050px!important}
  .tabla-catalogo.catalogo-externo{min-width:1180px!important}
}

/* ===== assets/v0.78.css ===== */
/* Sistema de Gestión Integral V0.77
   Cierre fino de Comercial y Servicios Internos previo a prueba desde cero. */

/* Servicios Internos: estructura legible y proporciones finales del catálogo. */
.tabla-catalogo .col-estructura{white-space:nowrap!important;overflow-wrap:normal!important;word-break:normal!important}
.tabla-catalogo.catalogo-interno .col-tipo{width:7%!important}
.tabla-catalogo.catalogo-interno .col-sku{width:19%!important}
.tabla-catalogo.catalogo-interno .col-categoria{width:12%!important}
.tabla-catalogo.catalogo-interno .col-precio{width:13%!important}
.tabla-catalogo.catalogo-interno .col-inventario{width:9%!important}
.tabla-catalogo.catalogo-interno .col-estructura{width:10%!important}
.tabla-catalogo.catalogo-interno .col-estado{width:9%!important}
.tabla-catalogo.catalogo-interno .col-acciones{width:21%!important}

.tabla-catalogo.catalogo-externo .col-tipo{width:6%!important}
.tabla-catalogo.catalogo-externo .col-sku{width:16%!important}
.tabla-catalogo.catalogo-externo .col-categoria{width:10%!important}
.tabla-catalogo.catalogo-externo .col-proveedor{width:14%!important}
.tabla-catalogo.catalogo-externo .col-precio{width:12%!important}
.tabla-catalogo.catalogo-externo .col-inventario{width:8%!important}
.tabla-catalogo.catalogo-externo .col-estructura{width:9%!important}
.tabla-catalogo.catalogo-externo .col-estado{width:8%!important}
.tabla-catalogo.catalogo-externo .col-acciones{width:17%!important}

/* Formularios de Servicios Internos: una sola familia tipográfica. */
.producto-form-panel,
.producto-form-panel input,
.producto-form-panel select,
.producto-form-panel textarea,
.producto-form-panel button,
.tabla-componentes,
.tabla-componentes input,
.tabla-componentes select,
.tabla-componentes button{font-family:inherit!important}

/* Acción equivalente a Agregar Partida: mismo nivel visual institucional. */
.tabla-componentes .boton-agregar-componente{background:var(--acento)!important;color:#171a1f!important;font-weight:750!important}

/* V0.78 — formato monetario uniforme. */
.tabla td.importe,.tabla td.importe-linea,.tabla td.col-total,.tabla th.col-total,
.cotizacion-form .totales strong{font-variant-numeric:tabular-nums}
.tabla td.importe,.tabla td.importe-linea,.tabla td.col-total,.tabla th.col-total{text-align:right!important}

/* ===== assets/v0.79.css ===== */
/* Sistema de Gestión Integral V0.79
   Cierre de Cotizaciones y refinamiento de creación de Pedidos. */

/* Cotizaciones: lectura uniforme de los campos numéricos de partidas. */
.cotizacion-form .tabla-partidas input[type="number"]{
  text-align:right;
  font-variant-numeric:tabular-nums;
}

/* Pedidos: etiqueta de entrega en un solo renglón. */
.pedido-form-panel .campo-fecha-entrega label{
  white-space:nowrap;
}

/* Calendario de pagos: título y acción en la misma línea. */
.encabezado-calendario-pagos{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-top:1.35rem;
  margin-bottom:.35rem;
}
.encabezado-calendario-pagos h2.seccion{
  margin:0;
}
.tabla-pagos thead th{
  text-align:center!important;
}
.tabla-pagos .pago-resto{
  text-align:center;
  font-variant-numeric:tabular-nums;
}

@media(max-width:720px){
  .pedido-form-panel .campo-fecha-entrega label{white-space:normal}
  .encabezado-calendario-pagos{align-items:flex-start;flex-direction:column}
}

/* ===== assets/v0.80.css ===== */
/* Sistema de Gestión Integral V0.80
   Consolidación UI/UX: Pedidos, RH, Operación, Facturas, Finanzas y Centro de Operación. */

/* Tablas sin altura artificial cuando hay pocos registros. */
.tabla-wrap.tabla-dinamica{height:auto!important;min-height:0!important;max-height:520px!important;overflow:auto!important}

/* Calendario de pagos. */
.tabla-pagos{table-layout:fixed}
.tabla-pagos th,.tabla-pagos td{text-align:center!important;vertical-align:middle}
.tabla-pagos th:nth-child(1){width:22%}.tabla-pagos th:nth-child(2){width:18%}.tabla-pagos th:nth-child(3){width:13%}.tabla-pagos th:nth-child(4){width:18%}.tabla-pagos th:nth-child(5){width:18%}.tabla-pagos th:nth-child(6){width:11%}
.tabla-pagos input{text-align:center;font-family:inherit!important}
.tabla-pagos .pago-concepto{text-transform:uppercase;text-align:left}
.entrada-moneda{display:flex;align-items:center;gap:.35rem;border:1px solid #515967;border-radius:4px;background:#171a1f;padding:0 .45rem}
.entrada-moneda span{font-weight:700}.entrada-moneda input{border:0!important;background:transparent!important;padding:.45rem .2rem!important;min-width:0}

/* Pedidos: detalle y entregas. */
.pedido-detalle-panel .tabla-entregas th{text-align:center}.pedido-detalle-panel .tabla-entregas th:first-child{text-align:left}
.pedido-detalle-panel .tabla-entregas td:nth-child(2),.pedido-detalle-panel .tabla-entregas td:nth-child(3),.pedido-detalle-panel .tabla-entregas td:nth-child(4){text-align:center;font-variant-numeric:tabular-nums}
.entrega-form{display:grid!important;grid-template-columns:145px 100px minmax(240px,1fr) auto;gap:.55rem;align-items:center;margin:0}
.entrega-form input,.entrega-form button{font-family:inherit!important}.entrega-form .entrega-observaciones{min-width:220px}

/* Recursos Humanos: formularios compactos y directorio. */
.form-grid.cuatro-columnas{grid-template-columns:repeat(4,minmax(0,1fr))}.form-grid.compacto{gap:.65rem 1rem}.form-grid.compacto .campo{margin:.45rem 0}
.personal-form-panel h2{margin:1rem 0 .55rem}.personal-form-panel .barra-acciones-formulario{margin-top:1rem}
.tabla-personal .contacto-correo,.tabla-personal .contacto-telefono{display:block}.tabla-personal .contacto-telefono{margin-top:.25rem;color:var(--muted)}
.tabla-personal th:last-child,.tabla-personal td:last-child{text-align:center}.tabla-personal td:last-child .acciones-tabla{justify-content:center!important}

/* Producción / asignaciones. */
.produccion-panel .tabla th{text-align:center}.produccion-panel .tabla th:first-child{text-align:left}
.produccion-panel .tabla td:not(:first-child){text-align:center}
.asignacion-grid{grid-template-columns:minmax(250px,1.35fr) minmax(250px,1.25fr) minmax(160px,.8fr) minmax(160px,.8fr) minmax(150px,.7fr)!important;gap:.75rem 1rem}.asignacion-grid .campo{margin:.45rem 0}
.asignacion-grid .asignacion-observaciones{grid-column:1/3}.asignacion-grid .asignacion-accion{align-self:end}
.indicadores-operacion,.indicadores-finanzas{grid-template-columns:repeat(4,minmax(180px,1fr));margin-top:1rem}

/* Facturación. */
.tabla-facturas th.col-acciones,.tabla-facturas td.col-acciones,.tabla-cobranza th.col-acciones,.tabla-cobranza td.col-acciones{text-align:center}
.tabla-facturas .moneda,.tabla-cobranza .moneda{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tabla-facturas .boton.secundario{background:#39414d;color:#fff}
.estado.pendiente{background:#6f5a0d}.estado.parcial{background:#285b78}.estado.vencida{background:#8e3440}

/* Finanzas. */
.indicadores-finanzas .metrica-monto{font-size:1.7rem!important;white-space:nowrap}

/* Registro de cobro. */
.cobranza-form-panel{padding-top:22px}.resumen-cobro{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-bottom:.5rem}.resumen-cobro p{margin:.55rem 0 0;font-size:1.05rem;font-variant-numeric:tabular-nums}.captura-cobro{grid-template-columns:1fr 1fr 1.15fr 1fr 1.45fr auto!important;gap:1rem}.captura-cobro .campo{margin:.65rem 0}.cobro-observaciones input{width:100%}.cobro-accion{align-self:end}

/* Centro de Operación: avisos accionables con semáforo. */
.comentarios-sistema{height:auto!important;min-height:0!important}.comentarios-sistema ul{gap:.5rem}.comentarios-sistema li{display:block!important}.comentario-aviso{display:grid;grid-template-columns:12px 20px 1fr auto;align-items:center;gap:.65rem;padding:.45rem .25rem;border-radius:7px;text-decoration:none!important}.comentario-aviso:hover{background:rgba(255,255,255,.035)}.comentario-aviso span{color:var(--texto)}

/* Tipografía consistente en controles operativos. */
.pedido-detalle-panel input,.pedido-detalle-panel select,.pedido-detalle-panel button,.produccion-panel input,.produccion-panel select,.produccion-panel button,.cobranza-form-panel input,.cobranza-form-panel select,.cobranza-form-panel button{font-family:inherit!important}

@media(max-width:1000px){.form-grid.cuatro-columnas,.indicadores-operacion,.indicadores-finanzas{grid-template-columns:repeat(2,minmax(0,1fr))}.asignacion-grid,.captura-cobro{grid-template-columns:repeat(2,minmax(0,1fr))!important}.asignacion-grid .asignacion-observaciones{grid-column:auto}.entrega-form{grid-template-columns:1fr 100px}.entrega-form .entrega-observaciones{min-width:0}.resumen-cobro{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:720px){.form-grid.cuatro-columnas,.indicadores-operacion,.indicadores-finanzas,.resumen-cobro,.asignacion-grid,.captura-cobro{grid-template-columns:1fr!important}.entrega-form{grid-template-columns:1fr}.tabla-pagos{min-width:820px}}

/* ===== assets/v0.81.css ===== */
/* Sistema de Gestión Integral V0.81
   Cierre de ajustes de Operación, asignaciones, entregas y soporte RH. */

/* Fechas con formato institucional DD/MM/AAAA. */
.fecha-es{font-variant-numeric:tabular-nums;letter-spacing:.02em}

/* Operación: tablas compactas y consistentes. */
.tabla-operacion th{text-align:center!important;vertical-align:middle}
.tabla-operacion th:first-child,.tabla-operacion td:first-child{text-align:left!important}
.tabla-operacion td{text-align:center;vertical-align:middle}
.tabla-operacion .texto-izquierda{text-align:left!important}
.tabla-operacion .acciones-tabla{justify-content:center!important}
.tabla-operacion .numero-entero{font-variant-numeric:tabular-nums;text-align:center}

/* Estados operativos: badge, nunca celda completa. */
.estado.por-iniciar{background:#6f5a0d;color:#ffe59a}
.estado.en-proceso{background:#285b78;color:#bfe9ff}
.estado.finalizada{background:#237343;color:#c9f5dc}
.estado.reasignada{background:#5a4675;color:#eadcff}
.estado.cancelada{background:#4f5660;color:#d9dde2}
.estado.finalizado{background:#237343;color:#c9f5dc}

/* Pedido principal. */
.tabla-pedidos-operacion{table-layout:auto}
.tabla-pedidos-operacion th{text-align:center;white-space:nowrap}
.tabla-pedidos-operacion th:nth-child(1),.tabla-pedidos-operacion td:nth-child(1),
.tabla-pedidos-operacion th:nth-child(3),.tabla-pedidos-operacion td:nth-child(3),
.tabla-pedidos-operacion th:nth-child(4),.tabla-pedidos-operacion td:nth-child(4),
.tabla-pedidos-operacion th:nth-child(5),.tabla-pedidos-operacion td:nth-child(5),
.tabla-pedidos-operacion th:nth-child(6),.tabla-pedidos-operacion td:nth-child(6),
.tabla-pedidos-operacion th:nth-child(7),.tabla-pedidos-operacion td:nth-child(7),
.tabla-pedidos-operacion th:nth-child(8),.tabla-pedidos-operacion td:nth-child(8){text-align:center}
.tabla-pedidos-operacion td:nth-child(2){min-width:210px}
.tabla-pedidos-operacion .oc-cliente{white-space:nowrap}

/* Asignación de personal. */
.asignacion-grid .asignacion-accion{align-self:end}
.asignacion-grid input,.asignacion-grid select,.asignacion-grid button{font-family:inherit!important}
.historial-asignaciones .estado{white-space:nowrap}
.historial-asignaciones th:last-child,.historial-asignaciones td:last-child{text-align:center!important}

/* Entregas. */
.tabla-entregas th.col-entrega,.tabla-entregas td.col-entrega{text-align:center!important;min-width:360px}
.tabla-entregas .estado.finalizada{display:inline-flex;align-items:center;justify-content:center;min-width:92px;font-size:.78rem;font-weight:800;letter-spacing:.025em}

/* Calendario de pagos: altura real con scroll sólo cuando hace falta. */
.calendario-pagos-wrap{height:auto!important;min-height:0!important;max-height:370px!important;overflow:auto!important}
.tabla-pagos th{text-align:center!important}
.tabla-pagos input{font-family:inherit!important}

/* RH: iniciales y columnas separadas. */
.personal-form-panel .campo-iniciales input{text-transform:uppercase;text-align:center;font-weight:800;letter-spacing:.08em}
.tabla-personal-v081 th.col-categoria,.tabla-personal-v081 td.col-categoria,
.tabla-personal-v081 th.col-estado,.tabla-personal-v081 td.col-estado,
.tabla-personal-v081 th.col-acciones,.tabla-personal-v081 td.col-acciones{text-align:center!important}
.tabla-personal-v081 .col-telefono{white-space:nowrap}

@media(max-width:1000px){
  .tabla-entregas th.col-entrega,.tabla-entregas td.col-entrega{min-width:300px}
}
.form-grid.cinco-columnas-laborales{grid-template-columns:minmax(260px,1.5fr) minmax(90px,.45fr) minmax(180px,1fr) minmax(160px,.9fr) minmax(150px,.8fr)}
@media(max-width:1100px){.form-grid.cinco-columnas-laborales{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.form-grid.cinco-columnas-laborales{grid-template-columns:1fr}}
/* Pedidos: una sola tipografía en partidas, calendario y controles. */
.pedido-detalle-panel .tabla-entregas,
.pedido-detalle-panel .tabla-entregas th,
.pedido-detalle-panel .tabla-entregas td,
.pedido-detalle-panel .tabla-entregas input,
.pedido-detalle-panel .tabla-entregas button,
.pedido-form-panel .tabla-pagos,
.pedido-form-panel .tabla-pagos th,
.pedido-form-panel .tabla-pagos td,
.pedido-form-panel .tabla-pagos input,
.pedido-form-panel .tabla-pagos button{font-family:inherit!important}

/* ===== assets/v0.83.css ===== */
/* Sistema de Gestión Integral V0.83
   Consolidación de pendientes de UI/UX, Operación, RH, Facturas y Finanzas. */

/* Controles: tipografía única. */
input,select,textarea,button{font-family:inherit}

/* Filtros de Pedidos y Personal. */
.filtros-pedidos,.filtros-personal{
  display:grid;
  grid-template-columns:minmax(300px,1fr) minmax(170px,220px) minmax(170px,220px) auto auto;
  gap:12px;align-items:center;margin-bottom:18px
}
.filtros-pedidos select,.filtros-personal select{
  width:100%;padding:12px;border-radius:8px;border:1px solid #515967;background:#171a1f;color:#fff
}
.filtros-pedidos .boton,.filtros-personal .boton{white-space:nowrap;text-align:center}

/* Pedidos: tipografía uniforme en Partidas y Entregas. */
.pedido-detalle-panel .entrega-form input,
.pedido-detalle-panel .entrega-form button{
  font-family:inherit!important;font-size:.94rem!important;font-weight:400;line-height:1.2
}
.pedido-detalle-panel .entrega-form button{font-weight:700}

/* Calendario de pagos: altura por contenido, scroll sólo al superar el máximo. */
.calendario-pagos-wrap{
  height:auto!important;min-height:0!important;max-height:390px!important;
  overflow-x:auto!important;overflow-y:auto!important
}
.calendario-pagos-wrap .tabla-pagos-detalle{margin-bottom:0}
.calendario-pagos-wrap .tabla-pagos-detalle th,
.calendario-pagos-wrap .tabla-pagos-detalle td{text-align:center!important;vertical-align:middle}

/* Cantidades enteras y campos de solo lectura. */
.entero-estricto{text-align:center;font-variant-numeric:tabular-nums}
.campo-solo-lectura{background:#20242b!important;color:#d9dde2!important;cursor:not-allowed}

/* Facturas: estados normalizados. */
.estado.emitida{background:#6f5a0d;color:#ffe59a}
.estado.cobrada{background:#237343;color:#c9f5dc}
.estado.vencida{background:#8e3440;color:#ffd7dc}
.estado.cancelada{background:#4f5660;color:#d9dde2}

/* Listado de facturas: encabezados y contenidos centrados. */
.tabla-facturas-v083 th,.tabla-facturas-v083 td{text-align:center!important;vertical-align:middle}
.tabla-facturas-v083 .moneda{text-align:center!important;font-variant-numeric:tabular-nums;white-space:nowrap}
.tabla-facturas-v083 .col-acciones{text-align:center!important}

/* Detalle de factura. */
.tabla-factura-detalle th{text-align:center!important}
.tabla-factura-detalle th:first-child,.tabla-factura-detalle td:first-child{text-align:left!important}
.tabla-factura-detalle td:nth-child(2){text-align:center!important}
.tabla-factura-detalle td.moneda{text-align:right!important;white-space:nowrap;font-variant-numeric:tabular-nums}

/* Registrar factura: cabecera de datos centrada; concepto a la izquierda e importe a la derecha. */
.factura-datos-grid .campo{text-align:center}
.factura-datos-grid .campo label{display:block;text-align:center}
.factura-datos-grid .campo input{text-align:center}
.tabla-registro-factura th{text-align:center!important;vertical-align:middle}
.tabla-registro-factura td{vertical-align:middle}
.tabla-registro-factura td:first-child{text-align:left!important}
.tabla-registro-factura td:nth-child(2),
.tabla-registro-factura td:nth-child(3),
.tabla-registro-factura td:nth-child(4),
.tabla-registro-factura td:nth-child(5){text-align:center!important}
.tabla-registro-factura td:nth-child(6){text-align:right!important;font-variant-numeric:tabular-nums;white-space:nowrap}
.tabla-registro-factura .cantidad-factura{width:84px;text-align:center}

/* Cobranza: TOTAL centrado y formulario sin truncar la forma de pago. */
.tabla-cobranza th:nth-child(5),.tabla-cobranza td:nth-child(5),.tabla-cobranza .col-total-cobranza{text-align:center!important}
.captura-cobro{grid-template-columns:1fr 1fr minmax(285px,1.4fr) 1fr 1.45fr auto!important}
.captura-cobro select[name="forma_pago"]{min-width:285px}

/* RH: directorio simplificado y Estado centrado. */
.tabla-personal-v083 th.col-categoria,.tabla-personal-v083 td.col-categoria,
.tabla-personal-v083 th.col-estado,.tabla-personal-v083 td.col-estado,
.tabla-personal-v083 th.col-acciones,.tabla-personal-v083 td.col-acciones{text-align:center!important}
.tabla-personal-v083 .col-correo{min-width:260px}
.tabla-personal-v083 .col-telefono{white-space:nowrap}
.tabla-personal-v083 th:last-child,.tabla-personal-v083 td:last-child{width:120px!important;min-width:120px!important;text-align:center!important}
.tabla-personal-v083 .col-estado .estado-toggle{display:flex;justify-content:center!important;align-items:center;gap:.5rem;width:100%;margin:0 auto}
.tabla-personal-v083 .col-acciones .acciones-tabla{justify-content:center!important}

/* Indicadores de módulo: número + descripción en una sola línea. */
.mapa-submodulos .indicador-modulo{display:flex;align-items:baseline;gap:.55rem;flex-wrap:nowrap}
.mapa-submodulos .indicador-modulo .detalle-modulo{white-space:nowrap}

/* Comentarios del sistema: prioridad visible, clic y altura dinámica. */
.comentarios-sistema{height:auto!important;min-height:0!important;max-height:none!important}
.comentarios-sistema ul{margin-bottom:0}
.comentario-aviso{border-left:3px solid transparent;padding-left:.65rem!important}
.comentario-aviso:has(.semaforo.rojo){border-left-color:#c64b59}
.comentario-aviso:has(.semaforo.ambar){border-left-color:#d7a900}
.comentario-aviso:has(.semaforo.verde){border-left-color:#3b9662}
.comentario-aviso:has(.semaforo.gris){border-left-color:#737b86}

@media(max-width:1050px){
  .filtros-pedidos,.filtros-personal{grid-template-columns:1fr 1fr}
  .filtros-pedidos .busqueda,.filtros-personal .busqueda{grid-column:1/-1}
  .captura-cobro{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .captura-cobro select[name="forma_pago"]{min-width:0}
}
@media(max-width:720px){
  .filtros-pedidos,.filtros-personal{grid-template-columns:1fr}
  .filtros-pedidos .busqueda,.filtros-personal .busqueda{grid-column:auto}
  .captura-cobro{grid-template-columns:1fr!important}
  .tabla-personal-v083 .col-correo{min-width:220px}
  .mapa-submodulos .indicador-modulo{flex-wrap:wrap}
}

/* ===== V0.84: jerarquía del Panel de Gestión y estados centralizados ===== */
.estado.parcial,
.badge-estado.parcial,
.estado-pedido.parcial { color:#8ec8ff; border-color:rgba(92,169,255,.48); background:rgba(50,126,210,.16); }
.mapa-modulos { align-items:stretch; }
/* V0.85 · Operación V1 */
.estado.aceptada{background:#214d65;color:#d8f2ff}
.estado.en-proceso{background:#245f87;color:#eaf7ff}
.estado.finalizada{background:#1f8a4c;color:#fff}
.estado.reasignada{background:#4b5563;color:#fff}
.boton-notificaciones{position:relative;min-width:42px;justify-content:center}
.contador-notificaciones{position:absolute;top:-7px;right:-7px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:#eab308;color:#111827;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center}
.lista-notificaciones{display:grid;gap:8px}
.notificacion-item{display:flex;justify-content:space-between;gap:24px;padding:14px 16px;border:1px solid var(--borde,#3b4350);border-radius:10px;text-decoration:none;color:inherit;background:rgba(255,255,255,.015)}
.notificacion-item.no-leida{border-left:4px solid #eab308;background:rgba(234,179,8,.05)}
.notificacion-item p{margin:5px 0 0}
.notificacion-item small{white-space:nowrap}
.operacion-kpis-v1{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}
.operacion-accesos-v1{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1000px){.operacion-kpis-v1,.operacion-accesos-v1{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.operacion-kpis-v1,.operacion-accesos-v1{grid-template-columns:1fr}}
.tabla .centro{text-align:center}
.estado-toggle-centro{justify-content:center}

/* V0.85.1 · Personal: identidad separada */
.personal-identidad-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
@media (max-width:1100px){.personal-identidad-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:700px){.personal-identidad-grid{grid-template-columns:1fr;}}

/* ===== V0.87 · Navegación lateral persistente ===== */
:root{--sidebar-w:248px;--topbar-h:74px;--sidebar-bg:#1d2127;--sidebar-hover:#292e36;--sidebar-active:#323844}
.barra-v087{position:sticky;top:0;z-index:40;min-height:var(--topbar-h);width:100%;padding-left:30px!important;padding-right:30px!important}.barra-izquierda{display:flex;align-items:center;gap:12px}.sidebar-toggle{display:none;border:0;background:#39414d;color:#fff;border-radius:8px;width:42px;height:42px;font-size:1.35rem;cursor:pointer}.erp-shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:calc(100vh - var(--topbar-h))}.sidebar{position:sticky;top:var(--topbar-h);align-self:start;height:calc(100vh - var(--topbar-h));overflow-y:auto;background:var(--sidebar-bg);border-right:1px solid var(--borde);padding:16px 12px}.sidebar-nav{display:flex;flex-direction:column;gap:5px}.sidebar-grupo{border-radius:10px}.sidebar-enlace,.sidebar-submenu a{display:flex;align-items:center;gap:11px;text-decoration:none;color:#dbe1ea;border-radius:8px;transition:.15s ease;letter-spacing:0}.sidebar-enlace{padding:10px 12px;font-size:1rem;font-weight:600;line-height:1.35}.sidebar-enlace i{width:22px;text-align:center;font-size:1rem;opacity:.92}.sidebar-grupo{margin-bottom:2px}.sidebar-grupo:hover>.sidebar-enlace{background:var(--sidebar-hover)}.sidebar-grupo.activo>.sidebar-enlace{background:var(--sidebar-active);color:#fff;box-shadow:inset 3px 0 0 var(--acento)}.sidebar-submenu{padding:6px 0 9px 19px;display:flex;flex-direction:column;gap:2px}.sidebar-submenu a{padding:7px 9px;font-size:.875rem;font-weight:400;line-height:1.4;color:#aeb8c5}.sidebar-submenu a:hover{background:var(--sidebar-hover);color:#fff}.sidebar-submenu i{width:18px;text-align:center;font-size:.88rem;opacity:.82}.contenido-v087{width:auto!important;max-width:none!important;margin:0!important;padding:28px clamp(24px,3vw,46px) 44px;min-width:0}.erp-con-sesion .mapa-modulos{margin-top:2.3rem!important}.erp-con-sesion .inicio-erp{margin-top:0}.erp-con-sesion .titulo-acciones{margin-top:0}.erp-con-sesion .migas{margin-top:0}.erp-con-sesion .barra .marca{font-size:1.12rem}.erp-con-sesion .barra .marca small{font-size:.68rem}.erp-con-sesion .sesion{margin-left:auto}.erp-con-sesion .sesion form{margin:0}
@media(max-width:1050px){:root{--sidebar-w:220px}.cambiar-empresa span{display:none}.erp-con-sesion .sesion>div{display:none}}
@media(max-width:820px){.sidebar-toggle{display:inline-grid;place-items:center}.erp-shell{display:block}.sidebar{position:fixed;left:0;top:var(--topbar-h);z-index:50;width:min(290px,84vw);transform:translateX(-105%);transition:transform .2s ease;box-shadow:10px 0 30px rgba(0,0,0,.35)}body.sidebar-abierto .sidebar{transform:translateX(0)}.contenido-v087{padding:22px 18px 36px}.barra-v087{padding-left:16px!important;padding-right:16px!important}.erp-con-sesion .barra .marca{font-size:.98rem}.erp-con-sesion .barra .marca small{display:none}.erp-con-sesion .sesion .boton span{display:none}.erp-con-sesion .sesion{gap:7px}.erp-con-sesion .sesion .boton{padding:10px 12px}}


/* ===== V0.88 · Plataforma Operativa / sistema visual transversal ===== */
:root{
  --kpi-bg:#2a3038;
  --action-bg:#20252c;
  --action-hover:#282f38;
  --acento-suave:rgba(214,165,22,.14);
}
/* Sidebar */
.sidebar-nav{gap:7px}
.sidebar-grupo{margin-bottom:5px}
.sidebar-grupo.activo>.sidebar-enlace{box-shadow:inset 3px 0 0 var(--acento);background:var(--sidebar-active)}
.sidebar-submenu a{position:relative;padding-left:14px}
.sidebar-submenu a.activo{color:#fff;background:rgba(255,255,255,.035)}
.sidebar-submenu a.activo::before{content:"";position:absolute;left:1px;top:50%;width:6px;height:6px;border-radius:50%;background:var(--acento);transform:translateY(-50%)}
/* Encabezados de módulo */
.titulo-acciones{margin-bottom:22px}
.titulo-acciones h1,.inicio-erp h1{margin:0 0 5px;font-size:1.8rem;letter-spacing:-.015em}
.titulo-acciones p,.inicio-erp p{margin:0}
.modulo-etiqueta,.migas,.tabs-modulo{display:none!important}
/* KPIs: informan, no navegan */
.dashboard-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 24px}
.operacion-kpis-v1{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:24px}
.kpi-card{position:relative;min-height:92px;padding:15px 17px;border:1px solid #3b424d;border-radius:12px;background:var(--kpi-bg);display:flex;flex-direction:column;justify-content:center;gap:3px;box-shadow:none}
.kpi-card strong{font-size:1.45rem;line-height:1.05;font-variant-numeric:tabular-nums;color:#fff}
.kpi-card span{font-size:.86rem;line-height:1.25;color:#abb5c2}
.kpi-card>.semaforo{position:absolute;right:14px;top:14px}
.kpi-verde{border-color:rgba(59,150,98,.34)}
.kpi-ambar{border-color:rgba(214,165,22,.44)}
.kpi-rojo{border-color:rgba(198,75,89,.46)}
.dashboard-kpis-global{grid-template-columns:repeat(4,minmax(0,1fr))}
/* Accesos: claramente navegables */
.dashboard-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:0 0 28px}
.action-card{min-height:150px;padding:20px;border:1px solid var(--borde);border-radius:15px;background:var(--action-bg);color:var(--texto);text-decoration:none;display:flex;flex-direction:column;justify-content:space-between;transition:background .16s,border-color .16s,transform .16s}
.action-card:hover{background:var(--action-hover);border-color:rgba(214,165,22,.65);transform:translateY(-2px)}
.action-card-title{display:flex;align-items:center;gap:12px}.action-card-title>i{font-size:1.22rem;color:#d8dde5}.action-card-title h2{margin:0;font-size:1.03rem;font-weight:650}
.action-card-meta{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;color:#98a3b1;font-size:.86rem;line-height:1.3}.action-card-arrow{color:var(--acento);font-size:1.05rem;flex:0 0 auto}
.admin-actions{grid-template-columns:repeat(4,minmax(0,1fr))}
/* Dashboard ejecutivo */
.encabezado-modulo{margin-bottom:22px}.alertas-dashboard{margin-top:8px}.alertas-dashboard h2{margin:0 0 14px;font-size:1rem}.lista-alertas-dashboard{display:grid;gap:8px}.alerta-dashboard{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--borde);border-radius:9px;color:var(--texto);text-decoration:none;background:#20252c}.alerta-dashboard:hover{border-color:#596270}
/* Badges globales */
.estado,.badge-estado,.estado-pedido{font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.estado.abierto,.estado.emitida{background:#5e511d;color:#ffe787}.estado.por-iniciar{background:#244e75;color:#dceeff}.estado.aceptada{background:#20566a;color:#d9f6ff}.estado.en-proceso,.estado.parcial{background:#245f87;color:#eaf7ff}.estado.finalizada,.estado.finalizado,.estado.cobrada{background:#1f8a4c;color:#fff}.estado.vencida{background:#8e3440;color:#fff}.estado.cancelada,.estado.cancelado{background:#4b515a;color:#e3e7ed}.estado.reasignada{background:#624a78;color:#f3e9ff}
/* Formularios */
.form-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 18px}.campo{margin:10px 0}.campo label{font-size:.88rem}.acciones-formulario{display:flex;gap:10px;align-items:center;margin-top:20px}
/* Tablas: base común; clases específicas pueden sobrescribir */
.tabla th{text-align:center}.tabla th:first-child{text-align:left}.tabla td{line-height:1.32}.tabla td.acciones-celda,.tabla th.acciones-celda{text-align:center}.tabla td.numero,.tabla th.numero{text-align:right}.tabla td.centro,.tabla th.centro{text-align:center}
@media(max-width:1180px){.dashboard-kpis,.dashboard-kpis-global,.dashboard-actions,.admin-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.dashboard-kpis,.dashboard-kpis-global,.dashboard-actions,.admin-actions,.operacion-kpis-v1{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.action-card{min-height:125px}.kpi-card{min-height:82px}}

/* ===== V0.89 · Retícula adaptativa y densidad visual ===== */
:root{
  --kpi-bg:#252b32;
  --kpi-border:#343b45;
  --action-bg:#1e242b;
}
/* KPIs: franja horizontal compacta y claramente informativa */
.dashboard-kpis{gap:10px;margin-bottom:30px}
.dashboard-kpis.kpis-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:780px}
.dashboard-kpis.kpis-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.dashboard-kpis.kpis-6,.operacion-kpis-v1.kpis-6{grid-template-columns:repeat(6,minmax(0,1fr))}
.dashboard-kpis.kpis-8,.dashboard-kpis-global.kpis-8{grid-template-columns:repeat(8,minmax(0,1fr))}
.kpi-card{
  min-height:64px;
  padding:10px 14px;
  border-radius:9px;
  border-color:var(--kpi-border);
  background:var(--kpi-bg);
  flex-direction:row;
  align-items:center;
  justify-content:flex-start;
  gap:9px;
  white-space:normal;
}
.kpi-card strong{font-size:1.28rem;flex:0 0 auto}
.kpi-card span{font-size:.79rem;line-height:1.15;color:#aeb8c5}
.kpi-card>.semaforo{right:9px;top:9px;width:9px;height:9px}
.kpi-verde{border-color:rgba(59,150,98,.30)}
.kpi-ambar{border-color:rgba(214,165,22,.40)}
.kpi-rojo{border-color:rgba(198,75,89,.42)}

/* Accesos: retícula ajustada al número real de destinos */
.dashboard-actions{gap:14px;margin-bottom:28px}
.dashboard-actions.actions-1{grid-template-columns:minmax(260px,390px)}
.dashboard-actions.actions-2{grid-template-columns:repeat(2,minmax(260px,390px))}
.dashboard-actions.actions-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.dashboard-actions.actions-4,.admin-actions.actions-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.dashboard-actions.actions-5,.operacion-accesos-v1.actions-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.action-card{min-height:116px;padding:16px 18px;border-radius:12px}
.action-card-title{gap:10px}
.action-card-title>i{font-size:1.12rem}
.action-card-title h2{font-size:.98rem}
.action-card-meta{font-size:.81rem;gap:10px}

/* Mantener aire claro entre indicadores y navegación */
.titulo-acciones{margin-bottom:20px}

@media(max-width:1450px){
  .dashboard-kpis.kpis-8,.dashboard-kpis-global.kpis-8{grid-template-columns:repeat(4,minmax(0,1fr))}
  .dashboard-actions.actions-5,.operacion-accesos-v1.actions-5{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:1180px){
  .dashboard-kpis.kpis-6,.operacion-kpis-v1.kpis-6{grid-template-columns:repeat(3,minmax(0,1fr))}
  .dashboard-kpis.kpis-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-actions.actions-3,.dashboard-actions.actions-4,.admin-actions.actions-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-actions.actions-5,.operacion-accesos-v1.actions-5{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .dashboard-kpis.kpis-2,.dashboard-kpis.kpis-4,.dashboard-kpis.kpis-6,.dashboard-kpis.kpis-8,
  .dashboard-kpis-global.kpis-8,.operacion-kpis-v1.kpis-6,
  .dashboard-actions.actions-1,.dashboard-actions.actions-2,.dashboard-actions.actions-3,
  .dashboard-actions.actions-4,.admin-actions.actions-4,.dashboard-actions.actions-5,.operacion-accesos-v1.actions-5{
    grid-template-columns:1fr;max-width:none
  }
  .kpi-card{min-height:58px}
  .action-card{min-height:104px}
}


/* ===== V0.90 · Consolidación visual y homologación transversal ===== */
/* KPI: una sola línea y contenido cargado a la derecha */
.kpi-card{justify-content:flex-end;text-align:right;white-space:nowrap;padding-right:14px}
.kpi-card:has(>.semaforo){padding-right:28px}
.kpi-card strong{font-size:1.25rem}
.kpi-card span{font-size:.77rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-kpis-global.kpis-8 .kpi-card{gap:7px}
.dashboard-kpis-global.kpis-8 .kpi-card strong{font-size:1.18rem}
.dashboard-kpis-global.kpis-8 .kpi-card span{font-size:.73rem}
/* Bloques de Operación homologados con Comercial y Facturación */
.operacion-accesos-v1 .action-card{min-height:116px;padding:16px 18px}
.operacion-accesos-v1 .action-card-meta{font-weight:400;color:#98a3b1}
/* Personal: alineación visual estándar */
.tabla-personal th.centro,.tabla-personal td.centro{text-align:center!important}
.tabla-personal .col-estado .estado-toggle{justify-content:center}
@media(max-width:1450px){
  .dashboard-kpis-global.kpis-8{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:700px){
  .kpi-card{justify-content:flex-start;text-align:left;white-space:normal}
  .kpi-card span{white-space:normal;overflow:visible}
}

/* V0.93 — homologación visual */
.dashboard-kpis.kpis-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.dashboard-kpis.kpis-5,.operacion-kpis-v1.kpis-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.dashboard-kpis-global.kpis-8{grid-template-columns:repeat(4,minmax(0,1fr))}
.lista-notificaciones:has(> .vacio){min-height:120px;display:flex;align-items:center;justify-content:center}
@media(max-width:1180px){.dashboard-kpis.kpis-3,.dashboard-kpis.kpis-5,.operacion-kpis-v1.kpis-5{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.dashboard-kpis.kpis-3,.dashboard-kpis.kpis-5,.operacion-kpis-v1.kpis-5{grid-template-columns:1fr}}
\n\n/* ===== V0.94 · Homologación GUI ===== */\n/* Dos elementos aprovechan todo el ancho disponible. */\n.dashboard-kpis.kpis-2{max-width:none;width:100%;grid-template-columns:repeat(2,minmax(0,1fr))}\n.dashboard-actions.actions-2{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}\n/* Listados: centrado vertical consistente. */\n.tabla tbody td{vertical-align:middle}\n.tabla-contactos td,.tabla-contactos th{vertical-align:middle}\n.tabla-contactos .col-telefono{text-align:center;white-space:nowrap}\n.tabla-contactos .col-correo{text-align:left}\n.tabla-contactos .col-estado,.tabla-contactos .col-acciones{text-align:center}\n.tabla-contactos td:first-child strong{font-weight:650}\n/* Contacto: 4 campos arriba; celular + notas debajo. */\n.contacto-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 18px}\n.contacto-grid .campo-contacto-dato{grid-column:span 1}\n.contacto-grid .campo-contacto-celular{grid-column:span 1}\n.contacto-grid .campo-notas-contacto{grid-column:span 3}\n.contacto-grid .campo-notas-contacto textarea{min-height:48px;resize:vertical}\n/* Cotizaciones compactas. */\n.tabla-cotizaciones td{vertical-align:middle}\n.cotizacion-identificador{white-space:nowrap}\n.cotizacion-identificador span{font-size:.82rem;font-weight:400;color:#aeb8c5}\n.cotizacion-form .campo-descripcion textarea{min-height:52px}\n/* KPI ejecutivo: textos completos, conservar dos filas de cuatro. */\n.dashboard-kpis-global.kpis-8 .kpi-card span{font-size:.71rem}\n@media(max-width:1180px){.contacto-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contacto-grid .campo-notas-contacto{grid-column:span 2}}\n@media(max-width:700px){.dashboard-kpis.kpis-2,.dashboard-actions.actions-2,.contacto-grid{grid-template-columns:1fr}.contacto-grid .campo-notas-contacto{grid-column:auto}}\n

/* ===== V0.95 · Correcciones de revisión ===== */
.dashboard-kpis.kpis-2,.dashboard-actions.actions-2{max-width:none;width:100%;grid-template-columns:repeat(2,minmax(0,1fr))}
.tabla-clientes .col-telefono,.tabla-clientes .col-contactos{text-align:center;vertical-align:middle;white-space:nowrap}
.campos-obligatorios{display:block;text-align:right;color:var(--texto-suave,#9aa4b2);font-size:.78rem;margin-bottom:8px}
.panel-heading-inline{display:flex;align-items:center;justify-content:space-between;gap:16px}.panel-heading-inline .campos-obligatorios{margin:0}.panel-heading-inline h2{margin:0}
.contacto-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;align-items:end}.contacto-grid .campo-notas-contacto{grid-column:span 3!important}.contacto-grid textarea{min-height:48px!important}
.cotizacion-form .campo-cotizacion-version{grid-column:span 2}.cotizacion-form .resumen-totales{margin-bottom:8px}.cotizacion-form .acciones-formulario{margin-top:12px}
.vacaciones-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end}.vacaciones-grid .campo-dias{grid-column:span 1}.vacaciones-grid .campo-observaciones{grid-column:span 2}.vacaciones-grid .campo-submit{grid-column:span 1}.panel-vacaciones-form{padding-bottom:18px}.tabla-listado .vacio{padding:22px 16px}
@media(max-width:900px){.vacaciones-grid,.contacto-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.contacto-grid .campo-notas-contacto{grid-column:span 2!important}}
@media(max-width:600px){.dashboard-kpis.kpis-2,.dashboard-actions.actions-2,.vacaciones-grid,.contacto-grid{grid-template-columns:1fr!important}.contacto-grid .campo-notas-contacto,.vacaciones-grid .campo-observaciones{grid-column:auto!important}}


/* ===== V0.96 · Correcciones posteriores a revisión V0.95 ===== */
/* Regla transversal: cualquier grupo de exactamente 2 KPI ocupa el ancho completo 50/50. */
.dashboard-kpis.kpis-2{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:none!important;width:100%!important}
.monitoreo-cotizaciones{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:none!important;width:100%!important}
/* Contactos: nombre en peso normal y segunda fila perfectamente alineada. */
.tabla-contactos tbody td:first-child,.tabla-contactos tbody td:first-child strong{font-weight:400!important}
.contacto-grid{align-items:start!important}.contacto-grid .campo-contacto-celular,.contacto-grid .campo-notas-contacto{align-self:start;margin-top:18px!important}
/* Cotización: identidad documental primero y compacta. */
.cotizacion-form .campo-cotizacion-version{grid-column:span 4!important;grid-row:1!important}
.cotizacion-form .campo-cliente{grid-column:span 6!important;grid-row:1!important}
.cotizacion-form .campo-contacto{grid-column:span 8!important;grid-row:1!important}
/* Personal: correo centrado. */
.tabla-personal .col-correo{text-align:center!important}
/* Vacaciones: no reservar altura de directorio cuando no hay registros. */
.panel-vacaciones-listado .tabla-wrap{height:auto!important;min-height:0!important;max-height:430px!important;overflow:auto!important}
.panel-vacaciones-listado .vacio{padding:22px 16px!important}
/* Barra de búsqueda estándar basada en Clientes. */
.buscador-estandar{display:grid!important;grid-template-columns:minmax(300px,1fr) auto auto!important;gap:12px!important;align-items:center!important;margin-bottom:18px!important}
@media(max-width:700px){.dashboard-kpis.kpis-2,.monitoreo-cotizaciones{grid-template-columns:1fr!important}.buscador-estandar{grid-template-columns:1fr!important}}


/* ===== V0.97 · Correcciones P01–P11 de revisión V0.96 ===== */
/* P01 Contactos: teléfono y correo centrados. */
.tabla-contactos th.col-telefono,.tabla-contactos td.col-telefono,
.tabla-contactos th.col-correo,.tabla-contactos td.col-correo{text-align:center!important}
/* P02 Contacto: conservar una sola leyenda explícita de campos obligatorios. */
.contacto-form form>.form-grid:first-of-type::before{content:none!important;display:none!important}
/* P03 Cotizaciones: identificador compacto CT-00000 - A. */
.cotizacion-identificador span{color:inherit!important;font-size:inherit!important;font-weight:inherit!important}
/* P04-P05 Cotización: dos renglones de cuatro campos en orden comercial aprobado. */
.cotizacion-form .datos-comerciales-v097{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px 16px!important}
.cotizacion-form .datos-comerciales-v097>.campo{grid-column:auto!important;grid-row:auto!important;min-width:0!important}
/* P06-P07 Proveedores: nombre descriptivo izquierda; resto centrado. */
.tabla-proveedores th,.tabla-proveedores td{text-align:center!important;vertical-align:middle!important}
.tabla-proveedores th.col-proveedor,.tabla-proveedores td.col-proveedor{text-align:left!important}
.tabla-proveedores .estado-toggle,.tabla-proveedores .acciones-tabla{justify-content:center!important}
/* P11 Barra sin filtros: mismos botones y espaciado del patrón Clientes. */
.buscador-estandar{grid-template-columns:minmax(260px,1fr) minmax(170px,220px) auto!important;gap:12px!important}
.buscador-estandar .boton{width:100%!important;text-align:center!important;justify-content:center!important;white-space:nowrap!important}
@media(max-width:980px){.cotizacion-form .datos-comerciales-v097{grid-template-columns:repeat(2,minmax(0,1fr))!important}.buscador-estandar{grid-template-columns:1fr 1fr!important}.buscador-estandar .busqueda{grid-column:1/-1}}
@media(max-width:700px){.cotizacion-form .datos-comerciales-v097,.buscador-estandar{grid-template-columns:1fr!important}.buscador-estandar .busqueda{grid-column:auto}}

/* V0.98 */
.contacto-form{padding-top:18px!important}.tabla-consecutivos th:nth-child(n+2),.tabla-consecutivos td:nth-child(n+2){text-align:center!important}.tabla-consecutivos input[type=number]{font-size:1rem!important;text-align:center}.tabla-pagos input,.tabla-pagos .entrada-moneda,.tabla-pagos .pago-resto{font:inherit!important}.tabla-pedidos-operacion th:nth-child(n+3),.tabla-pedidos-operacion td:nth-child(n+3){text-align:center!important}.tabla-pedidos-operacion th:nth-child(-n+2),.tabla-pedidos-operacion td:nth-child(-n+2){text-align:left!important}.cliente-identificacion-v098{grid-template-columns:1.25fr 1.25fr .85fr .8fr 1.35fr!important}.campo-switch-facturable{display:flex;align-items:flex-end}.campo-switch-facturable .estado-toggle{min-height:46px}.tabla-clientes .col-industria{min-width:220px}.catalogo-v098 td,.catalogo-v098 th{vertical-align:middle}.catalogo-v098 .nombre-catalogo{font-weight:700}.panel-vacaciones-listado{min-height:0!important}

/* V0.99 - correcciones de validación y homologación visual */
.tabla-personal tbody td:first-child,.tabla-proveedores .col-proveedor,.catalogo-v098 .nombre-catalogo,.tabla-pedidos-operacion tbody td:first-child{font-weight:400!important}
.campo-switch-facturable{display:flex!important;align-items:flex-end!important;padding-left:10px}.campo-switch-facturable .switch-inline{min-height:46px;display:flex;align-items:center;gap:9px;white-space:nowrap}.campo-switch-facturable .switch-inline>span{font-weight:600}
.catalogo-v098 th.col-tipo,.catalogo-v098 td.col-tipo,.catalogo-v098 th.col-estructura,.catalogo-v098 td.col-estructura,.catalogo-v098 th.col-estado,.catalogo-v098 td.col-estado,.catalogo-v098 th.col-acciones,.catalogo-v098 td.col-acciones{text-align:center!important}.catalogo-v098 th.col-precio,.catalogo-v098 td.col-precio,.catalogo-v098 th.col-costo,.catalogo-v098 td.col-costo{text-align:right!important}.catalogo-v098 th.col-sku,.catalogo-v098 td.col-sku{text-align:left!important}
.tabla-consecutivos{width:min(100%,1220px)!important}.tabla-consecutivos th:last-child,.tabla-consecutivos td:last-child{width:300px!important}
.vacaciones-grid .campo-submit{display:flex;align-items:flex-end}.vacaciones-grid .campo-submit>label{display:none}.vacaciones-grid .campo-submit .boton{margin-bottom:0}
.filtros-facturas{display:grid!important;grid-template-columns:minmax(280px,1.7fr) minmax(190px,.8fr) minmax(150px,.62fr) minmax(150px,.62fr) minmax(150px,.55fr) minmax(150px,.55fr)!important;gap:12px!important;align-items:end}.filtros-cobranza{display:grid!important;grid-template-columns:minmax(260px,1.45fr) minmax(180px,.75fr) minmax(160px,.65fr) minmax(145px,.58fr) minmax(145px,.58fr) minmax(145px,.52fr) minmax(145px,.52fr)!important;gap:12px!important;align-items:end}.filtros-facturas .boton,.filtros-cobranza .boton{width:100%;justify-content:center;white-space:nowrap}
@media(max-width:1250px){.filtros-facturas,.filtros-cobranza{grid-template-columns:repeat(3,minmax(0,1fr))!important}.filtros-facturas .busqueda,.filtros-cobranza .busqueda{grid-column:span 2}}
@media(max-width:760px){.filtros-facturas,.filtros-cobranza{grid-template-columns:1fr!important}.filtros-facturas .busqueda,.filtros-cobranza .busqueda{grid-column:auto}}


/* ===== V1.0 · Correcciones finales de revisión V0.99 ===== */
/* Clientes: contenido descriptivo siempre en peso normal. */
.tabla-clientes tbody td:first-child,.tabla-clientes tbody td:first-child strong{font-weight:400!important}
/* Personal: formulario compacto; switch y concepto en un solo eje. */
.personal-form-panel{padding-bottom:18px!important;min-height:0!important}
.personal-form-panel .barra-acciones-formulario{margin-bottom:0!important}
.campo-switch-facturable{padding-left:14px!important;align-items:flex-end!important}
.campo-switch-facturable .switch-inline{min-height:46px!important;display:flex!important;align-items:center!important;gap:9px!important}
/* Consecutivos: no reservar altura fija después de la última fila. */
.panel:has(.tabla-consecutivos)>.tabla-wrap{height:auto!important;min-height:0!important;max-height:none!important;overflow-x:auto!important;overflow-y:visible!important}
.panel:has(.tabla-consecutivos){padding-bottom:18px!important}
/* Vacaciones: leyenda legible y formulario sin espacio inferior artificial. */
.panel-vacaciones-form{padding-bottom:18px!important;min-height:0!important}
.panel-vacaciones-form .campos-obligatorios{font-size:.9rem!important;line-height:1.25!important}
.vacaciones-grid{margin-bottom:0!important}
.vacaciones-grid .campo-submit{align-self:end!important;display:flex!important;align-items:center!important;min-height:46px!important}
.vacaciones-grid .campo-submit .boton{width:100%!important}
/* Facturas y cobranza: controles centrados verticalmente, no pegados a la base. */
.filtros-facturas,.filtros-cobranza{align-items:center!important}
/* Cotizaciones: total compacto sin prefijo de moneda; alineación numérica a la derecha. */
.tabla-cotizaciones .col-total{text-align:right!important}

/* V1.03 · Ajuste menor de legibilidad en filtros financieros */
.filtros-facturas input,.filtros-facturas select,.filtros-cobranza input,.filtros-cobranza select{font-size:.98rem!important}

/* ===== V1.05 · Lote correctivo posterior a prueba integral P24 ===== */
/* Consecutivos: panel compacto, sin superficie horizontal vacía. */
.panel-consecutivos{width:min(100%,1260px)!important;max-width:1260px!important;padding-bottom:18px!important}
.panel-consecutivos>.tabla-wrap{height:auto!important;min-height:0!important;max-height:none!important;overflow-x:auto!important;overflow-y:visible!important}
.panel-consecutivos .tabla-consecutivos{width:100%!important}
/* Registrar factura: cabecera compacta de cuatro campos. */
.factura-registro-panel{padding-bottom:18px!important}
.factura-cabecera-grid{display:grid!important;grid-template-columns:1.35fr .78fr 1.15fr .82fr!important;gap:16px!important;align-items:end!important;margin-bottom:18px!important}
.factura-selector-form{margin:0!important}
.factura-cabecera-grid .campo label{display:block;text-align:left!important}
.factura-cabecera-grid .campo input,.factura-cabecera-grid .campo select{width:100%!important}
.factura-cabecera-grid .campo:last-child input{text-align:right!important}
.tabla-registro-factura-wrap,.tabla-factura-detalle-wrap{height:auto!important;min-height:0!important;max-height:none!important;overflow-x:auto!important;overflow-y:visible!important}
/* Cobranza: descriptivo a izquierda; fechas/ids/estado/acciones centrados; dinero a derecha. */
.tabla-cobranza th,.tabla-cobranza td{text-align:center!important;vertical-align:middle!important}
.tabla-cobranza th:nth-child(3),.tabla-cobranza td:nth-child(3){text-align:left!important}
.tabla-cobranza th:nth-child(5),.tabla-cobranza td:nth-child(5),
.tabla-cobranza th:nth-child(6),.tabla-cobranza td:nth-child(6),
.tabla-cobranza th:nth-child(7),.tabla-cobranza td:nth-child(7){text-align:right!important;font-variant-numeric:tabular-nums;white-space:nowrap}
/* Facturas: cliente descriptivo; importes a derecha; resto centrado. */
.tabla-facturas-v083 th,.tabla-facturas-v083 td{text-align:center!important;vertical-align:middle!important}
.tabla-facturas-v083 th:nth-child(3),.tabla-facturas-v083 td:nth-child(3){text-align:left!important}
.tabla-facturas-v083 th:nth-child(5),.tabla-facturas-v083 td:nth-child(5),
.tabla-facturas-v083 th:nth-child(6),.tabla-facturas-v083 td:nth-child(6){text-align:right!important;font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:980px){.factura-cabecera-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:700px){.factura-cabecera-grid{grid-template-columns:1fr!important}.panel-consecutivos{width:100%!important}}

/* ===== V1.08 · Lote GUI/UX ===== */
/* Operación: pantallas compactas y tipografía homogénea. */
.panel-asignacion-v108,
.panel-mis-partidas-v108,
.panel-entregas-v108{padding-top:12px!important}
.panel-asignacion-v108>h2:first-child{margin-top:0!important;margin-bottom:10px!important}
.panel-asignacion-v108 h2.seccion{margin-top:18px!important;margin-bottom:10px!important}
.panel-asignacion-v108 .tabla-wrap,
.panel-mis-partidas-v108 .tabla-wrap,
.panel-entregas-v108 .tabla-wrap{margin-top:0!important}

.entrega-form-v108 input,
.entrega-form-v108 button{
  font-family:inherit!important;
  font-size:.94rem!important;
  line-height:1.2!important
}
.entrega-form-v108 button{font-weight:700!important}

/* Folios de pedido: nunca partir el identificador en dos líneas. */
.tabla-pedidos-operacion td:first-child,
.tabla-mis-partidas-v108 td:first-child,
.tabla-entregas-v108 td:first-child,
.tabla-facturas-v083 td:nth-child(2),
.tabla-cobranza td:nth-child(4){white-space:nowrap!important}

/* Reasignación: fecha normal; autor en renglón independiente. */
.fecha-reasignacion{font-weight:400!important}

/* Facturación: cantidades e importes homogéneos y centrados. */
.tabla-registro-factura th,
.tabla-registro-factura td{text-align:center!important;vertical-align:middle!important}
.tabla-registro-factura th:first-child,
.tabla-registro-factura td:first-child{text-align:left!important}
.tabla-registro-factura td:nth-child(6){text-align:center!important}
.tabla-registro-factura .cantidad-factura{
  width:84px!important;
  text-align:center!important;
  font-family:inherit!important;
  font-size:.94rem!important;
  line-height:1.2!important
}
.tabla-factura-detalle th,
.tabla-factura-detalle td{text-align:center!important;vertical-align:middle!important}
.tabla-factura-detalle th:first-child,
.tabla-factura-detalle td:first-child{text-align:left!important}
.tabla-factura-detalle td.moneda{text-align:center!important}

/* Facturas y cobranza: columnas monetarias centradas. */
.tabla-facturas-v083 th:nth-child(5),.tabla-facturas-v083 td:nth-child(5),
.tabla-facturas-v083 th:nth-child(6),.tabla-facturas-v083 td:nth-child(6),
.tabla-cobranza th:nth-child(5),.tabla-cobranza td:nth-child(5),
.tabla-cobranza th:nth-child(6),.tabla-cobranza td:nth-child(6),
.tabla-cobranza th:nth-child(7),.tabla-cobranza td:nth-child(7){
  text-align:center!important;
  font-variant-numeric:tabular-nums;
  white-space:nowrap
}


/* ===== V1.09 · Consolidación GUI / navegación ===== */
/* GUI-13: compactación vertical en detalles ya validados. */
.factura-detalle-panel-v109{padding-top:16px!important;padding-bottom:16px!important}
.factura-detalle-panel-v109 .resumen-factura{margin-bottom:4px!important}
.factura-detalle-panel-v109 h2.seccion{margin-top:16px!important;margin-bottom:8px!important}
.factura-detalle-panel-v109 .tabla-factura-detalle-wrap{margin-top:0!important;margin-bottom:8px!important}
.factura-detalle-panel-v109>p:last-child{margin:8px 0 0!important}
.seguimiento-detalle-panel-v109{padding-top:16px!important;padding-bottom:16px!important}
.seguimiento-detalle-panel-v109>h2:first-child{margin-top:0!important;margin-bottom:10px!important}
.seguimiento-detalle-panel-v109>.tabla-wrap{margin-top:0!important}

/* Botón Volver global: misma jerarquía visual en todas las pantallas internas. */
.titulo-acciones .acciones .volver-global-v109{white-space:nowrap}

/* Encabezados de importes con IVA: evitar cortes innecesarios. */
.tabla th{white-space:nowrap}


/* V1.12 — Reportes: GUI transversal */
.panel>.tabla-wrap.tabla-reporte{height:auto!important;min-height:0!important;max-height:none!important;overflow-x:auto!important;overflow-y:visible!important;}
.tabla-reporte .tabla thead th{position:static!important;box-shadow:none!important;}
.tabla-reporte .tabla th.centro,.tabla-reporte .tabla td.centro{text-align:center!important;}
.tabla-reporte .tabla th.numero,.tabla-reporte .tabla td.numero{text-align:right!important;}
.tabla-reporte .tabla th.estado-col,.tabla-reporte .tabla td.estado-col{text-align:center!important;white-space:nowrap;}
.tabla-reporte .tabla th.folio-col,.tabla-reporte .tabla td.folio-col{text-align:center!important;white-space:nowrap;}
.tabla-reporte .tabla th.fecha-col,.tabla-reporte .tabla td.fecha-col{text-align:center!important;white-space:nowrap;}
\n\n/* V1.13 — consolidación GUI Reportes / Servicios Internos / Proveedores */
/* Reportes: compactación vertical, alineación homogénea y peso tipográfico normal. */
.titulo-acciones + .panel{margin-top:12px!important}
.panel + .panel{margin-top:0!important}
.panel:has(.filtros-facturas),.panel:has(.filtros-cobranza){padding-top:18px!important;padding-bottom:18px!important}
.panel:has(.tabla-reporte){padding-top:20px!important;padding-bottom:16px!important}
.panel:has(.tabla-reporte)>.titulo-acciones{margin-bottom:8px!important}
.panel:has(.tabla-reporte)>.titulo-acciones h2{margin-bottom:4px!important}
.panel:has(.tabla-reporte)>.titulo-acciones p{margin-top:0!important;margin-bottom:6px!important}
.tabla-reporte .tabla th.numero,.tabla-reporte .tabla td.numero{text-align:center!important}
.tabla-reporte .tabla td strong{font-weight:400!important}
.tabla-reporte .tabla th,.tabla-reporte .tabla td{vertical-align:middle!important}
/* Catálogo: nombre en una línea y orden visual costo/precio definido en PHP. */
.tabla-catalogo .nombre-catalogo{white-space:nowrap!important;overflow-wrap:normal!important;word-break:normal!important;font-weight:400!important}
.tabla-catalogo.catalogo-interno .col-sku{width:29%!important}
.tabla-catalogo.catalogo-interno .col-costo,.tabla-catalogo.catalogo-interno .col-precio{width:11%!important;text-align:center!important}
.tabla-catalogo.catalogo-interno .col-estructura{width:9%!important;text-align:center!important}
.tabla-catalogo.catalogo-interno .col-estado{width:10%!important;text-align:center!important}
.tabla-catalogo.catalogo-interno .col-acciones{width:23%!important}
/* Proveedores: altura natural y mayor espacio útil para el nombre. */
.panel>.tabla-wrap.tabla-listado:has(.tabla-proveedores){height:auto!important;min-height:0!important;max-height:none!important;overflow-x:auto!important;overflow-y:visible!important;scrollbar-gutter:auto!important}
.tabla-proveedores thead th{position:static!important;box-shadow:none!important}
.tabla-proveedores .col-proveedor{width:36%!important;white-space:nowrap!important;overflow-wrap:normal!important;word-break:normal!important}
.tabla-proveedores th:nth-child(2),.tabla-proveedores td:nth-child(2){width:13%!important;text-align:center!important}
.tabla-proveedores th:nth-child(3),.tabla-proveedores td:nth-child(3){width:11%!important;text-align:center!important}
.tabla-proveedores th:nth-child(4),.tabla-proveedores td:nth-child(4){width:14%!important;text-align:center!important}
.tabla-proveedores th:nth-child(5),.tabla-proveedores td:nth-child(5){width:10%!important;text-align:center!important}
.tabla-proveedores th:nth-child(6),.tabla-proveedores td:nth-child(6){width:16%!important;text-align:center!important}
.tabla-proveedores .col-proveedor br{display:none}
.tabla-proveedores .col-proveedor small:not(:empty)::before{content:" · ";}
/* Formulario proveedor: compactación vertical sin alterar estructura de cuatro columnas. */
.panel:has(.tabs-formulario) .tabs-formulario{margin-bottom:14px!important}
.panel:has(.tabs-formulario) .panel-tab h2{margin:14px 0 10px!important}
.panel:has(.tabs-formulario) .form-grid{gap:12px 18px!important}
.panel:has(.tabs-formulario) .campo{gap:5px!important}
.panel:has(.tabs-formulario) .campo input,.panel:has(.tabs-formulario) .campo select{min-height:42px!important;padding-top:8px!important;padding-bottom:8px!important}
.panel:has(.tabs-formulario) textarea[name="notas"]{min-height:64px!important;height:64px!important}
.panel:has(.tabs-formulario) .barra-acciones-formulario{margin-top:12px!important;padding-top:0!important}


/* V1.14 — compactación final de reportes y formularios */
/* GUI-30: cabecera de reporte compacta; exportar comparte línea con el título. */
.panel:has(.tabla-reporte){padding-top:16px!important;padding-bottom:14px!important}
.panel:has(.tabla-reporte)>.titulo-acciones{margin-bottom:4px!important;align-items:flex-start!important}
.panel:has(.tabla-reporte)>.titulo-acciones>div{display:flex;flex-direction:column;gap:2px}
.panel:has(.tabla-reporte)>.titulo-acciones h2{margin:0!important;line-height:1.2}
.panel:has(.tabla-reporte)>.titulo-acciones p{margin:4px 0 2px!important}
.panel:has(.tabla-reporte)>.titulo-acciones>.boton{align-self:flex-start!important;margin-top:0!important}
.panel:has(.tabla-reporte)>.tabla-reporte{margin-top:0!important}
/* GUI-31: Estructura pertenece a los atributos del producto, no al encabezado. */
.campo-estructura-producto{align-self:end}
.campo-estructura-producto>div{min-height:42px;display:flex;align-items:center}
/* GUI-33: acciones del producto proveedor en la misma fila de Vigencia. */
.acciones-producto-inline{align-self:center!important;margin:18px 0 0!important;padding:0!important;display:flex!important;gap:10px!important;white-space:nowrap}
@media(max-width:900px){.acciones-producto-inline{margin-top:0!important;align-self:start!important}}


/* ===== V1.15 · Ajustes finales GUI-30.1 a GUI-33.1 ===== */
.reporte-titulo-superior-v115{width:100%!important;align-items:flex-start!important}
.reporte-titulo-superior-v115>.acciones{margin-left:auto!important;flex-wrap:nowrap!important}
.panel:has(.tabla-reporte)>.titulo-reporte-v115{margin-bottom:4px!important}
.panel:has(.tabla-reporte)>.titulo-reporte-v115 h2{margin:0 0 4px!important}
.panel:has(.tabla-reporte)>.titulo-reporte-v115 p{margin:0 0 2px!important}
.estructura-inline-v115{display:flex!important;align-items:center!important;min-height:46px!important;margin-top:27px!important;margin-bottom:10px!important}
.estructura-linea-v115{display:flex!important;align-items:center!important;gap:9px!important;white-space:nowrap!important}
.estructura-linea-v115 strong{font-size:.88rem!important;font-weight:650!important}
.proveedor-titulo-v115{width:100%!important}
.proveedor-titulo-v115>a{margin-left:auto!important;flex:0 0 auto!important}
.acciones-producto-inline{grid-column:2 / -1!important;justify-self:stretch!important;justify-content:flex-end!important;align-self:center!important;margin:18px 0 0!important;padding:0!important}
@media(max-width:900px){
  .reporte-titulo-superior-v115{align-items:flex-start!important}
  .reporte-titulo-superior-v115>.acciones{margin-left:auto!important}
  .acciones-producto-inline{grid-column:1 / -1!important;justify-content:flex-start!important;margin-top:0!important}
  .estructura-inline-v115{margin-top:10px!important}
}
@media(max-width:720px){
  .reporte-titulo-superior-v115>.acciones{margin-left:0!important;width:100%!important;flex-wrap:wrap!important}
  .proveedor-titulo-v115>a{margin-left:0!important}
}


/* ===== V1.16 · Consolidación GUI V1.15 ===== */
/* GUI-34/35: reportes compactos, filtros + exportación en una sola barra y retorno al submenú. */
.reporte-titulo-superior-v116{width:100%!important;align-items:flex-start!important;margin-bottom:10px!important}
.reporte-titulo-superior-v116>.acciones{margin-left:auto!important}
.reporte-consolidado-v116{padding:16px 28px 14px!important}
.reporte-consolidado-v116>.filtros-reporte-v116{margin:0!important;padding:0 0 14px!important;border-bottom:1px solid var(--borde);display:flex!important;align-items:center!important;gap:12px!important;flex-wrap:nowrap!important}
.filtros-reporte-v116 .busqueda{flex:1 1 360px!important;min-width:220px!important}
.filtros-reporte-v116 select,.filtros-reporte-v116 .fecha-es{flex:0 1 210px!important;min-width:150px!important}
.filtros-reporte-v116 .boton{flex:0 0 auto!important;white-space:nowrap!important}
.reporte-resultado-v116{padding-top:14px!important}
.reporte-resultado-v116>.titulo-acciones{margin-bottom:6px!important}
.reporte-resultado-v116>.titulo-acciones h2{margin:0 0 4px!important}
.reporte-resultado-v116>.titulo-acciones p{margin:0!important}
/* GUI-36: historial de cobros, columnas operativas centradas. */
.tabla-reporte th.centro,.tabla-reporte td.centro{text-align:center!important}
/* GUI-37/39: formulario de producto más compacto y Estructura centrada con la segunda fila. */
.producto-dos-renglones{row-gap:14px!important}
.estructura-inline-v115{align-self:center!important;margin-top:18px!important;margin-bottom:0!important;min-height:46px!important}
/* GUI-38/40: acciones de formularios al extremo derecho. */
.acciones-formulario:not(.acciones-producto-inline){justify-content:flex-end!important;width:100%!important;margin-top:12px!important}
.panel:has(.tabs-formulario) .barra-acciones-formulario{justify-content:flex-end!important}
/* GUI-41: Componentes con altura natural y acciones inmediatamente después de la tabla. */
.panel .tabla-componentes-wrap{height:auto!important;min-height:0!important;max-height:none!important;overflow-x:auto!important;overflow-y:visible!important;scrollbar-gutter:auto!important}
.tabla-componentes-wrap .tabla thead th{position:static!important;box-shadow:none!important}
.panel:has(.tabla-componentes) .acciones-formulario{margin-top:14px!important}
@media(max-width:1100px){
 .reporte-consolidado-v116>.filtros-reporte-v116{flex-wrap:wrap!important}
 .filtros-reporte-v116 .busqueda{flex:1 1 100%!important}
}
@media(max-width:720px){
 .reporte-titulo-superior-v116{flex-direction:column!important;gap:10px!important}
 .reporte-titulo-superior-v116>.acciones{margin-left:0!important}
 .reporte-consolidado-v116{padding:14px!important}
 .reporte-consolidado-v116>.filtros-reporte-v116{align-items:stretch!important}
 .filtros-reporte-v116>*{flex:1 1 100%!important;width:100%!important}
 .acciones-formulario:not(.acciones-producto-inline){justify-content:flex-start!important}
}

/* ===== V1.17 · Correcciones de estabilización V1.16 ===== */
/* GUI-42: barra única de filtros en Facturación/Cobranza, sin botones expansivos. */
.reporte-consolidado-v117{padding:16px 28px 14px!important}
.reporte-consolidado-v117>.filtros-reporte-v117{
  display:flex!important;
  align-items:center!important;
  flex-wrap:nowrap!important;
  gap:12px!important;
  margin:0!important;
  padding:0 0 14px!important;
  border-bottom:1px solid var(--borde)!important;
  width:100%!important;
}
.filtros-reporte-v117 .busqueda{
  flex:1 1 320px!important;
  width:auto!important;
  min-width:220px!important;
}
.filtros-reporte-v117 select{
  flex:0 1 180px!important;
  width:auto!important;
  min-width:145px!important;
}
.filtros-reporte-v117 .fecha-es{
  flex:0 0 150px!important;
  width:150px!important;
  min-width:150px!important;
}
.filtros-reporte-v117 .filtro-accion,
.filtros-facturas.filtros-reporte-v117 .boton,
.filtros-cobranza.filtros-reporte-v117 .boton{
  flex:0 0 auto!important;
  width:auto!important;
  min-width:138px!important;
  max-width:none!important;
  white-space:nowrap!important;
  text-align:center!important;
  justify-content:center!important;
}
.reporte-resultado-v117{padding-top:14px!important}
.reporte-resultado-v117>.titulo-acciones{margin-bottom:6px!important}
.reporte-resultado-v117>.titulo-acciones h2{margin:0 0 4px!important}
.reporte-resultado-v117>.titulo-acciones p{margin:0!important}

/* GUI-43: controles de Componentes homologados con la escala general del ERP. */
.tabla-componentes select,
.tabla-componentes input{
  font:inherit!important;
  font-size:1rem!important;
  line-height:1.2!important;
  min-height:44px!important;
  padding:10px 12px!important;
  border-radius:8px!important;
  border:1px solid #515967!important;
  background:#171a1f!important;
  color:#fff!important;
}
.tabla-componentes .componente-unidad,
.tabla-componentes .componente-costo{
  font-size:1rem!important;
}
.tabla-componentes .cantidad-estructura input{
  width:100%!important;
  max-width:120px!important;
  text-align:center!important;
}

/* GUI-44: filtros ejecutivos compactos en una sola fila. */
.panel-filtros-ejecutivos-v117{padding:18px 28px!important}
.filtros-ejecutivos-v117{
  display:flex!important;
  align-items:flex-end!important;
  gap:18px!important;
  flex-wrap:nowrap!important;
}
.filtros-ejecutivos-v117 .campo{
  flex:0 0 260px!important;
  margin:0!important;
}
.filtros-ejecutivos-v117 .acciones{
  flex:0 0 auto!important;
  margin:0!important;
}
.filtros-ejecutivos-v117 .boton{white-space:nowrap!important}

/* GUI-45: tablas ejecutivas con altura natural, sin scroll vertical interno. */
.panel-reporte-ejecutivo-v117>.tabla-wrap{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  scrollbar-gutter:auto!important;
}
.panel-reporte-ejecutivo-v117>.tabla-wrap .tabla thead th{
  position:static!important;
  box-shadow:none!important;
}

@media(max-width:1180px){
  .reporte-consolidado-v117>.filtros-reporte-v117{flex-wrap:wrap!important}
  .filtros-reporte-v117 .busqueda{flex:1 1 100%!important}
}
@media(max-width:720px){
  .reporte-consolidado-v117{padding:14px!important}
  .reporte-consolidado-v117>.filtros-reporte-v117{align-items:stretch!important}
  .filtros-reporte-v117>*{flex:1 1 100%!important;width:100%!important;min-width:0!important}
  .filtros-ejecutivos-v117{flex-direction:column!important;align-items:stretch!important}
  .filtros-ejecutivos-v117 .campo,.filtros-ejecutivos-v117 .acciones{flex:1 1 auto!important;width:100%!important}
}


/* ===== V1.18 · Consolidación funcional y arquitectura de catálogos ===== */
/* GUI-46/49/50: catálogos sin quiebres innecesarios. */
.catalogo-v098 .col-tipo .estado{white-space:nowrap!important;word-break:normal!important;min-width:max-content!important}
.catalogo-v098 .col-proveedor{white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important}
.catalogo-v098.catalogo-externo .col-proveedor{width:24%!important}
.catalogo-v098.catalogo-externo .col-sku{width:25%!important}
.catalogo-v098.catalogo-externo .col-costo,.catalogo-v098.catalogo-externo .col-precio{width:11%!important}
.catalogo-v098.catalogo-externo .col-estado{width:10%!important}
.catalogo-v098.catalogo-externo .col-acciones{width:13%!important}

/* GUI-47: tablas de productos/servicios de proveedor con altura natural. */
.tabla-listado{max-height:none!important;height:auto!important;overflow-y:visible!important}

/* FUN-16: Categorías + costeo HHRR en una sola pantalla. */
.panel-costeo-hhrr-v118{padding:22px 28px!important}
.costeo-hhrr-grid-v118{display:grid!important;grid-template-columns:repeat(5,minmax(150px,1fr)) auto;gap:16px;align-items:end}
.costeo-hhrr-grid-v118 .campo{margin:0!important}.costeo-hhrr-grid-v118 .acciones{margin:0!important}
.resumen-costeo-v118{display:flex;justify-content:flex-end;align-items:center;gap:14px;margin-top:16px;padding-top:14px;border-top:1px solid var(--borde)}
.resumen-costeo-v118 strong{font-size:1.1rem}
.tabla-categorias-v118 th,.tabla-categorias-v118 td{text-align:center!important;white-space:nowrap!important}.tabla-categorias-v118 th:nth-child(2),.tabla-categorias-v118 td:nth-child(2){text-align:left!important}
@media(max-width:1180px){.costeo-hhrr-grid-v118{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.costeo-hhrr-grid-v118{grid-template-columns:1fr}.resumen-costeo-v118{justify-content:flex-start}}


/* ===== V1.19 · Consolidación GUI y costeo por categoría ===== */
/* Tablas de directorio/contexto: altura natural real. */
.panel>.tabla-wrap.tabla-personal-v119,
.panel>.tabla-wrap.tabla-proveedor-productos-v119{
  height:auto!important;min-height:0!important;max-height:none!important;
  overflow-x:auto!important;overflow-y:visible!important;scrollbar-gutter:auto!important;
}
.panel>.tabla-wrap.tabla-personal-v119 .tabla thead th,
.panel>.tabla-wrap.tabla-proveedor-productos-v119 .tabla thead th{position:static!important;box-shadow:none!important}

/* Proveedor · Prod./Serv./Costos: columna descriptiva prioritaria. */
.tabla-proveedor-productos-v119 .tabla{table-layout:fixed!important}
.tabla-proveedor-productos-v119 th:nth-child(1){width:9%}
.tabla-proveedor-productos-v119 th:nth-child(2){width:27%}
.tabla-proveedor-productos-v119 th:nth-child(3){width:9%}
.tabla-proveedor-productos-v119 th:nth-child(4){width:9%}
.tabla-proveedor-productos-v119 th:nth-child(5){width:11%}
.tabla-proveedor-productos-v119 th:nth-child(6){width:12%}
.tabla-proveedor-productos-v119 th:nth-child(7){width:10%}
.tabla-proveedor-productos-v119 th:nth-child(8){width:13%}
.tabla-proveedor-productos-v119 th:not(:nth-child(2)),.tabla-proveedor-productos-v119 td:not(:nth-child(2)){white-space:nowrap!important}

/* Productos/Servicios Compuestos: nombre + SKU en un solo renglón y sin negrita. */
.tabla-estructuras-wrap .concepto-linea-v119{white-space:nowrap!important;font-weight:400!important}
.tabla-estructuras-wrap .concepto-linea-v119 small{display:inline!important;font-weight:400!important}
.tabla-estructuras-wrap th:nth-child(1){width:40%!important}
.tabla-estructuras-wrap th:nth-child(2){width:10%!important}
.tabla-estructuras-wrap th:nth-child(3){width:9%!important}
.tabla-estructuras-wrap th:nth-child(4){width:10%!important}
.tabla-estructuras-wrap th:nth-child(5){width:17%!important}
.tabla-estructuras-wrap th:nth-child(6){width:14%!important}

/* Composición: menos aire y anchos útiles. */
.panel:has(.tabla-componentes)>p{margin:0 0 12px!important}
.tabla-componentes th:nth-child(1),.tabla-componentes td:nth-child(1){width:42%!important}
.tabla-componentes th:nth-child(2),.tabla-componentes td:nth-child(2){width:8%!important}
.tabla-componentes th:nth-child(3),.tabla-componentes td:nth-child(3){width:12%!important}
.tabla-componentes th:nth-child(4),.tabla-componentes td:nth-child(4){width:13%!important}
.tabla-componentes th:nth-child(5),.tabla-componentes td:nth-child(5){width:17%!important}
.tabla-componentes th:nth-child(6),.tabla-componentes td:nth-child(6){width:8%!important}
.tabla-componentes .componente-select{width:100%!important}

/* Categorías: desaparece margen global; quedan cuatro parámetros generales + Calcular. */
.costeo-hhrr-grid-v118{grid-template-columns:repeat(4,minmax(150px,1fr)) auto!important}

/* Formularios de producto/servicio más compactos. */
.producto-dos-renglones{row-gap:14px!important}
.producto-dos-renglones .acciones-producto-inline{margin:0!important;align-self:end!important;padding:0!important;display:flex!important;gap:10px!important;white-space:nowrap!important}
.producto-dos-renglones .campo-estructura-producto{align-self:end!important;margin-bottom:8px!important}
@media(min-width:1250px){
  .producto-form-panel .producto-dos-renglones{grid-template-columns:repeat(4,minmax(0,1fr))!important}
  .producto-form-panel .acciones-producto-inline{grid-column:auto!important}
}

/* ===== V1.20 · Afinación operativa y GUI ===== */
/* Categorías / HHRR: parámetros persistentes en dos filas compactas. */
.panel-costeo-hhrr-v120{padding:18px 24px!important}
.costeo-hhrr-v120{display:grid;gap:12px}
.costeo-fila-v120{display:grid;gap:14px;align-items:end}
.costeo-costos-v120{grid-template-columns:repeat(3,minmax(160px,1fr))}
.costeo-capacidad-v120{grid-template-columns:minmax(130px,.8fr) minmax(140px,.8fr) minmax(120px,.7fr) auto minmax(190px,1fr)}
.costeo-fila-v120 .campo,.costeo-fila-v120 .acciones{margin:0!important}
.resultado-costeo-v120{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-height:46px;white-space:nowrap}
.resultado-costeo-v120 strong{font-size:1.1rem}
@media(max-width:1050px){.costeo-capacidad-v120{grid-template-columns:repeat(3,1fr)}.resultado-costeo-v120{justify-content:flex-start}}
@media(max-width:720px){.costeo-costos-v120,.costeo-capacidad-v120{grid-template-columns:1fr}}

/* Producto/Servicio: dos renglones reales y acciones integradas. */
.producto-interno-v120{max-width:80%!important}
.producto-interno-v120 .acciones-producto-interno-v120{grid-column:3 / 5!important;justify-self:end!important;align-self:end!important}
.producto-proveedor-v120 .producto-dos-renglones{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.producto-proveedor-v120 .campo-vigencia-v120{grid-column:auto / span 2!important}
.vigencia-linea-v120{display:flex;align-items:center;gap:14px;white-space:nowrap}
.vigencia-linea-v120 input{flex:0 0 min(230px,55%)}
.vigencia-linea-v120 small{margin:0!important;white-space:nowrap}
.producto-proveedor-v120 .campo-estructura-producto{margin:0!important;align-self:end!important}
.producto-proveedor-v120 .acciones-producto-inline{justify-self:end!important}
@media(max-width:1249px){.producto-interno-v120{max-width:100%!important}.vigencia-linea-v120{flex-wrap:wrap}.producto-interno-v120 .acciones-producto-interno-v120{grid-column:auto!important}}

/* Proveedor · acciones con un solo botón centradas. */
.tabla-proveedor-productos-v119 th:nth-child(8),.tabla-proveedor-productos-v119 td:nth-child(8){text-align:center!important}
.tabla-proveedor-productos-v119 td:nth-child(8) .acciones,.tabla-proveedor-productos-v119 td:nth-child(8) .acciones-tabla{justify-content:center!important}

/* Reportes Ejecutivos. */
.panel-filtros-ejecutivos-v120{padding-top:14px!important;padding-bottom:14px!important}
.filtros-ejecutivos-v120{justify-content:flex-end!important;margin-left:auto!important}
.tabla-pedidos-periodo-v120 th:nth-child(1),.tabla-pedidos-periodo-v120 td:nth-child(1),
.tabla-pedidos-periodo-v120 th:nth-child(2),.tabla-pedidos-periodo-v120 td:nth-child(2),
.tabla-pedidos-periodo-v120 th:nth-child(4),.tabla-pedidos-periodo-v120 td:nth-child(4){text-align:center!important}
.tabla-cobranza-pendiente-v120 th:nth-child(2),.tabla-cobranza-pendiente-v120 td:nth-child(2),
.tabla-cobranza-pendiente-v120 th:nth-child(3),.tabla-cobranza-pendiente-v120 td:nth-child(3),
.tabla-cobranza-pendiente-v120 th:nth-child(4),.tabla-cobranza-pendiente-v120 td:nth-child(4){text-align:center!important}
@media(min-width:1250px){
  .producto-form-panel .producto-dos-renglones{display:grid!important;grid-template-columns:repeat(12,minmax(0,1fr))!important}
  .producto-form-panel .campo-tipo-v120{grid-column:span 3}.producto-form-panel .campo-nombre-v120{grid-column:span 3}.producto-form-panel .campo-comentarios-v120{grid-column:span 3}.producto-form-panel .campo-unidad-v120{grid-column:span 3}
  .producto-interno-v120 .campo-costo-v120{grid-column:span 3}.producto-interno-v120 .campo-precio-v120{grid-column:span 3}.producto-interno-v120 .acciones-producto-interno-v120{grid-column:7 / 13!important}
  .producto-proveedor-v120 .campo-tipo-v120,.producto-proveedor-v120 .campo-proveedor-v120,.producto-proveedor-v120 .campo-nombre-v120,.producto-proveedor-v120 .campo-comentarios-v120{grid-column:span 3}
  .producto-proveedor-v120 .campo-unidad-v120{grid-column:span 2}.producto-proveedor-v120 .campo-costo-v120{grid-column:span 2}.producto-proveedor-v120 .campo-precio-v120{grid-column:span 2}.producto-proveedor-v120 .campo-vigencia-v120{grid-column:span 3!important}.producto-proveedor-v120 .campo-estructura-producto{grid-column:span 1}.producto-proveedor-v120 .acciones-producto-inline{grid-column:span 2}
}
/* V1.21 */
.costeo-hhrr-v121{display:grid;gap:14px}.costeo-fila-v121{display:grid;gap:14px;align-items:end}.costeo-costos-v121{grid-template-columns:repeat(3,minmax(0,1fr))}.costeo-capacidad-v121{grid-template-columns:minmax(150px,.8fr) minmax(160px,.8fr) minmax(130px,.7fr) minmax(210px,1.15fr) auto}.resultado-costeo-v121{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-height:46px;padding:0 8px}.resultado-costeo-v121 strong{font-size:1.08rem}.ganancia-categoria-v121{max-width:100px;text-align:center;margin:auto}.tabla-categorias-v121 th,.tabla-categorias-v121 td{text-align:center}.tabla-categorias-v121 th:nth-child(2),.tabla-categorias-v121 td:nth-child(2){text-align:left}
.encabezado-composicion-v121{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:12px}.encabezado-composicion-v121 p{margin:0}.tabla-componentes-wrap{overflow-x:visible!important}.tabla-componentes-v121{width:100%;table-layout:fixed;min-width:0!important}.tabla-componentes-v121 th:nth-child(1),.tabla-componentes-v121 td:nth-child(1){width:34%}.tabla-componentes-v121 th:nth-child(2),.tabla-componentes-v121 td:nth-child(2){width:7%;text-align:center}.tabla-componentes-v121 th:nth-child(3),.tabla-componentes-v121 td:nth-child(3){width:11%;text-align:center}.tabla-componentes-v121 th:nth-child(4),.tabla-componentes-v121 td:nth-child(4){width:10%;text-align:center}.tabla-componentes-v121 th:nth-child(5),.tabla-componentes-v121 td:nth-child(5){width:10%;text-align:center}.tabla-componentes-v121 th:nth-child(6),.tabla-componentes-v121 td:nth-child(6){width:22%}.tabla-componentes-v121 th:nth-child(7),.tabla-componentes-v121 td:nth-child(7){width:6%;text-align:center}.tabla-componentes-v121 select,.tabla-componentes-v121 input{width:100%}.tabla-componentes-v121 .cantidad-estructura input{max-width:110px;margin:auto}
.producto-proveedor-v120 .producto-dos-renglones{grid-template-columns:repeat(12,minmax(0,1fr))!important}.producto-proveedor-v120 .campo-tipo-v120,.producto-proveedor-v120 .campo-proveedor-v120,.producto-proveedor-v120 .campo-nombre-v120,.producto-proveedor-v120 .campo-comentarios-v120{grid-column:span 3}.producto-proveedor-v120 .campo-unidad-v120{grid-column:span 2}.producto-proveedor-v120 .campo-costo-v120{grid-column:span 2}.producto-proveedor-v120 .campo-precio-v120{grid-column:span 2}.producto-proveedor-v120 .campo-vigencia-v120{grid-column:span 3!important}.producto-proveedor-v120 .acciones-producto-inline{grid-column:span 3;align-self:end;justify-self:end;margin:0!important}.producto-proveedor-v120 .vigencia-linea-v120{display:block!important}.producto-proveedor-v120 .vigencia-linea-v120 small{display:block;margin-top:5px}
.titulo-acciones .folio-previsto{display:flex;align-items:baseline;gap:8px;margin-left:auto;padding-left:24px;border-left:1px solid var(--borde)}.titulo-acciones .folio-previsto span{font-size:.82rem;color:var(--texto-secundario);text-transform:uppercase}.titulo-acciones .folio-previsto strong{font-size:1.55rem;letter-spacing:.02em;color:var(--texto)}
@media(max-width:1050px){.costeo-costos-v121,.costeo-capacidad-v121{grid-template-columns:repeat(2,1fr)}.producto-proveedor-v120 .producto-dos-renglones{grid-template-columns:repeat(6,minmax(0,1fr))!important}}@media(max-width:720px){.costeo-costos-v121,.costeo-capacidad-v121{grid-template-columns:1fr}.encabezado-composicion-v121{align-items:flex-start;flex-direction:column}.producto-proveedor-v120 .producto-dos-renglones{grid-template-columns:1fr!important}.producto-proveedor-v120 .producto-dos-renglones>*{grid-column:auto!important}}
.titulo-acciones:has(.folio-previsto){justify-content:flex-start!important;align-items:center!important}.titulo-acciones .folio-previsto{margin-left:28px!important;margin-right:auto!important}.titulo-acciones:has(.folio-previsto) h1{font-size:1.8rem!important}.titulo-acciones:has(.folio-previsto) .folio-previsto strong{font-size:1.75rem!important}

/* ===== V1.22-RC-1.0 · Release Candidate GUI ===== */
/* Categorías: utilidad entera, mejor jerarquía y costo HH centrado. */
.costeo-capacidad-v121{grid-template-columns:minmax(145px,.9fr) minmax(150px,.9fr) minmax(130px,.8fr) minmax(250px,1.35fr) auto!important;column-gap:22px!important}
.resultado-costeo-v121{justify-content:center!important;gap:14px!important;padding:0 26px!important;text-align:center}
.resultado-costeo-v121 span{font-size:.96rem}
.resultado-costeo-v121 strong{font-size:1.14rem!important}
.costeo-capacidad-v121>.acciones{margin-left:16px!important}
.ganancia-categoria-v121{font-size:.95rem!important;font-weight:600!important;max-width:108px!important;min-height:34px!important}

/* Composición: Concepto con la misma lectura que el resto del formulario. */
.tabla-componentes-v121 .componente-select{font-size:.92rem!important;min-height:36px!important}
.tabla-componentes-v121 .componente-select option{font-size:.92rem!important}

/* Mis pedidos: más información operativa sin forzar saltos de línea. */
.tabla-mis-pedidos-rc1{font-size:.82rem!important;table-layout:auto!important}
.tabla-mis-pedidos-rc1 th{font-size:.72rem!important;white-space:nowrap!important;padding-left:9px!important;padding-right:9px!important}
.tabla-mis-pedidos-rc1 td{padding-left:9px!important;padding-right:9px!important;white-space:nowrap!important}
.tabla-mis-pedidos-rc1 td:nth-child(2){white-space:normal!important;min-width:190px}
.tabla-mis-pedidos-rc1 th:nth-child(5),.tabla-mis-pedidos-rc1 td:nth-child(5),
.tabla-mis-pedidos-rc1 th:nth-child(6),.tabla-mis-pedidos-rc1 td:nth-child(6),
.tabla-mis-pedidos-rc1 th:nth-child(7),.tabla-mis-pedidos-rc1 td:nth-child(7),
.tabla-mis-pedidos-rc1 th:nth-child(8),.tabla-mis-pedidos-rc1 td:nth-child(8){text-align:center!important}

/* Operación: compactación transversal de tablas y campos. */
.tabla-operativa-compacta-rc1{font-size:.84rem!important}
.tabla-operativa-compacta-rc1 th{font-size:.73rem!important;white-space:nowrap!important;padding:10px 9px!important}
.tabla-operativa-compacta-rc1 td{padding:11px 9px!important;line-height:1.25!important}
.form-operativo-compacto-rc1{gap:12px 16px!important}
.form-operativo-compacto-rc1 input,.form-operativo-compacto-rc1 select{font-size:.9rem!important;min-height:42px!important}
.entrega-form-compacto-rc1{gap:8px!important;flex-wrap:nowrap!important}
.entrega-form-compacto-rc1 input{font-size:.82rem!important;min-height:34px!important;padding:6px 8px!important}
.entrega-form-compacto-rc1 .fecha-es{width:145px!important}
.entrega-form-compacto-rc1 input[name="cantidad"]{width:92px!important}
.entrega-form-compacto-rc1 .entrega-observaciones{min-width:190px!important}
.tabla-entregas-v108 td:nth-child(2),.tabla-entregas-v108 td:nth-child(3){font-size:.84rem!important;line-height:1.2!important}

/* Producto/Servicio de proveedor: segunda fila compacta, sin elementos residuales. */
.producto-proveedor-v120 .producto-dos-renglones{row-gap:14px!important}
.producto-proveedor-v120 .acciones-producto-inline{align-self:end!important;justify-self:end!important;margin:0!important;white-space:nowrap!important}
.producto-proveedor-v120 .vigencia-linea-v120 small{font-size:.78rem!important;line-height:1.15!important}

/* Crear Pedido: identidad y folio previstos como una sola cabecera. */
.pedido-cabecera-rc1{justify-content:flex-start!important;align-items:center!important;gap:34px!important}
.pedido-cabecera-rc1 .pedido-identidad-rc1{flex:0 1 auto}
.pedido-cabecera-rc1 .pedido-identidad-rc1 h1{font-size:1.9rem!important;line-height:1.05!important;margin-bottom:6px!important}
.pedido-cabecera-rc1 .folio-pedido-rc1{margin:0!important;padding-left:30px!important;border-left:1px solid var(--borde)!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:2px!important}
.pedido-cabecera-rc1 .folio-pedido-rc1 span{font-size:.75rem!important;letter-spacing:.04em!important}
.pedido-cabecera-rc1 .folio-pedido-rc1 strong{font-size:2rem!important;line-height:1!important}

/* Registrar Factura: folio previsto integrado, tabla y observaciones compactas. */
.factura-cabecera-rc1{justify-content:flex-start!important;align-items:center!important;gap:34px!important}
.factura-cabecera-rc1 .folio-factura-rc1{margin:0!important;padding-left:30px!important;border-left:1px solid var(--borde)!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:2px!important}
.factura-cabecera-rc1 .folio-factura-rc1 span{font-size:.75rem!important;text-transform:uppercase!important;color:var(--texto-secundario)!important;letter-spacing:.04em!important}
.factura-cabecera-rc1 .folio-factura-rc1 strong{font-size:1.9rem!important;line-height:1!important;color:var(--texto)!important}
.tabla-registro-factura .cantidad-factura{font-size:.9rem!important;min-width:86px!important;max-width:104px!important;text-align:center!important}
.observaciones-factura-rc1{min-height:64px!important;height:64px!important}

@media(max-width:1100px){
  .costeo-capacidad-v121{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .resultado-costeo-v121{justify-content:flex-start!important;text-align:left!important;padding:0!important}
  .costeo-capacidad-v121>.acciones{margin-left:0!important}
  .pedido-cabecera-rc1,.factura-cabecera-rc1{gap:20px!important;flex-wrap:wrap!important}
}

/* ===== V1.22-RC1.1 · Ajustes finos de validación RC ===== */
/* HH: costo calculado y acción sobre el mismo eje visual. */
.costeo-capacidad-v121{align-items:end!important}
.resultado-costeo-v121{height:42px!important;min-height:42px!important;align-self:end!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0 18px!important}
.costeo-capacidad-v121>.acciones{height:42px!important;min-height:42px!important;align-self:end!important;display:flex!important;align-items:center!important;margin-left:10px!important}
.costeo-capacidad-v121>.acciones .boton{min-height:42px!important;display:inline-flex!important;align-items:center!important}

/* Importes editables del costeo: lectura con separador de miles. */
.monetario-formateado-rc11{text-align:right!important;font-variant-numeric:tabular-nums!important}

/* Listado de compuestos: primera columna a la izquierda; resto centrado. */
.tabla-estructuras-rc11 th:not(:first-child),.tabla-estructuras-rc11 td:not(:first-child){text-align:center!important;vertical-align:middle!important}
.tabla-estructuras-rc11 th:first-child,.tabla-estructuras-rc11 td:first-child{text-align:left!important}
.tabla-estructuras-rc11 td:last-child .boton{margin-left:auto!important;margin-right:auto!important}

/* Composición: cantidad más legible sin aumentar la celda. */
.tabla-componentes-v121 .cantidad-estructura input{font-size:1rem!important;font-weight:600!important}

/* Proveedor: acciones a la altura del control Vigencia, no de su ayuda inferior. */
.producto-proveedor-v120 .acciones-producto-inline{align-self:end!important;padding-bottom:20px!important;display:flex!important;align-items:center!important}
@media(max-width:720px){.producto-proveedor-v120 .acciones-producto-inline{padding-bottom:0!important}}


/* ===== V1.22-RC1.2 · Cierre fino de interfaz ===== */
/* HHRR: costo calculado y botón centrados dentro de sus áreas. */
.costeo-capacidad-v121{
  grid-template-columns:minmax(145px,.9fr) minmax(150px,.9fr) minmax(130px,.8fr) minmax(270px,1.35fr) minmax(150px,.72fr)!important;
  align-items:center!important;
  column-gap:24px!important;
}
.costeo-capacidad-v121>.campo{align-self:end!important}
.resultado-costeo-v121{align-self:center!important;justify-content:center!important;padding:0!important;margin-top:20px!important}
.costeo-capacidad-v121>.acciones{align-self:center!important;justify-content:center!important;margin:20px 0 0!important;height:auto!important;min-height:42px!important}
.costeo-capacidad-v121>.acciones .boton{margin:0 auto!important}

/* Proveedor: segunda fila con columnas rígidas y acciones fuera del campo Vigencia. */
@media(min-width:1250px){
  .producto-proveedor-v120 .producto-dos-renglones{grid-template-columns:repeat(12,minmax(0,1fr))!important}
  .producto-proveedor-v120 .campo-unidad-v120{grid-column:1 / 3!important;grid-row:2!important}
  .producto-proveedor-v120 .campo-costo-v120{grid-column:3 / 5!important;grid-row:2!important}
  .producto-proveedor-v120 .campo-precio-v120{grid-column:5 / 7!important;grid-row:2!important}
  .producto-proveedor-v120 .campo-vigencia-v120{grid-column:7 / 10!important;grid-row:2!important;min-width:0!important}
  .producto-proveedor-v120 .campo-vigencia-v120 input{width:100%!important;max-width:none!important}
  .producto-proveedor-v120 .acciones-producto-inline{grid-column:10 / 13!important;grid-row:2!important;justify-self:start!important;align-self:center!important;padding:20px 0 0 22px!important;margin:0!important;overflow:visible!important}
}

/* Formato monetario visual transversal sin alterar el valor numérico real del input. */
.monetario-overlay-wrap-rc12{position:relative!important;display:block!important;min-width:0!important}
.monetario-overlay-wrap-rc12>input{position:relative!important;z-index:1!important}
.monetario-overlay-rc12{position:absolute;z-index:2;left:12px;right:12px;top:50%;transform:translateY(-50%);text-align:right;pointer-events:none;color:var(--texto);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}
.monetario-overlay-wrap-rc12.activo>input{color:transparent!important;caret-color:transparent!important}
.monetario-overlay-wrap-rc12.activo>input::placeholder{color:transparent!important}
.monetario-overlay-wrap-rc12.en-foco .monetario-overlay-rc12{display:none!important}
.monetario-overlay-wrap-rc12.en-foco>input{color:var(--texto)!important;caret-color:auto!important}
.entrada-moneda .monetario-overlay-wrap-rc12{flex:1 1 auto!important}

@media(max-width:1100px){
  .costeo-capacidad-v121{grid-template-columns:repeat(3,minmax(0,1fr))!important;align-items:end!important}
  .resultado-costeo-v121,.costeo-capacidad-v121>.acciones{margin-top:0!important;align-self:end!important}
}


/* ===== V1.22-RC1.3 · pendientes 2 y 5 ===== */
/* Formato monetario transversal: el input conserva su valor numérico real y la vista agrega miles. */
.monetario-wrap-rc13{position:relative!important;display:block!important;width:100%!important;min-width:0!important}
.monetario-wrap-rc13>input{width:100%!important;position:relative!important;z-index:1!important}
.monetario-vista-rc13{display:none;position:absolute!important;z-index:3!important;left:12px!important;right:12px!important;top:50%!important;transform:translateY(-50%)!important;text-align:right!important;pointer-events:none!important;color:var(--texto)!important;font-variant-numeric:tabular-nums!important;white-space:nowrap!important}
.monetario-wrap-rc13.mostrar-formato .monetario-vista-rc13{display:block!important}
.monetario-wrap-rc13.mostrar-formato>input{color:transparent!important;-webkit-text-fill-color:transparent!important;caret-color:transparent!important}
.monetario-wrap-rc13.mostrar-formato>input::placeholder{color:transparent!important;-webkit-text-fill-color:transparent!important}

/* Proveedor: fila 1 datos generales; fila 2 unidad/costos/vigencia/acciones. */
@media(min-width:1250px){
  .producto-proveedor-v120 .campo-tipo-v120{grid-column:1 / 4!important;grid-row:1!important}
  .producto-proveedor-v120 .campo-proveedor-v120{grid-column:4 / 7!important;grid-row:1!important}
  .producto-proveedor-v120 .campo-nombre-v120{grid-column:7 / 10!important;grid-row:1!important}
  .producto-proveedor-v120 .campo-comentarios-v120{grid-column:10 / 13!important;grid-row:1!important}
  .producto-proveedor-v120 .campo-unidad-v120{grid-column:1 / 3!important;grid-row:2!important}
  .producto-proveedor-v120 .campo-costo-v120{grid-column:3 / 5!important;grid-row:2!important}
  .producto-proveedor-v120 .campo-precio-v120{grid-column:5 / 7!important;grid-row:2!important}
  .producto-proveedor-v120 .campo-vigencia-v120{grid-column:7 / 10!important;grid-row:2!important}
  .producto-proveedor-v120 .acciones-producto-inline{grid-column:10 / 13!important;grid-row:2!important;align-self:center!important;justify-self:start!important;padding:20px 0 0 22px!important;margin:0!important}
}


/* ===== V1.22-RC1.4 · formato monetario en todos los campos de entrada monetarios ===== */
.monetario-wrap-rc14{position:relative!important;display:block!important;width:100%!important;min-width:0!important}
.monetario-wrap-rc14>input{width:100%!important;position:relative!important;z-index:1!important;text-align:right!important;font-variant-numeric:tabular-nums!important}
.monetario-vista-rc14{display:none;position:absolute!important;z-index:3!important;left:12px!important;right:12px!important;top:50%!important;transform:translateY(-50%)!important;text-align:right!important;pointer-events:none!important;color:var(--texto)!important;font-variant-numeric:tabular-nums!important;white-space:nowrap!important}
.monetario-wrap-rc14.mostrar-formato .monetario-vista-rc14{display:block!important}
.monetario-wrap-rc14.mostrar-formato>input{color:transparent!important;-webkit-text-fill-color:transparent!important;caret-color:transparent!important}
.monetario-wrap-rc14.mostrar-formato>input::placeholder{color:transparent!important;-webkit-text-fill-color:transparent!important}
.entrada-moneda .monetario-wrap-rc14{flex:1 1 auto!important;width:auto!important}

/* V1.22-RC1.5 */
input.monetario-input-v15{text-align:right;font-variant-numeric:tabular-nums}

/* V1.22-RC1.7 */
input.monetario-input-v16{text-align:right;font-variant-numeric:tabular-nums}

/* ===== V1.22-RC1.8 · Producto/Servicio interno: segunda fila alineada ===== */
@media(min-width:1250px){
  .producto-interno-v120 .campo-categoria-v120{
    grid-column:1 / 4!important;
    grid-row:2!important;
    min-width:0!important;
  }
  .producto-interno-v120 .campo-costo-v120{
    grid-column:4 / 7!important;
    grid-row:2!important;
  }
  .producto-interno-v120 .campo-precio-v120{
    grid-column:7 / 10!important;
    grid-row:2!important;
  }
  .producto-interno-v120 .acciones-producto-interno-v120{
    grid-column:10 / 13!important;
    grid-row:2!important;
    align-self:end!important;
    justify-self:end!important;
    margin:0!important;
    padding:0 0 1px 0!important;
  }
  .producto-interno-v120 .campo-categoria-v120 select{
    width:100%!important;
    min-width:0!important;
  }
}

/* ===== V1.22-RC1.9 · Producto/Servicio interno: orden definitivo de renglones ===== */
@media(min-width:1250px){
  .producto-interno-v120 .campo-tipo-v120{
    grid-column:1 / 4!important;
    grid-row:1!important;
  }
  .producto-interno-v120 .campo-nombre-v120{
    grid-column:4 / 7!important;
    grid-row:1!important;
  }
  .producto-interno-v120 .campo-comentarios-v120{
    grid-column:7 / 10!important;
    grid-row:1!important;
  }
  .producto-interno-v120 .campo-unidad-v120{
    grid-column:10 / 13!important;
    grid-row:1!important;
  }
  .producto-interno-v120 .campo-categoria-v120{
    grid-column:1 / 4!important;
    grid-row:2!important;
    min-width:0!important;
  }
  .producto-interno-v120 .campo-costo-v120{
    grid-column:4 / 7!important;
    grid-row:2!important;
  }
  .producto-interno-v120 .campo-precio-v120{
    grid-column:7 / 10!important;
    grid-row:2!important;
  }
  .producto-interno-v120 .acciones-producto-interno-v120{
    grid-column:10 / 13!important;
    grid-row:2!important;
    align-self:end!important;
    justify-self:end!important;
    margin:0!important;
    padding:0 0 1px 0!important;
  }
}

/* ===== V1.22-RC2.0 · Producto/Servicio interno: cierre visual candidato ===== */
.producto-form-panel .producto-grid-rc20::before{
  justify-self:end!important;
  align-self:start!important;
  margin:-10px 0 -2px!important;
  line-height:1.2!important;
}
@media(min-width:1250px){
  .producto-interno-v120 .acciones-producto-interno-v120{
    align-self:center!important;
    justify-self:end!important;
    margin:18px 0 0!important;
    padding:0!important;
  }
}
