@font-face {
    font-family: "Archivo";
    src: url("/static/fuentes/archivo-latin.woff2") format("woff2");
    font-weight: 400 800;
    font-stretch: 62% 125%;
    font-display: swap;
}

/* Colores del taller: lámina galvanizada, grafito, anticorrosivo y el azul de la marca */
:root {
    --fondo: #e6e9e5;
    --panel: #ffffff;
    --texto: #1d2528;
    --suave: #56656a;
    --borde: #d5dbd8;
    --minio: #b23a1f;
    --primario: #126782;
    --primario-oscuro: #0c4e64;
    --verde: #18794e;
    --amarillo: #986a08;
    --rojo: #b42318;
    font-family: "Archivo", "Segoe UI", system-ui, sans-serif;
    color: var(--texto);
    background: var(--fondo);
}
* { box-sizing: border-box; }
body { margin: 0; font-size: 16px; line-height: 1.5; background: var(--fondo); }
h1, h2, h3 { font-stretch: 110%; letter-spacing: -0.01em; }
a { color: var(--primario); text-decoration: none; }
a:hover { color: var(--primario-oscuro); }
/* Encabezado como el de zamfer.com: barra clara, línea grafito, enlaces simples y un solo botón */
.barra { height: 68px; padding: 0 max(24px, calc((100% - 1240px) / 2)); display: flex; align-items: center; justify-content: space-between; gap: 24px; background: var(--fondo); color: var(--texto); border-bottom: 2px solid var(--texto); }
.marca { display: flex; align-items: center; gap: 12px; min-width: 0; color: var(--texto); }
.marca:hover { color: var(--texto); }
.marca-icono { width: 38px; height: 38px; display: grid; flex: none; place-items: center; border-radius: 6px; background: var(--primario); color: #fff; font-size: 14px; font-weight: 800; }
.marca-logo { width: 44px; height: 44px; flex: none; padding: 3px; object-fit: contain; border: 1px solid var(--borde); border-radius: 6px; background: white; }
.marca strong, .marca small { display: block; }
.marca strong { font-size: 17px; font-weight: 800; font-stretch: 108%; }
.marca small { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 1px; color: var(--suave); font-size: 13px; }
.menu-principal { display: flex; align-items: center; gap: 4px 20px; }
.menu-principal a { color: var(--texto); padding: 8px 0; white-space: nowrap; font-weight: 500; }
.menu-principal a:hover { color: var(--texto); text-decoration: underline; text-underline-offset: 6px; }
.menu-principal .nav-registro-rapido { order: 3; padding: 8px 14px; border-radius: 6px; background: var(--primario); color: white; font-size: 15px; font-weight: 650; }
.menu-principal .nav-registro-rapido:hover { background: var(--primario-oscuro); color: white; text-decoration: none; }
.menu-principal form { margin: 0; }
.menu-principal button { padding: 9px 12px; border: 0; background: transparent; color: var(--texto); font: inherit; text-align: left; cursor: pointer; }
.menu-boton { display: none; }
.menu-grupo { position: relative; }
.menu-grupo summary { padding: 8px 0; white-space: nowrap; color: var(--texto); font-weight: 500; cursor: pointer; list-style: none; }
.menu-grupo summary::-webkit-details-marker { display: none; }
.menu-grupo summary::after { content: ""; display: inline-block; width: 6px; height: 6px; margin: 0 0 3px 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform .15s; }
.menu-grupo[open] summary::after { transform: rotate(225deg); }
.menu-grupo summary:hover { text-decoration: underline; text-underline-offset: 6px; }
.menu-grupo > div { position: absolute; z-index: 60; top: calc(100% + 10px); left: -12px; display: grid; gap: 0; min-width: 220px; padding: 6px; border: 1px solid var(--borde); border-top: 2px solid var(--texto); border-radius: 4px; background: var(--panel); box-shadow: 0 12px 28px rgba(29, 37, 40, .14); }
.menu-grupo > div a { padding: 9px 12px; white-space: nowrap; }
.menu-grupo > div a:hover { background: #eef1ee; text-decoration: none; }
/* La sección en la que estás: en negrita y subrayada, sin fondos */
.menu-principal > a.activo, .menu-grupo.activo > summary { font-weight: 700; text-decoration: underline; text-decoration-color: var(--minio); text-decoration-thickness: 2px; text-underline-offset: 8px; }
.menu-cuenta { order: 2; }
.menu-cuenta > div { left: auto; right: 0; }
.menu-cuenta summary::after { display: none; }
.menu-cuenta summary { padding: 2px; }
.menu-cuenta summary:hover { text-decoration: none; }
.avatar { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; background: var(--texto); color: white; font-size: 14px; font-weight: 800; }
.cuenta-nombre { display: grid; padding: 8px 12px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--borde); color: var(--texto); font-weight: 700; }
.cuenta-nombre small { color: var(--suave); font-weight: 400; }
.menu-cuenta form { border-top: 1px solid var(--borde); margin-top: 4px; padding-top: 4px; }
.menu-cuenta form button { width: 100%; }
.menu-cuenta form button:hover { background: #eef1ee; }
.campana { position: relative; order: 1; color: var(--texto); }
.campana:hover { text-decoration: none; }
.campana-texto { display: none; margin-left: 8px; font-weight: 500; }
.campana span { position: absolute; top: 0; right: -6px; display: grid; min-width: 17px; height: 17px; padding: 0 4px; place-items: center; border-radius: 20px; background: var(--minio); color: white; font-size: 11px; font-weight: 800; }
.contenedor { width: min(1240px, calc(100% - 32px)); margin: 38px auto 70px; }
.encabezado-pagina { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 25px; }
.encabezado-pagina h1 { margin: 4px 0 7px; font-size: clamp(30px, 4vw, 44px); font-weight: 800; }
.encabezado-pagina p { margin: 0; color: var(--suave); }
.sobrelinea { color: var(--suave); font-size: 15px; font-weight: 600; }
.metricas { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; margin-bottom: 22px; }
.metrica { min-height: 116px; padding: 20px; border: 1px solid var(--borde); border-top: 3px solid var(--borde); border-radius: 6px; background: var(--panel); }
.metrica span { display: block; min-height: 34px; color: var(--suave); font-size: 15px; }
.metrica strong { display: block; margin-top: 11px; font-size: 26px; font-weight: 800; font-stretch: 110%; font-variant-numeric: tabular-nums; }
.metrica small { display: block; margin-top: 8px; color: var(--suave); font-size: 13px; line-height: 1.35; }
.metrica.destacada { border-top-color: var(--texto); }
.metrica.alerta-suave { border-top-color: var(--minio); }
.panel { padding: 24px; border: 1px solid var(--borde); border-radius: 6px; background: var(--panel); }
.panel h2 { margin: 3px 0; font-size: 20px; }
.panel > p { color: var(--suave); line-height: 1.55; }
.panel-titulo { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.rejilla-principal { display: grid; grid-template-columns: 1.1fr .9fr; gap: 18px; margin-bottom: 18px; }
.configuracion-empresa { display: grid; grid-template-columns: 1fr auto minmax(260px, 390px) auto; gap: 18px; align-items: center; margin-bottom: 22px; }
.configuracion-empresa p { margin: 6px 0 0; }
.configuracion-empresa form { display: flex; align-items: end; gap: 10px; }
.vista-logo { width: 110px; height: 68px; padding: 5px; object-fit: contain; border: 1px solid var(--borde); border-radius: 6px; background: white; }
.configuracion-nombre-empresa { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(0, 1fr) minmax(0, 1fr); align-items: end; gap: 22px; margin-bottom: 18px; }
.configuracion-nombre-empresa h2, .configuracion-nombre-empresa p { margin: 4px 0; }
.configuracion-nombre-empresa form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 10px; }
.configuracion-sri-acceso { display: flex; align-items: center; justify-content: space-between; gap: 22px; }
.configuracion-sri-acceso h2, .configuracion-sri-acceso p { margin: 4px 0; }
.sri-estado-panel { display: grid; grid-template-columns: minmax(220px, .6fr) 1fr; gap: 24px; margin-bottom: 18px; }
.sri-estado-panel h2 { margin: 4px 0; }
.sri-lista-estado { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0; padding: 0; list-style: none; }
.sri-lista-estado li { padding: 11px 12px; border: 1px solid var(--borde); border-radius: 6px; background: #f8fafb; }
.sri-lista-estado li::before { content: '•'; margin-right: 7px; color: var(--amarillo); }
.sri-lista-estado li.listo::before { content: '✓'; color: var(--verde); }
.sri-lista-estado strong { font-size: 15px; }
.sri-lista-estado span { display: block; margin: 3px 0 0 18px; color: var(--suave); font-size: 13px; }
.sri-titulo-formulario { display: flex; align-items: end; justify-content: space-between; gap: 24px; }
.sri-titulo-formulario h2, .sri-titulo-formulario p { margin: 4px 0; }
.sri-formulario { display: grid; grid-template-columns: repeat(4, minmax(150px, 1fr)); gap: 14px; margin-top: 18px; }
.sri-formulario .campo-ancho { grid-column: 1 / -1; }
.sri-formulario label small { display: block; margin-top: 2px; color: var(--suave); font-weight: 400; }
.sri-formulario .opcion-check { display: flex; align-items: center; gap: 8px; min-height: 40px; }
.sri-formulario .opcion-check input { width: auto; }
.sri-formulario .sri-habilitar { padding: 12px; border: 1px solid #b8d9e4; border-radius: 6px; background: #eff9fc; }
.sri-seguridad, .sri-documento, .sri-historial { margin-top: 18px; }
.sri-seguridad h2, .sri-seguridad p { margin: 4px 0; }
.sri-documento-cabecera { display: flex; justify-content: space-between; align-items: center; gap: 18px; }
.sri-documento-cabecera h2 { margin: 4px 0; }
.sri-datos-documento { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 18px 0; }
.sri-datos-documento div { min-width: 0; padding: 11px; border: 1px solid var(--borde); border-radius: 6px; }
.sri-datos-documento dt { color: var(--suave); font-size: 13px; letter-spacing: .4px; }
.sri-datos-documento dd { margin: 4px 0 0; font-weight: 700; overflow-wrap: anywhere; }
.sri-datos-documento .sri-clave { grid-column: 1 / -1; }
.sri-acciones { flex-wrap: wrap; }
.sri-nota { margin: 14px 0 0; color: var(--suave); font-size: 13px; }
.sri-error { border-color: #e7b7b3; background: #fff0ef; color: var(--rojo); }
.sri-mensajes pre { margin: 6px 0 0; white-space: pre-wrap; font: inherit; }
.sri-historial summary { cursor: pointer; font-weight: 800; }
.sri-historial .tabla-scroll { margin-top: 14px; }
.dato-legal { display: grid; gap: 3px; padding: 10px 14px; border-left: 3px solid var(--borde); color: var(--suave); }
.dato-legal span, .dato-legal small { font-size: 13px; }
.dato-legal strong { color: var(--texto); font-size: 15px; }
.identidad-informe { display: flex; align-items: center; gap: 16px; margin-bottom: 18px; }
.identidad-informe img { width: 92px; height: 58px; object-fit: contain; }
.identidad-informe h2, .identidad-informe p { margin: 3px 0; }
.identidad-informe p { color: var(--suave); font-size: 14px; }
.carga form { display: flex; align-items: end; gap: 14px; margin-top: 20px; }
.selector-archivo { flex: 1; display: block; padding: 20px; border: 2px dashed #aabac2; border-radius: 6px; background: #f8fafb; cursor: pointer; }
.selector-archivo:hover { border-color: var(--primario); background: #f1f8fa; }
.selector-archivo strong, .selector-archivo span { display: block; }
.selector-archivo span { margin-top: 5px; color: var(--suave); font-size: 14px; }
.selector-archivo input { width: 100%; margin-top: 15px; }
.boton { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 9px 16px; border: 1px solid var(--primario); border-radius: 7px; background: var(--primario); color: white; font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.boton:hover { background: var(--primario-oscuro); color: white; }
.boton:disabled { border-color: #aeb9bf; background: #aeb9bf; color: white; cursor: not-allowed; opacity: .72; }
.boton.secundario, .boton.fantasma { background: white; color: var(--primario); }
.boton.peligro { border-color: #d8a19c; background: white; color: var(--rojo); }
.boton.peligro:hover { background: #fff1f0; }
.lista-lotes { display: grid; gap: 11px; }
.lote { display: flex; justify-content: space-between; gap: 16px; padding-bottom: 11px; border-bottom: 1px solid #edf0f2; }
.lote:last-child { border: 0; padding-bottom: 0; }
.lote strong, .lote small { display: block; }
.lote small { margin-top: 3px; color: var(--suave); }
.lote-cifras { text-align: right; font-size: 14px; color: var(--suave); }
.lote-cifras span { display: block; }
.texto-error { color: var(--rojo); }
.tabla-panel { padding: 0; overflow: hidden; }
.tabla-panel .panel-titulo { padding: 22px 24px 5px; }
.tabla-scroll { width: 100%; min-width: 280px; max-width: 100%; overflow: auto; resize: horizontal; }
.tabla-scroll > table { width: 100%; min-width: 100%; }
table { width: 100%; border-collapse: collapse; }
th { padding: 10px 11px; background: #f2f4f2; color: #46555a; font-size: 13px; text-align: left; }
td { padding: 10px 11px; border-top: 1px solid #e8ecef; font-size: 15px; }
tbody tr:hover { background: #fafcfd; }
.monoespacio { font-family: "Cascadia Code", Consolas, monospace; font-size: .9em; }
.estado { display: inline-block; padding: 4px 8px; border-radius: 4px; background: #edf0ee; color: #46555a; font-size: 13px; font-weight: 700; }
.estado.aceptado { background: #e7f6ee; color: var(--verde); }
.estado.revision { background: #fff3cf; color: var(--amarillo); }
.estado.rechazado, .estado.error { background: #feeceb; color: var(--rojo); }
.estado.duplicado { background: #edf1f3; color: #53616b; }
.estado.grande { padding: 8px 12px; font-size: 14px; }
.filtros { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr auto auto; align-items: end; gap: 12px; margin-bottom: 18px; }
.filtros-facturas { grid-template-columns: 2fr repeat(5, minmax(120px, 1fr)) auto auto; }
.pestanas-facturas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 18px; }
.pestanas-facturas a { color: inherit; display: grid; gap: 3px; text-decoration: none; }
.pestanas-facturas a > span, .pestanas-facturas a > small { color: var(--suave); }
.pestanas-facturas a > strong { font-size: 1.3rem; }
.pestanas-facturas a.activa { border-color: var(--primario); box-shadow: inset 0 0 0 1px var(--primario); }
.acciones-tabla { display: flex; align-items: center; gap: 5px; white-space: nowrap; }
.acciones-tabla > a { display: inline-flex; padding: 4px 7px; border: 1px solid var(--borde); border-radius: 5px; background: white; font-size: 14px; }
.acciones-tabla > a:hover { border-color: #9ab7c2; background: #f3f8fa; }
.celda-acciones { width: 1%; white-space: nowrap; text-align: right; }
.columna-principal { width: 100%; min-width: 210px; white-space: normal; }
.columna-compacta { width: 1%; white-space: nowrap; }
.celda-acciones form { margin: 0; }
.celda-acciones .boton { min-height: 30px; padding: 5px 9px; font-size: 14px; }
.celda-acciones .boton-texto, .celda-acciones .enlace-peligro { display: inline-flex; padding: 4px 6px; }
.celda-acciones .casilla { display: block; margin-inline: auto; }
.tabla-comprobantes-contenedor { width: 100%; max-height: min(62vh, 560px); resize: both; }
.tabla-comprobantes-contenedor > .tabla-comprobantes { min-width: 860px; }
.tabla-comprobantes th, .tabla-comprobantes td { white-space: nowrap; }
.tabla-comprobantes .proveedor-factura { width: 100%; min-width: 210px; max-width: none; white-space: normal; }
.proveedor-factura strong, .proveedor-factura small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.datos-facturacion-obra { display: grid; grid-template-columns: minmax(220px, .8fr) minmax(300px, 1.2fr); gap: 20px; align-items: center; margin-bottom: 18px; }
.datos-facturacion-obra h2, .datos-facturacion-obra p { margin: 4px 0; }
.datos-facturacion-obra .aviso { margin: 0; }
.facturacion-obra-opciones { align-items: start; margin-bottom: 18px; }
.lista-conceptos-factura { display: grid; gap: 8px; margin: 14px 0; }
.concepto-factura { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 10px; border: 1px solid var(--borde); border-radius: 6px; background: #fafcfd; }
.concepto-factura input { width: auto; min-height: auto; margin: 0; }
.concepto-factura strong, .concepto-factura small { display: block; }
.concepto-factura small { margin-top: 3px; color: var(--suave); }
.opcion-casilla { display: flex; align-items: center; gap: 8px; }
.opcion-casilla input { width: 18px; min-height: 18px; margin: 0; }
.formulario-total-obra { display: grid; grid-template-columns: 1fr minmax(180px, 260px) auto; gap: 16px; align-items: end; margin-bottom: 22px; }
.cierre-obra { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 18px; border-color: #86c9a6; background: #f4fbf7; }
.cierre-obra h2, .cierre-obra p { margin: 4px 0; }
label { color: #53616b; font-size: 14px; font-weight: 700; }
input, select, textarea { width: 100%; min-height: 44px; margin-top: 6px; padding: 10px 12px; border: 1px solid #cbd4d9; border-radius: 6px; background: white; color: var(--texto); font: inherit; font-size: 16px; }
textarea { min-height: 92px; resize: vertical; line-height: 1.45; }
input:focus, select:focus, textarea:focus { border-color: var(--primario); outline: 0; box-shadow: 0 0 0 3px rgba(18,103,130,.11); }
.fecha-dia-mes-anio { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.resultados-carga { display: grid; gap: 10px; }
.resultado-item { display: grid; grid-template-columns: 95px 1fr auto; align-items: center; gap: 15px; padding: 15px; border: 1px solid #e4e9ec; border-radius: 6px; }
.resultado-item p { margin: 4px 0 0; color: var(--suave); }
.datos-grid { display: grid; grid-template-columns: 1fr 1fr 1.5fr; gap: 14px; margin-bottom: 18px; }
.datos-grid span, .datos-grid strong, .datos-grid small { display: block; }
.datos-grid span { margin-bottom: 8px; color: var(--suave); font-size: 14px; }
.datos-grid small { margin-top: 5px; color: var(--suave); }
.clave { overflow-wrap: anywhere; }
.volver { display: inline-block; margin-bottom: 10px; }
.aviso { margin-bottom: 17px; padding: 14px 17px; border: 1px solid #ead8a2; border-radius: 6px; background: #fff9e5; color: #73530b; }
.resumen-detalle { display: grid; grid-template-columns: 1fr 360px; gap: 18px; margin-top: 18px; }
.impuestos > div, .totales > div { display: flex; justify-content: space-between; gap: 30px; padding: 11px 0; border-bottom: 1px solid #edf0f2; }
.total-final { margin-top: 7px; border: 0 !important; font-size: 21px; }
.lista-revisiones { display: grid; gap: 14px; }
.revision-item { display: flex; justify-content: space-between; gap: 25px; }
.revision-contenido { display: flex; align-items: start; gap: 16px; }
.revision-contenido h2 { margin: 0 0 7px; }
.revision-contenido p { margin: 0 0 10px; }
.revision-meta { display: flex; gap: 18px; color: var(--suave); font-size: 15px; }
.acciones { display: flex; align-items: center; gap: 8px; }
.acciones form { margin: 0; }
.vacio { padding: 20px; color: var(--suave); text-align: center; }
.vacio-grande { padding: 60px; text-align: center; }
.vacio-grande strong { font-size: 22px; }
.vacio-grande p { margin-bottom: 0; }
.buscador-productos { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 12px; margin-bottom: 18px; }
.buscador-productos input { min-height: 52px; font-size: 17px; }
.productos-cabecera { padding-bottom: 14px !important; }
.productos-cabecera small, .bloque { display: block; margin-top: 4px; color: var(--suave); font-size: 13px; }
.casilla { width: 18px; min-height: 18px; margin: 0; }
.campos-cliente { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 14px; margin-bottom: 18px; }
.campos-cliente .campo-ancho { grid-column: 1 / -1; }
.formulario-presupuesto td input { min-width: 110px; }
.formulario-presupuesto td:first-child input:not([type="hidden"]) { min-width: 300px; }
.pie-presupuesto { display: flex; justify-content: flex-end; align-items: center; gap: 25px; padding: 20px 24px; border-top: 1px solid var(--borde); }
.pie-presupuesto strong { font-size: 20px; }
.total-presupuesto-final { display: flex; justify-content: flex-end; align-items: center; gap: 30px; margin-top: 18px; font-size: 20px; }
.total-presupuesto-final strong { font-size: 28px; }
.comparacion-precios { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 18px; }
.comparacion-precios h2 { margin: 10px 0 5px; font-size: 27px; }
.comparacion-precios p { margin: 6px 0 0; color: var(--suave); }
.referencia-compra { border-left: 5px solid var(--verde); }
.referencia-venta { border-left: 5px solid var(--amarillo); }
.vigencia-vigente { background: #e7f6ee; color: var(--verde); }
.vigencia-revisar { background: #fff3cf; color: var(--amarillo); }
.vigencia-antiguo { background: #feeceb; color: var(--rojo); }
.enlace-actualizar { display: block; margin-top: 7px; padding: 0; border: 0; background: none; color: var(--primario); font: inherit; font-size: 14px; cursor: pointer; text-decoration: underline; }
.formulario-simple { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.formulario-simple .campo-ancho { grid-column: 1 / -1; }
.acciones-finales { display: flex; justify-content: flex-end; }
.formulario-precio { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 16px 0; }
.formulario-precio .campo-ancho { grid-column: 1 / -1; }
.tarjetas-obras { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.tarjeta-obra { color: var(--texto); transition: transform .15s, border-color .15s; }
.tarjeta-obra:hover { color: var(--texto); border-color: var(--texto); }
.tarjeta-obra p { margin-bottom: 0; color: var(--suave); }
.separacion { margin-top: 18px; }
.quitar { width: 34px; height: 34px; border: 1px solid #d8a19c; border-radius: 7px; background: white; color: var(--rojo); cursor: pointer; }
.margen-superior { margin-top: 18px; }
.lista-componentes { display: grid; gap: 12px; }
.lista-componentes > div { padding-bottom: 12px; border-bottom: 1px solid var(--borde); }
.lista-componentes strong, .lista-componentes span { display: block; }
.lista-componentes span { margin-top: 4px; color: var(--suave); font-size: 15px; }
.aviso.informacion { border-color: #b8d9e4; background: #eff9fc; color: #15566b; }
.acciones-encabezado { display: flex; justify-content: flex-end; margin: -12px 0 18px; }
.metricas-cortas { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.metricas-informes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.filtros-informe { grid-template-columns: 1fr 1fr auto auto; }
.linea-asignacion { display: grid; grid-template-columns: 1fr minmax(480px, .9fr); align-items: end; gap: 22px; }
.linea-asignacion h2 { margin: 5px 0; }
.linea-asignacion p { margin: 0; color: var(--suave); }
.linea-asignacion form { display: grid; grid-template-columns: 1.4fr .7fr 1fr auto; align-items: end; gap: 10px; }
.asignacion-existente { display: flex; align-items: center; gap: 8px; margin-top: 7px; color: var(--verde); }
.asignacion-existente form { display: inline; }
.enlace-peligro { padding: 0; border: 0; background: none; color: var(--rojo); cursor: pointer; text-decoration: underline; }
.filtros-presupuesto { grid-template-columns: 2fr 1fr auto auto; }
.encabezado-seccion { display: flex; justify-content: space-between; align-items: end; margin: 32px 0 14px; }
.encabezado-seccion h2 { margin: 4px 0 0; font-size: 26px; }
.convertir-documento { display: flex; align-items: center; gap: 12px; }
.convertir-documento label { display: flex; align-items: center; gap: 6px; }
.convertir-documento input { width: 18px; min-height: 18px; margin: 0; }
.formulario-margen { display: grid; grid-template-columns: 1fr 160px auto; align-items: end; gap: 16px; margin-bottom: 18px; }
.formulario-margen h2, .formulario-margen p { margin: 4px 0; }
.lista-productos-propios { display: grid; gap: 14px; }
.producto-propio { display: grid; grid-template-columns: 1fr 1.3fr; gap: 24px; align-items: end; }
.producto-propio form { display: grid; grid-template-columns: 1.5fr 1fr .6fr auto; gap: 10px; align-items: end; }
.configuracion-material { display: grid; grid-template-columns: 1fr 130px 180px 180px 160px auto; align-items: end; gap: 12px; margin-bottom: 18px; }
.configuracion-material h2, .configuracion-material p { margin: 4px 0; }
.opcion-check { display: flex; align-items: center; gap: 7px; min-height: 42px; }
.opcion-check input { width: 18px; min-height: 18px; margin: 0; }
.lista-inventario, .lista-pedido { display: grid; gap: 14px; }
.inventario-item { display: grid; grid-template-columns: 1fr 1.3fr; align-items: end; gap: 20px; }
.inventario-item form { display: grid; grid-template-columns: .8fr .65fr 1.2fr 1fr auto; align-items: end; gap: 10px; }
.pedido-item { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 20px; }
.datos-pedido { display: flex; flex-wrap: wrap; gap: 22px; margin-top: 13px; }
.datos-pedido span, .datos-pedido strong { display: block; }
.datos-pedido span { color: var(--suave); font-size: 14px; }
.datos-pedido strong { margin-top: 3px; color: var(--texto); font-size: 14px; }
.acciones-pedido form { display: flex; gap: 8px; }
.fondo-login { min-height: 100vh; display: grid; place-items: center; background: #1d2528; }
.login-contenedor { width: min(430px, calc(100% - 30px)); }
.login-panel { display: grid; gap: 16px; padding: 34px; }
.login-panel h1, .login-panel p { margin: 0; }
.movil-contenido { max-width: 720px; margin: auto; }
.cabecera-movil { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 20px; }
.cabecera-movil h1 { margin: 4px 0 5px; font-size: clamp(30px, 7vw, 42px); letter-spacing: -1px; }
.cabecera-movil p { margin: 0; color: var(--suave); }
.indicador-hora { padding: 7px 11px; border-radius: 4px; background: #e7f6ee; color: var(--verde); font-size: 14px; font-weight: 800; }
.formulario-movil { display: grid; gap: 15px; }
.entrada-monto { display: flex; align-items: center; margin-top: 6px; padding: 0 16px; border: 2px solid #9bb4bf; border-radius: 6px; background: #f8fbfc; }
.entrada-monto:focus-within { border-color: var(--primario); box-shadow: 0 0 0 3px rgba(18,103,130,.12); }
.entrada-monto b { color: var(--primario); font-size: 27px; }
.monto-movil input { min-height: 68px; margin: 0; border: 0; background: transparent; font-size: 32px; font-weight: 800; outline: 0; }
.campos-movil-dobles { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.opcional { float: right; color: #8a959c; font-size: 12px; font-weight: 500; }
.boton-grande { min-height: 54px; font-size: 16px; }
.boton-guardar-movil { min-height: 58px; margin-top: 3px; border-radius: 11px; }
.lista-gastos-movil, .lista-conciliacion { display: grid; gap: 12px; }
.encabezado-pendientes { align-items: center; }
.contador-pendientes { display: grid; min-width: 32px; height: 32px; padding: 0 9px; place-items: center; border-radius: 999px; background: var(--primario); color: white; font-weight: 800; }
.gasto-movil { display: flex; justify-content: space-between; align-items: center; gap: 16px; color: var(--texto); transition: transform .15s, border-color .15s; }
.gasto-movil:hover { color: var(--texto); border-color: #a9c9d4; transform: translateY(-1px); }
.gasto-movil span, .gasto-movil strong { display: block; }
.gasto-movil span { margin-top: 5px; color: var(--suave); font-size: 14px; }
.gasto-descripcion time { display: block; margin-top: 4px; color: #89949b; font-size: 13px; }
.gasto-valor { flex: 0 0 auto; text-align: right; }
.gasto-valor > strong { color: var(--primario-oscuro); font-size: 20px; }
.gasto-valor .estado { display: inline-block; margin-top: 7px; }
.gasto-valor small { display: block; margin-top: 5px; color: var(--suave); font-size: 12px; }
.vacio-movil strong, .vacio-movil span { display: block; }
.vacio-movil span { margin-top: 5px; }
.monto-destacado { font-size: 30px; }
.candidato-factura { display: grid; grid-template-columns: 1fr 1.3fr; gap: 20px; align-items: end; }
.candidato-factura form { display: grid; grid-template-columns: 1.2fr .7fr 1fr auto; gap: 10px; align-items: end; }
.formulario-gasto-rapido { display: grid; grid-template-columns: repeat(3, 1fr); align-items: end; gap: 12px; }
.formulario-gasto-rapido .campo-ancho { grid-column: span 2; }
.cierre-sin-factura { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.cierre-sin-factura p { margin: 5px 0 0; }
.gasto-confirmado-sin-factura { display: flex; align-items: center; gap: 8px; }
.gasto-confirmado-sin-factura form { margin-left: auto; }
.boton-texto { padding: 0; border: 0; background: transparent; color: var(--primario); font: inherit; font-weight: 700; cursor: pointer; text-decoration: underline; }
.aviso-notificaciones { position: fixed; z-index: 100; right: 20px; bottom: 20px; display: flex; align-items: center; gap: 12px; width: min(620px, calc(100% - 40px)); padding: 16px; border: 1px solid #8fb8c6; border-radius: 6px; background: white; box-shadow: 0 18px 50px rgba(4, 31, 43, .24); }
.aviso-notificaciones[hidden] { display: none; }
.aviso-notificaciones div { flex: 1; }
.aviso-notificaciones strong, .aviso-notificaciones span { display: block; }
.aviso-notificaciones span { margin-top: 3px; color: var(--suave); font-size: 14px; }
.formulario-obra-rapida { display: grid; gap: 26px; }
.bloque-formulario + .bloque-formulario { padding-top: 25px; border-top: 1px solid var(--borde); }
.titulo-bloque { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.titulo-bloque > span { display: grid; width: 32px; height: 32px; place-items: center; border-radius: 50%; background: var(--primario); color: white; font-weight: 800; }
.titulo-bloque h2, .titulo-bloque p { margin: 0; }
.titulo-bloque p { margin-top: 3px; color: var(--suave); font-size: 15px; }
.rejilla-formulario-obra { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
.rejilla-formulario-obra .campo-ancho { grid-column: 1 / -1; }
.ayuda-inline { margin: 9px 0 0; color: var(--suave); font-size: 14px; }
.entrada-con-prefijo { display: flex; align-items: center; margin-top: 6px; padding-left: 12px; border: 1px solid #cbd4d9; border-radius: 7px; background: white; }
.entrada-con-prefijo b { color: var(--primario); font-size: 18px; }
.entrada-con-prefijo input { margin: 0; border: 0; outline: 0; }
.formulario-item-obra { display: grid; grid-template-columns: 130px 2fr .7fr .8fr 1fr auto; align-items: end; gap: 10px; padding: 15px; border-radius: 6px; background: #f5f8f9; }
.lista-items-obra { display: grid; margin-top: 15px; }
.item-obra { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 15px 4px; border-bottom: 1px solid var(--borde); }
.item-obra:last-child { border-bottom: 0; }
.item-obra strong, .item-obra small { display: block; }
.item-obra > div > strong { margin-top: 7px; }
.item-obra small { margin-top: 4px; color: var(--suave); }
.item-obra-valor { min-width: 110px; text-align: right; }
.item-obra-valor form { margin-top: 6px; }
.total-factura-cabecera { text-align: right; }
.total-factura-cabecera span, .total-factura-cabecera strong { display: block; }
.total-factura-cabecera span { color: var(--suave); font-size: 14px; }
.total-factura-cabecera strong { margin-top: 5px; font-size: 27px; }
.lista-anticipos { display: grid; gap: 0; }
.lista-anticipos > div { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--borde); }
.lista-anticipos > div:last-child { border-bottom: 0; }
.lista-anticipos strong, .lista-anticipos span { display: block; }
.lista-anticipos span { margin-top: 4px; color: var(--suave); font-size: 14px; }
.tabla-facturas-obra th, .tabla-facturas-obra td { white-space: nowrap; }
.tabla-facturas-obra td:nth-child(3) { min-width: 230px; white-space: normal; }
.fila-detalle-factura > td { padding: 0; background: #f6f9fa; }
.contenido-detalle-factura { padding: 14px 22px 18px 44px; border-left: 4px solid #8ebbc8; }
.contenido-detalle-factura table { background: white; }
.contenido-detalle-factura > a { display: inline-block; margin-top: 12px; font-size: 14px; font-weight: 700; }
.nueva-cuenta { margin-bottom: 20px; }
.nueva-cuenta > summary { color: var(--primario); font-weight: 800; cursor: pointer; }
.nueva-cuenta[open] > summary { margin-bottom: 20px; }
.formulario-cuenta { display: grid; grid-template-columns: repeat(4, 1fr); align-items: end; gap: 13px; }
.formulario-cuenta .campo-doble { grid-column: span 2; }
.pestanas-cuentas { display: flex; gap: 5px; margin: 22px 0 12px; }
.pestanas-cuentas a { padding: 9px 14px; border-radius: 6px; color: var(--suave); font-weight: 700; }
.pestanas-cuentas a.activa { background: var(--primario); color: white; }
.lista-cuentas { display: grid; gap: 13px; }
.cuenta-pagar { display: grid; gap: 15px; }
.cuenta-cabecera { display: flex; justify-content: space-between; align-items: start; gap: 20px; }
.cuenta-cabecera h2 { margin: 8px 0 4px; }
.cuenta-cabecera p { margin: 0; color: var(--suave); }
.saldo-cuenta { text-align: right; }
.saldo-cuenta span, .saldo-cuenta strong, .saldo-cuenta small { display: block; }
.saldo-cuenta span, .saldo-cuenta small { color: var(--suave); font-size: 13px; }
.saldo-cuenta strong { margin: 3px 0; font-size: 24px; }
.fechas-cuenta { display: flex; flex-wrap: wrap; gap: 18px; padding: 10px 12px; border-radius: 6px; background: #f5f8f9; color: var(--suave); font-size: 14px; }
.pagos-realizados { display: grid; gap: 5px; color: var(--verde); font-size: 14px; }
.formulario-abono { display: grid; grid-template-columns: .8fr .8fr 1fr 1.2fr auto; align-items: end; gap: 10px; padding-top: 13px; border-top: 1px solid var(--borde); }
.cancelar-cuenta { text-align: right; }
.formulario-ingreso { display: grid; grid-template-columns: repeat(4, 1fr); align-items: end; gap: 13px; }
.formulario-ingreso .campo-doble { grid-column: span 2; }
.filtros-ingresos { grid-template-columns: 1fr 1fr auto auto; margin: 18px 0; }
.total-trabajadores { min-width: 210px; padding: 12px 20px; border: 1px solid var(--borde); border-top: 3px solid var(--texto); border-radius: 6px; background: var(--panel); color: var(--texto); text-align: right; }
.total-trabajadores span, .total-trabajadores strong, .dato-secundario { display: block; }
.total-trabajadores span, .dato-secundario { font-size: 14px; }
.total-trabajadores strong { margin-top: 4px; font-size: 28px; font-weight: 800; font-stretch: 110%; font-variant-numeric: tabular-nums; }
.acciones-trabajadores { display: flex; align-items: end; gap: 12px; }
.formulario-rol-semanal { display: flex; align-items: end; gap: 10px; }
.formulario-rol-semanal label { min-width: 150px; }
.dato-secundario { margin-top: 4px; color: var(--suave); }
.navegador-paginas { display: flex; align-items: center; justify-content: center; gap: 2px; margin-top: 10px; }
.navegador-paginas a, .navegador-paginas span { display: grid; width: 25px; height: 25px; padding: 0; place-items: center; border-radius: 5px; color: var(--suave); font-size: 14px; line-height: 1; }
.navegador-paginas a:hover { background: #edf4f6; color: var(--primario); }
.navegador-paginas .pagina-flecha { font-size: 18px; }
.navegador-paginas .pagina-numero.activa { background: var(--primario); color: white; font-weight: 800; }
.navegador-paginas .pagina-puntos { width: 16px; }
.navegador-paginas .deshabilitado { opacity: .3; }
.saldo-pendiente { color: var(--primario); font-size: 17px; }
.formulario-trabajador { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); align-items: end; gap: 12px; }
.campos-sueldo { display: contents; }
.campos-sueldo [hidden] { display: none; }
.campos-sueldo .ayuda { grid-column: 1 / -1; margin: 0; }
.metricas-trabajador { grid-template-columns: repeat(3, 1fr); margin-bottom: 20px; }
.metrica-destacada { border-top: 3px solid var(--texto) !important; }
.rejilla-trabajador { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 18px; }
.formulario-movimiento { display: grid; gap: 12px; }
.campos-dobles { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lista-movimientos { display: grid; gap: 0; }
.movimiento-trabajador { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 13px; padding: 13px 0; border-bottom: 1px solid var(--borde); }
.movimiento-trabajador:last-child { border-bottom: 0; }
.movimiento-trabajador span { display: block; margin-top: 4px; color: var(--suave); font-size: 13px; }
.pago-hecho > strong { color: var(--verde); }
.boton-texto.peligro { color: #a73636; }
.ayuda-campo { margin: -4px 0 14px; color: var(--suave); font-size: 14px; }
.casilla-trabajo { display: flex !important; align-items: center; gap: 9px; padding: 11px 13px; border-radius: 6px; background: #f2f7f8; font-weight: 700; }
.casilla-trabajo input { width: 18px; height: 18px; margin: 0; }
.historial-jornadas { margin-bottom: 18px; }
.marcacion-rapida { display: grid; grid-template-columns: 1fr; gap: 6px; margin: 12px 0 18px; padding: 14px; border: 1px solid #c8dce3; border-radius: 6px; background: #f2f8fa; }
.estado-marcacion { display: flex; flex-wrap: wrap; gap: 5px 14px; }
.estado-marcacion strong { color: var(--primario); }
.estado-marcacion span { color: var(--texto); font-size: 15px; }
.ayuda-horario-manual { margin-top: 4px; }
.cabecera-seccion { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 13px; }
.cabecera-seccion h2 { margin: 4px 0 0; }
.estado-jornada { display: inline-block; padding: 4px 8px; border-radius: 4px; font-size: 13px; font-weight: 800; }
.estado-jornada.trabajado { background: #dcefe7; color: #176346; }
.estado-jornada.descanso { background: #edf0f2; color: #66747b; }
.metricas-banco { grid-template-columns: repeat(4, 1fr); }
.metricas-taller { grid-template-columns: repeat(6, 1fr); }
.rejilla-bancos { display: grid; grid-template-columns: .8fr 1.2fr; gap: 18px; margin-bottom: 18px; }
.rejilla-bancos .nueva-cuenta { margin: 0; }
.formulario-banco { display: grid; grid-template-columns: 1fr 1fr; align-items: end; gap: 12px; }
.formulario-estado-banco { display: grid; grid-template-columns: repeat(3, 1fr); align-items: end; gap: 12px; }
.campo-archivo-banco { grid-column: span 2; }
.campo-archivo-banco small { display: block; margin-top: 5px; color: var(--suave); font-weight: 400; }
.cuentas-banco { margin-bottom: 18px; }
.tarjetas-cuentas-banco { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.cuenta-banco { display: grid; gap: 5px; padding: 15px; border: 1px solid var(--borde); border-radius: 6px; color: var(--texto); }
.cuenta-banco:hover, .cuenta-banco.activa { border-color: var(--primario); color: var(--texto); background: #f3fafc; }
.cuenta-banco span, .cuenta-banco small { color: var(--suave); font-size: 13px; }
.cuenta-banco b { margin-top: 6px; font-size: 18px; }
.filtros-banco { grid-template-columns: 1fr 1fr auto auto; }
.tipo-banco { display: inline-block; padding: 5px 8px; border-radius: 4px; font-size: 12px; font-weight: 800; }
.tipo-banco.credito { background: #e7f6ee; color: var(--verde); }
.tipo-banco.debito { background: #feeceb; color: var(--rojo); }
.monto-entrada { color: var(--verde); }
.monto-salida { color: var(--rojo); }
.lista-estados-banco { display: grid; gap: 14px; }
.estado-banco { display: grid; grid-template-columns: 1fr auto; align-items: start; gap: 20px; }
.estado-banco p { margin: 8px 0 0; }
.saldos-estado-banco { min-width: 190px; text-align: right; }
.saldos-estado-banco span, .saldos-estado-banco strong, .saldos-estado-banco a { display: block; }
.saldos-estado-banco span { color: var(--suave); font-size: 13px; }
.saldos-estado-banco strong { margin: 4px 0; font-size: 22px; }
.saldos-estado-banco a { margin-top: 7px; font-size: 14px; }
.movimiento-manual-banco { grid-column: 1 / -1; padding-top: 12px; border-top: 1px solid var(--borde); }
.movimiento-manual-banco summary { color: var(--primario); font-size: 14px; font-weight: 800; cursor: pointer; }
.movimiento-manual-banco form { display: grid; grid-template-columns: 1fr 2fr 1fr 1fr 1.2fr 1fr auto; align-items: end; gap: 10px; margin-top: 12px; }
.cabecera-movimiento-banco { align-items: center; }
.lista-conciliaciones-banco > div { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 12px 0; border-bottom: 1px solid var(--borde); }
.lista-conciliaciones-banco > div:last-child { border-bottom: 0; }
.lista-conciliaciones-banco strong, .lista-conciliaciones-banco span { display: block; }
.lista-conciliaciones-banco span { margin-top: 4px; color: var(--suave); font-size: 14px; }
.rejilla-candidatos-banco { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.lista-candidatos-banco { display: grid; gap: 10px; }
.lista-candidatos-banco form { display: grid; grid-template-columns: 1fr 120px auto; align-items: end; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--borde); }
.lista-candidatos-banco form:last-child { border-bottom: 0; }
.lista-candidatos-banco strong, .lista-candidatos-banco span, .lista-candidatos-banco small { display: block; }
.lista-candidatos-banco span, .lista-candidatos-banco small { margin-top: 4px; color: var(--suave); font-size: 13px; }
.acciones-movimiento-banco { display: flex; justify-content: flex-end; margin-top: 22px; }
.aviso-banco { margin-top: 18px; }
.formulario-nombre-negocio { display: grid; grid-template-columns: 1fr minmax(250px, 420px) auto; align-items: end; gap: 18px; margin-bottom: 18px; }
.formulario-nombre-negocio h2, .formulario-nombre-negocio p { margin: 4px 0; }
.formulario-nombre-negocio p { color: var(--suave); font-size: 15px; }
.nombre-negocio-factura { border-left: 4px solid var(--primario); }
.factura-emitida-obra { display: grid; grid-template-columns: minmax(240px, 1fr) auto minmax(270px, .8fr); align-items: end; gap: 22px; margin-bottom: 18px; border-left: 4px solid var(--verde); }
.factura-emitida-obra h2, .factura-emitida-obra p { margin: 4px 0; }
.factura-emitida-obra p { color: var(--suave); line-height: 1.45; }
.factura-emitida-obra form { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 10px; }
.factura-emitida-obra form .boton.fantasma { grid-column: 1 / -1; }
.asignaciones-detalle-factura { margin-bottom: 18px; }
.cabecera-asignaciones-detalle { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-bottom: 13px; }
.cabecera-asignaciones-detalle h2 { margin: 4px 0 0; }
.resumen-asignacion-detalle { display: grid; grid-template-columns: repeat(3, minmax(110px, 1fr)); gap: 7px; margin-bottom: 12px; }
.resumen-asignacion-detalle > div { padding: 9px 11px; border-radius: 7px; background: #f5f8f9; }
.resumen-asignacion-detalle span, .resumen-asignacion-detalle strong { display: block; }
.resumen-asignacion-detalle span { color: var(--suave); font-size: 12px; }
.resumen-asignacion-detalle strong { margin-top: 3px; font-size: 15px; }
.resumen-asignacion-detalle .pendiente { background: #fff4d6; color: #76520a; }
.resumen-asignacion-detalle .completo { background: #e7f6ee; color: var(--verde); }
.destinos-detalle-factura { display: grid; gap: 9px; }
.destino-detalle-factura { padding: 11px 13px; border: 1px solid var(--borde); border-radius: 6px; background: #fcfdfd; }
.cabecera-destino-detalle { display: flex; align-items: start; justify-content: space-between; gap: 16px; }
.cabecera-destino-detalle h3 { margin: 6px 0 0; font-size: 15px; }
.cabecera-destino-detalle small { display: block; margin-top: 3px; color: var(--suave); font-size: 13px; }
.cabecera-destino-detalle > strong { padding-top: 4px; white-space: nowrap; }
.lineas-destino-detalle { margin-top: 8px; border-top: 1px solid #edf0f2; }
.lineas-destino-detalle > div { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 12px; padding: 7px 0; border-bottom: 1px solid #edf0f2; align-items: center; font-size: 14px; }
.lineas-destino-detalle > div:last-child { border-bottom: 0; padding-bottom: 0; }
.lineas-destino-detalle span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lineas-destino-detalle small { color: var(--suave); white-space: nowrap; }
.lineas-destino-detalle strong { white-space: nowrap; }
.asignacion-vacia { margin: 0; padding: 13px; }
.resumen-cobro-factura { display: grid; grid-template-columns: repeat(3, minmax(105px, 1fr)); gap: 8px; }
.resumen-cobro-factura > div { padding: 10px 12px; border-radius: 6px; background: #f5f8f9; }
.resumen-cobro-factura span, .resumen-cobro-factura strong { display: block; }
.resumen-cobro-factura span { color: var(--suave); font-size: 12px; }
.resumen-cobro-factura strong { margin-top: 4px; }
.resumen-cobro-factura .saldo { background: #fff4d6; color: #76520a; }
.cabecera-asignacion-tabla { display: grid; grid-template-columns: 1fr minmax(280px, 430px); align-items: end; gap: 24px; margin-bottom: 16px; }
.cabecera-asignacion-tabla h2, .cabecera-asignacion-tabla p { margin: 4px 0; }
.cabecera-asignacion-tabla p { color: var(--suave); }
.tabla-asignacion-factura .columna-check { width: 92px; text-align: center; }
.tabla-asignacion-factura .cantidad-linea { min-width: 125px; margin: 0; }
.check-tabla { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; }
.check-tabla input { width: 18px; min-height: 18px; margin: 0; }
.check-linea { display: inline-grid; place-items: center; cursor: pointer; }
.check-linea input { position: absolute; opacity: 0; pointer-events: none; }
.check-linea span { display: grid; width: 28px; height: 28px; place-items: center; border: 2px solid #9aabb3; border-radius: 7px; background: white; }
.check-linea input:checked + span { border-color: var(--primario); background: var(--primario); }
.check-linea input:checked + span::after { content: "✓"; color: white; font-size: 18px; font-weight: 900; }
.linea-asignada { color: var(--suave); background: #f8fafb; }
.asignacion-resumen { color: var(--verde); }
.fila-pendiente { background: #fff9e8; color: #73530b; }
.fila-pendiente td { border-top: 1px dashed #e4ca7c; }
.pie-asignacion-factura { position: sticky; bottom: 12px; z-index: 10; display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 16px; padding: 16px 20px; border: 1px solid #b8d2dc; border-radius: 11px; background: rgba(255,255,255,.96); box-shadow: 0 8px 28px rgba(10,45,60,.14); }
.pie-asignacion-factura span { color: var(--suave); font-size: 15px; }
.asignaciones-anteriores { margin-top: 18px; }
.asignaciones-anteriores > summary { color: var(--primario); font-weight: 800; cursor: pointer; }
.asignaciones-anteriores[open] > summary { margin-bottom: 15px; }
.lista-asignaciones-anteriores > div { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 10px 0; border-bottom: 1px solid var(--borde); }
.lista-asignaciones-anteriores > div:last-child { border-bottom: 0; }
.catalogo-configuracion { align-items: start; }
.formulario-catalogo { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ayuda-catalogo { position: sticky; top: 18px; }
.busqueda-compacta { min-width: 220px; }
.busqueda-compacta input { min-height: 34px; margin-top: 3px; padding: 6px 9px; }
.seleccion-catalogo table td:nth-child(2) { max-width: 420px; }
.selector-ofertas { display: grid; grid-template-columns: minmax(180px, .65fr) minmax(300px, 1.35fr) auto; align-items: end; gap: 14px; margin-bottom: 18px; }
.selector-ofertas h2 { margin: 4px 0 0; }
.selector-ofertas .acciones { padding-bottom: 1px; }
#lineas-presupuesto textarea { min-width: 290px; min-height: 68px; }
#lineas-presupuesto input[name="descripcion"] { min-width: 290px; }
#lineas-presupuesto input[name="unidad"] { min-width: 105px; }
.resultados-materiales { display: grid; gap: 7px; margin-top: 18px; }
.resultados-materiales h2 { margin-bottom: 5px; }
.resultado-material { display: flex; width: 100%; padding: 10px 12px; align-items: center; justify-content: space-between; gap: 15px; border: 1px solid var(--borde); border-radius: 7px; background: white; color: var(--texto); text-align: left; cursor: pointer; }
.resultado-material:hover { border-color: var(--primario); background: #f3fafc; }
.resultado-material small { color: var(--suave); text-align: right; }
.revision-presupuesto { border-left: 4px solid var(--verde); }
.revision-presupuesto.revision-pendiente { border-left-color: #d29b20; }
.revision-presupuesto ul { margin: 8px 0; padding-left: 20px; }
.acciones-cierre-presupuesto { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.acciones-cierre-presupuesto h2, .acciones-cierre-presupuesto p { margin: 4px 0; }
.selector-producto-obra { display: grid; grid-template-columns: minmax(300px, 1fr) 130px auto; align-items: end; gap: 10px; margin: 4px 0 16px; padding: 13px; border-radius: 6px; background: #f1f7f9; }
.documento-cliente { max-width: 920px; margin: 20px auto; padding: 42px; }
.documento-cliente header { display: flex; align-items: start; justify-content: space-between; gap: 20px; padding-bottom: 20px; border-bottom: 2px solid var(--primario); }
.documento-cliente header h1 { margin: 4px 0 0; }
.datos-documento { display: grid; gap: 4px; text-align: right; }
.datos-documento span { color: var(--suave); }
.destinatario-documento { padding: 26px 0; }
.destinatario-documento h2, .destinatario-documento p { margin: 4px 0; }
.destinatario-documento > span { color: var(--suave); font-size: 14px; letter-spacing: .08em; }
.total-documento { display: flex; align-items: center; justify-content: flex-end; gap: 35px; padding: 22px 8px; font-size: 16px; }
.total-documento strong { color: var(--primario); font-size: 28px; }
.condiciones-documento { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--borde); }
.condiciones-documento p { white-space: pre-line; }
.texto-peligro { color: var(--rojo); font-weight: 800; }
@media (max-width: 1050px) {
    .metricas { grid-template-columns: repeat(3, 1fr); }
    .filtros, .filtros-facturas { grid-template-columns: repeat(2, 1fr); }
    .rejilla-bancos, .rejilla-candidatos-banco { grid-template-columns: 1fr; }
    .tarjetas-cuentas-banco { grid-template-columns: repeat(2, 1fr); }
    .movimiento-manual-banco form { grid-template-columns: repeat(2, 1fr); }
    .formulario-nombre-negocio { grid-template-columns: 1fr; }
    .configuracion-nombre-empresa, .sri-estado-panel { grid-template-columns: 1fr; }
    .factura-emitida-obra { grid-template-columns: 1fr; }
    .cabecera-asignacion-tabla { grid-template-columns: 1fr; }
    .selector-ofertas { grid-template-columns: 1fr; align-items: stretch; }
}
/* Menú plegado: el menú completo solo cabe en pantallas anchas */
@media (max-width: 1180px) {
    .barra { position: sticky; top: 0; z-index: 50; height: 64px; padding: 10px 16px; align-items: center; }
    .marca-icono { width: 36px; height: 36px; }
    .menu-boton { display: grid; width: 42px; height: 42px; padding: 10px; place-content: center; gap: 5px; border: 1px solid var(--texto); border-radius: 6px; background: transparent; cursor: pointer; }
    .menu-boton span { display: block; width: 20px; height: 2px; border-radius: 2px; background: var(--texto); transition: transform .18s, opacity .18s; }
    .menu-boton.activo span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    .menu-boton.activo span:nth-child(2) { opacity: 0; }
    .menu-boton.activo span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
    .menu-principal { display: none; position: absolute; top: 62px; left: 0; right: 0; max-height: calc(100vh - 62px); padding: 6px 16px 18px; overflow-y: auto; flex-direction: column; align-items: stretch; gap: 0; background: var(--fondo); border-bottom: 2px solid var(--texto); box-shadow: 0 14px 24px rgba(29, 37, 40, .14); }
    .menu-principal.abierto { display: flex; }
    .menu-principal a, .menu-principal button { width: 100%; min-height: 44px; padding: 11px 2px; text-align: left; }
    .menu-principal > a, .menu-grupo { border-top: 1px solid var(--borde); }
    .menu-principal > a:first-child { border-top: 0; }
    .menu-principal .nav-registro-rapido { order: -1; margin: 6px 0 10px; padding: 11px 14px; text-align: center; }
    .menu-principal .nav-registro-rapido + a { border-top: 0; }
    .menu-principal form { border-top: 1px solid var(--borde); margin-top: 7px; padding-top: 7px; }
    .menu-grupo { width: 100%; }
    .menu-grupo summary { min-height: 44px; padding: 11px 2px; }
    .menu-grupo > div { position: static; min-width: 0; margin: 0 0 8px; padding: 0 0 0 14px; border: 0; border-left: 2px solid var(--borde); border-radius: 0; background: transparent; box-shadow: none; }
    .menu-grupo > div a { padding: 10px 6px; }
    .campana, .menu-cuenta { order: 0; }
    .campana { display: flex; align-items: center; }
    .campana-texto { display: inline; }
    .campana span { position: static; margin-left: 8px; }
}
@media (max-width: 760px) {
    .contenedor { width: min(100% - 24px, 1240px); margin-top: 22px; }
    .encabezado-pagina, .revision-item { align-items: stretch; flex-direction: column; }
    .cabecera-asignaciones-detalle { align-items: stretch; flex-direction: column; }
    .resumen-asignacion-detalle { grid-template-columns: 1fr; }
    .lineas-destino-detalle > div { grid-template-columns: minmax(0, 1fr) auto; gap: 5px 10px; }
    .lineas-destino-detalle small { grid-column: 1; grid-row: 2; }
    .lineas-destino-detalle strong { grid-column: 2; grid-row: 1 / span 2; }
    .metricas, .rejilla-principal, .datos-grid, .resumen-detalle, .pestanas-facturas, .formulario-total-obra, .configuracion-empresa, .datos-facturacion-obra { grid-template-columns: 1fr; }
    .cierre-obra { align-items: stretch; flex-direction: column; }
    .configuracion-empresa form, .configuracion-sri-acceso { align-items: stretch; flex-direction: column; }
    .sri-formulario, .sri-datos-documento, .sri-lista-estado { grid-template-columns: 1fr; }
    .sri-formulario .campo-ancho, .sri-datos-documento .sri-clave { grid-column: auto; }
    .carga form, .acciones { align-items: stretch; flex-direction: column; }
    .buscador-productos, .campos-cliente, .comparacion-precios, .formulario-simple, .formulario-precio, .tarjetas-obras { grid-template-columns: 1fr; }
    .campos-cliente .campo-ancho { grid-column: auto; }
    .formulario-simple .campo-ancho, .formulario-precio .campo-ancho { grid-column: auto; }
    .metricas-cortas, .metricas-informes, .linea-asignacion, .linea-asignacion form, .filtros-informe { grid-template-columns: 1fr; }
    .configuracion-material, .inventario-item, .inventario-item form, .pedido-item, .producto-propio, .producto-propio form { grid-template-columns: 1fr; }
    .acciones-pedido form, .datos-pedido { flex-direction: column; }
    .candidato-factura, .candidato-factura form { grid-template-columns: 1fr; }
    .formulario-gasto-rapido { grid-template-columns: 1fr; }
    .formulario-gasto-rapido .campo-ancho { grid-column: auto; }
    .cierre-sin-factura, .gasto-confirmado-sin-factura, .aviso-notificaciones { align-items: stretch; flex-direction: column; }
    .gasto-confirmado-sin-factura form { margin-left: 0; }
    .aviso-notificaciones { right: 12px; bottom: 12px; width: calc(100% - 24px); }
    .rejilla-formulario-obra, .formulario-item-obra { grid-template-columns: 1fr; }
    .rejilla-formulario-obra .campo-ancho { grid-column: auto; }
    .formulario-obra-rapida { padding: 18px; }
    .total-factura-cabecera { text-align: left; }
    .formulario-cuenta, .formulario-abono { grid-template-columns: 1fr; }
    .formulario-ingreso, .filtros-ingresos { grid-template-columns: 1fr; }
    .formulario-trabajador, .metricas-trabajador, .rejilla-trabajador { grid-template-columns: 1fr; }
    .total-trabajadores { width: 100%; text-align: left; }
    .acciones-trabajadores, .formulario-rol-semanal { width: 100%; align-items: stretch; flex-direction: column; }
    .formulario-rol-semanal label { min-width: 0; }
    .tabla-scroll { width: 100%; min-width: 100%; resize: none; }
    .movimiento-trabajador { grid-template-columns: 1fr auto; }
    .movimiento-trabajador form { grid-column: 1 / -1; }
    .metricas-banco, .tarjetas-cuentas-banco, .formulario-banco,
    .formulario-estado-banco, .filtros-banco, .movimiento-manual-banco form,
    .lista-candidatos-banco form { grid-template-columns: 1fr; }
    .campo-archivo-banco { grid-column: auto; }
    .estado-banco { grid-template-columns: 1fr; }
    .saldos-estado-banco { text-align: left; }
    .pie-asignacion-factura { align-items: stretch; flex-direction: column; bottom: 6px; }
    .pie-asignacion-factura .boton { width: 100%; }
    .formulario-ingreso .campo-doble { grid-column: auto; }
    .formulario-cuenta .campo-doble { grid-column: auto; }
    .cuenta-cabecera { flex-direction: column; }
    .saldo-cuenta { text-align: left; }
    .contenido-detalle-factura { padding-left: 18px; }
    .pestanas-cuentas { overflow-x: auto; }
    .resultado-item { grid-template-columns: 1fr; }
    .cabecera-movil { align-items: end; }
    .cabecera-movil p { max-width: 270px; font-size: 15px; }
    .formulario-movil { padding: 18px; }
    .campos-movil-dobles { grid-template-columns: 1fr; }
    .gasto-movil { padding: 17px; }
    .formulario-catalogo, .selector-producto-obra { grid-template-columns: 1fr; }
    .ayuda-catalogo { position: static; }
    .acciones-cierre-presupuesto { align-items: stretch; flex-direction: column; }
    .documento-cliente { padding: 20px; }
    .documento-cliente header { flex-direction: column; }
    .datos-documento { text-align: left; }
}
.metricas-saldos { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.metricas-saldos small, .metricas-cortas small { display: block; line-height: 1.45; margin-top: 7px; color: var(--suave); }
.navegador-semana { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; margin: 18px 0; }
.navegador-semana form { display: flex; gap: 8px; align-items: end; }
.jornada-sin-registro { background: #f7f9fa; color: var(--suave); }
.filtros-deudas { grid-template-columns: minmax(200px, 2fr) minmax(160px, 1fr) auto auto; }
.tabla-deudas td { vertical-align: middle; }
.texto-multilinea { white-space: pre-line; overflow-wrap: anywhere; }
.campos-referencia { margin-top: 12px; padding-top: 8px; border-top: 1px solid var(--borde); }
.campos-referencia summary, .medidas-guardadas summary, .servicios-mensuales summary { color: var(--primario); cursor: pointer; font-weight: 700; }
.campos-referencia label { margin-top: 10px; }
.campos-referencia small { line-height: 1.4; font-size: 13px; color: var(--suave); }
.campos-referencia input[type=file] { min-width: 0; width: 100%; max-width: 340px; }
.formulario-referencia { display: grid; grid-template-columns: 1.4fr 1.3fr 140px auto; gap: 12px; align-items: end; }
.galeria-referencias { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; margin-top: 20px; }
.galeria-referencias figure { margin: 0; padding: 12px; border: 1px solid var(--borde); border-radius: 6px; }
.galeria-referencias img { width: 100%; height: 180px; object-fit: contain; background: #f7f9fa; }
.galeria-referencias figcaption { padding: 10px 0; overflow-wrap: anywhere; }
.galeria-referencias small, .referencia-general small { display: block; color: var(--suave); margin-top: 4px; }
.medidas-guardadas { margin-top: 14px; padding: 12px; background: #f7f9fa; border-radius: 7px; }
.medidas-guardadas form { display: grid; gap: 10px; padding-top: 12px; }
.medidas-guardadas .boton { justify-self: start; }
.membrete-presupuesto { display: flex; gap: 20px; align-items: center; justify-content: space-between; padding-bottom: 22px; border-bottom: 3px solid var(--primario); margin-bottom: 22px; }
.marca-documento { display: flex; gap: 16px; align-items: center; }
.marca-documento img { width: 105px; max-height: 65px; object-fit: contain; }
.marca-documento h2 { margin: 0 0 4px; font-size: 23px; color: var(--primario); }
.marca-documento span, .identidad-legal { color: var(--suave); font-size: 14px; }
.identidad-legal { text-align: right; line-height: 1.5; max-width: 240px; }
.documento-cliente .tabla-presupuesto-cliente { table-layout: fixed; width: 100%; }
.tabla-presupuesto-cliente th:first-child { width: 49%; }
.tabla-presupuesto-cliente th:not(:first-child) { width: 17%; }
.tabla-presupuesto-cliente td, .tabla-presupuesto-cliente th { overflow-wrap: anywhere; white-space: normal; }
.tabla-presupuesto-cliente th { font-size: 12px; }
.medidas-cliente { margin-top: 10px; padding: 8px; background: #f3f7f9; font-size: 14px; border-left: 2px solid var(--primario); }
.referencia-item { margin: 12px 0 0; }
.referencia-item img { display: block; max-width: 100%; max-height: 190px; object-fit: contain; }
.referencia-item figcaption { font-size: 12px; color: var(--suave); margin-top: 5px; }
.referencia-general { margin: 25px 0 0; padding-top: 18px; border-top: 1px solid var(--borde); break-inside: avoid; }
.referencia-general img { display: block; max-width: 100%; max-height: 620px; margin: 15px auto; object-fit: contain; }
.pie-documento { margin-top: 24px; padding-top: 12px; border-top: 1px solid var(--borde); color: var(--suave); font-size: 12px; }
[hidden] { display: none !important; }
@media (max-width: 1000px) {
    .metricas-saldos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .formulario-referencia { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 760px) {
    .metricas-saldos, .filtros-deudas, .formulario-referencia { grid-template-columns: 1fr; }
    .marcacion-rapida { grid-template-columns: 1fr; }
    .membrete-presupuesto { align-items: start; flex-direction: column; }
    .identidad-legal { text-align: left; max-width: none; }
    .marca-documento img { width: 70px; }
    .documento-cliente .tabla-presupuesto-cliente td { padding: 8px 4px; font-size: 13px; }
    .navegador-semana form { flex-wrap: wrap; }
}
@media screen and (max-width: 760px) {
    .documento-cliente .tabla-presupuesto-cliente, .tabla-presupuesto-cliente tbody { display: block; }
    .tabla-presupuesto-cliente thead { display: none; }
    .tabla-presupuesto-cliente tr { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-bottom: 1px solid var(--borde); padding: 10px 0; }
    .documento-cliente .tabla-presupuesto-cliente td { display: block; border: 0; padding: 10px 5px; }
    .tabla-presupuesto-cliente td:first-child { grid-column: 1 / -1; }
    .tabla-presupuesto-cliente td[data-label] { background: #f5f8fa; font-size: 14px; }
    .tabla-presupuesto-cliente td[data-label]::before { content: attr(data-label); display: block; font-size: 12px; font-weight: 700; color: var(--suave); margin-bottom: 5px; }
}
@media print {
    .barra, .no-imprimir, .volver, body > footer { display: none !important; }
    body { background: white; }
    .contenedor { width: 100%; max-width: none; margin: 0; }
    .documento-cliente { max-width: none; margin: 0; padding: 0; border: 0; box-shadow: none; }
    .documento-cliente table { width: 100%; }
    @page { size: A4; margin: 14mm; }
    .aviso-notificaciones { display: none !important; }
    .membrete-presupuesto { flex-direction: row; align-items: center; }
    .identidad-legal { text-align: right; }
    .documento-cliente header { flex-direction: row; }
    .documento-cliente thead { display: table-header-group; }
    .documento-cliente tr { break-inside: avoid; }
    .documento-cliente { font-size: 10pt; }
    .documento-cliente .tabla-presupuesto-cliente td { font-size: 9pt; }
    .referencia-general img { max-height: 210mm; }
    .referencia-item img { max-height: 42mm; }
    .total-documento, .condiciones-documento, .membrete-presupuesto { break-inside: avoid; }
    .documento-cliente * { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}

/* Plan de cortes de tubos */
.item-material { border-bottom: 1px solid var(--borde); }
.item-material:last-child { border-bottom: 0; }
.item-material .item-obra { border-bottom: 0; }
.calculo-unidades, .plan-retazos { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; margin: 12px 0; }
.calculo-unidades label, .plan-retazos label { flex: 1 1 220px; }
.plan-cortes { padding: 4px 4px 16px; }
.plan-resumen { margin: 0 0 10px; }
.plan-resumen span { display: block; color: var(--suave); font-size: 15px; }
.plan-tubo { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.plan-tubo-nombre { flex: 0 0 104px; color: var(--suave); font-size: 15px; }
.plan-tubo-cuerpo { flex: 1; display: flex; height: 30px; overflow: hidden; border: 1px solid var(--borde); border-radius: 6px; background: #f1f3f5; }
.plan-tubo.es-retazo .plan-tubo-cuerpo { border-style: dashed; }
.plan-pieza { display: flex; align-items: center; justify-content: center; min-width: 0; overflow: hidden; border-right: 3px solid white; background: #d9eef5; color: var(--primario-oscuro); font-size: 14px; font-weight: 600; white-space: nowrap; }
.plan-sobra { display: flex; align-items: center; justify-content: center; min-width: 0; overflow: hidden; background: repeating-linear-gradient(45deg, #eceff1 0 6px, #e0e4e7 6px 12px); color: var(--suave); font-size: 14px; white-space: nowrap; }
.plan-sobra.util { background: #e8f5ee; color: var(--verde); }
.plan-leyenda { margin: 8px 0 0; color: var(--suave); font-size: 15px; }
.fila-corte { display: grid; grid-template-columns: 2fr 1.3fr 1fr auto; gap: 8px; margin-bottom: 8px; align-items: center; }
.medidas-linea { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; margin: 8px 0; padding: 10px; border: 1px dashed var(--borde); border-radius: 6px; }
.medidas-linea > strong { flex-basis: 100%; }
.medidas-linea label { flex: 1 1 110px; }
.planchas { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 14px; margin: 10px 0; }
.plancha { margin: 0; }
.plancha svg { width: 100%; height: auto; display: block; }
.plancha-fondo { fill: var(--fondo); stroke: var(--borde); stroke-width: 12; }
.plancha-pieza { fill: color-mix(in srgb, var(--primario) 18%, transparent); stroke: var(--primario); stroke-width: 8; }
.plancha text { fill: var(--texto); }
.plancha figcaption { font-size: 15px; color: var(--suave); margin-top: 4px; }
.fila-pieza { display: grid; grid-template-columns: 2fr 1.2fr 1.2fr 0.8fr auto; gap: 8px; margin-bottom: 8px; align-items: center; }
@media (max-width: 600px) { .fila-pieza { grid-template-columns: 1fr 1fr; } .fila-pieza input:first-child { grid-column: 1 / -1; } .fila-pieza [data-quitar-fila] { grid-column: 1 / -1; justify-self: end; } }
.tabla-piezas { width: 100%; border-collapse: collapse; margin: 8px 0; }
.tabla-piezas th, .tabla-piezas td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--borde); }
.copiar-receta summary small { color: var(--suave); font-weight: normal; }
.copiar-receta .item-obra-valor { display: flex; gap: 8px; align-items: center; }
.acciones-linea { display: flex; gap: 12px; align-items: center; justify-content: flex-end; }
.editar-en-linea { margin: -4px 0 10px; font-size: 14px; }
.editar-en-linea form, .editar-medida form { display: grid; gap: 8px; margin-top: 8px; }
.medida-receta { flex-wrap: wrap; }
.editar-medida { flex-basis: 100%; font-size: 14px; }
#formulario-material.editando { outline: 2px solid var(--primario); }
.nota-ajuste { margin: 2px 0 8px; font-size: 15px; color: var(--primario-oscuro); }
.ajustar-linea { margin-top: 8px; font-size: 14px; }
.ajustar-linea form { display: grid; gap: 8px; margin-top: 8px; min-width: 220px; }
.permisos-explicados { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.permisos-explicados small { display: block; color: var(--suave); margin-top: 4px; }
.item-usuario { border-bottom: 1px solid var(--borde); padding-bottom: 6px; }
.item-usuario.inactivo { opacity: .6; }
.tramos-antiguedad { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin: 10px 0; }
.tramo { padding: 10px 12px; border: 1px solid var(--borde); border-radius: 6px; }
.tramo span { display: block; color: var(--suave); font-size: 15px; }
.tramo.atrasado { border-color: var(--rojo); }
.estado-cuenta table { width: 100%; border-collapse: collapse; margin-bottom: 14px; }
.estado-cuenta th, .estado-cuenta td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--borde); }
.lista-alertas { display: grid; gap: 12px; }
.alerta { display: grid; gap: 4px; padding: 16px 18px; border: 1px solid var(--borde); border-left: 6px solid var(--amarillo); border-radius: 6px; background: var(--panel); color: var(--texto); text-decoration: none; }
.alerta:hover { border-color: var(--primario); }
.alerta-urgente { border-left-color: var(--rojo); }
.alerta strong { font-size: 1.05rem; }
.alerta small { color: var(--suave); }
.alerta-nivel { font-size: 13px; font-weight: 700; letter-spacing: .04em; color: var(--suave); }
.alerta-urgente .alerta-nivel { color: var(--rojo); }
.lista-usuarios { padding: 6px 0; }
.fila-usuario { border-bottom: 1px solid var(--borde); }
.fila-usuario:last-child { border-bottom: 0; }
.fila-usuario > summary { display: flex; align-items: center; gap: 14px; padding: 14px 22px; cursor: pointer; list-style: none; }
.fila-usuario > summary::-webkit-details-marker { display: none; }
.fila-usuario[open] > summary { background: var(--fondo); }
.fila-usuario.inactivo > summary { opacity: .6; }
.usuario-datos { display: grid; flex: 1; gap: 2px; }
.usuario-datos small { color: var(--suave); font-weight: 400; }
.avatar-claro { background: #e3f1f5; color: var(--primario-oscuro); }
.etiqueta-rol { padding: 4px 10px; border-radius: 4px; font-size: 14px; font-weight: 700; background: #e8eef1; color: #3c5561; white-space: nowrap; }
.rol-admin { background: #e3f1f5; color: #0f5e75; }
.rol-operador { background: #eaf6ee; color: #1f6b3a; }
.rol-taller { background: #fff4df; color: #8a5a00; }
.rol-inactivo { background: #fdecea; color: #b42318; }
.boton-chico { padding: 6px 12px; font-size: 15px; }
.formulario-usuario { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 16px; align-items: end; padding: 6px 22px 20px; }
#nuevo-usuario .formulario-usuario { padding: 12px 0 0; }
.formulario-usuario label small { color: var(--suave); font-weight: 400; }
.acciones-formulario { display: flex; justify-content: flex-start; }
.permisos-ayuda summary { cursor: pointer; }
.permisos-ayuda .permisos-explicados { margin-top: 14px; }
.permisos-explicados small { display: block; margin-top: 6px; color: var(--suave); }
@media (max-width: 760px) { .formulario-usuario { grid-template-columns: 1fr; } .fila-usuario > summary { flex-wrap: wrap; padding: 12px 16px; } }
.resumen-sueldo { margin-top: 6px !important; font-size: 14px; color: var(--primario-oscuro) !important; }
.pestanas-trabajador { display: flex; gap: 4px; margin: 22px 0 16px; border-bottom: 2px solid var(--borde); overflow-x: auto; }
.pestanas-trabajador a { padding: 11px 16px; margin-bottom: -2px; border-bottom: 3px solid transparent; color: var(--suave); font-weight: 600; white-space: nowrap; }
.pestanas-trabajador a small { margin-left: 4px; padding: 1px 7px; border-radius: 6px; background: var(--fondo); font-size: 13px; }
.pestanas-trabajador a[aria-selected="true"] { border-bottom-color: var(--primario); color: var(--primario-oscuro); }
.pestana[hidden] { display: none !important; }
.resumen-semana { margin: 10px 0 0; }
#registro-jornada > summary { cursor: pointer; }
#registro-jornada > summary small { color: var(--suave); font-weight: 400; }
.formulario-jornada { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; align-items: end; margin-top: 14px; }
.formulario-jornada .campo-ancho { grid-column: span 2; }
.formulario-datos-trabajador { max-width: 760px; }
@media (max-width: 760px) { .formulario-jornada { grid-template-columns: 1fr 1fr; } }
.dialogo.dialogo-registro { width: min(520px, calc(100% - 24px)); max-width: 520px; padding: 0; }
.dialogo-registro .dialogo-cabecera { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--borde); }
.dialogo-registro .dialogo-cabecera h2 { margin: 0; font-size: 1.2rem; }
.dialogo-registro [data-contenido] { padding: 16px 20px 20px; }
.formulario-registro-rapido { display: grid; gap: 12px; }
.formulario-registro-rapido .acciones { justify-content: flex-end; }
.formulario-registro-rapido .mas-datos summary { cursor: pointer; color: var(--primario); }
.formulario-registro-rapido .mas-datos[open] { display: grid; gap: 10px; }
.registro-listo { display: grid; gap: 8px; text-align: center; }
.registro-listo strong { font-size: 1.2rem; color: var(--verde); }
.registro-listo .acciones { justify-content: center; }
.dialogo-registro::backdrop { background: rgba(4, 25, 35, .45); }
.barra-catalogo { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.filtros-catalogo { display: flex; gap: 6px; flex-wrap: wrap; }
.filtros-catalogo a { padding: 7px 14px; border: 1px solid var(--borde); border-radius: 4px; color: var(--texto); font-size: 14px; }
.filtros-catalogo a small { margin-left: 4px; color: var(--suave); }
.filtros-catalogo a.activo { border-color: var(--primario); background: var(--primario); color: white; }
.filtros-catalogo a.activo small { color: #d6eef5; }
.buscador-catalogo { display: flex; gap: 8px; }
.buscador-catalogo input { min-width: 260px; }
.nombre-producto { color: var(--texto); }
.nombre-producto:hover strong { color: var(--primario); }
.pie-seleccion { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin-top: 12px; }
.pie-seleccion small { color: var(--suave); }
.formulario-registro-rapido label small { color: var(--suave); font-weight: 400; }
@media (max-width: 700px) { .buscador-catalogo, .buscador-catalogo input { width: 100%; min-width: 0; } }
/* Ventanas emergentes: márgenes internos, botón de cerrar redondo y campo de dinero limpio. */
.dialogo.dialogo-registro > form { padding: 16px 20px 20px; }
.boton-cerrar { display: grid; width: 34px; height: 34px; place-items: center; padding: 0; border: 0; border-radius: 50%; background: var(--fondo); color: var(--suave); font-size: 18px; line-height: 1; cursor: pointer; }
.boton-cerrar:hover { background: #e3eaee; color: var(--texto); }
.monto-movil input:focus { box-shadow: none; }
input[type=number]::-webkit-outer-spin-button, input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
input[type=number] { -moz-appearance: textfield; appearance: textfield; }
select { appearance: none; -webkit-appearance: none; padding-right: 36px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2365727d' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; }
.dialogo-registro .entrada-monto { padding: 0 14px; }
.dialogo-registro .monto-movil input { min-height: 56px; font-size: 28px; }
.selector-cliente { display: flex; align-items: flex-end; gap: 10px; }
.selector-cliente label { flex: 1; }
.campo-ancho-2 { grid-column: span 2; }
@media (max-width: 760px) { .campo-ancho-2 { grid-column: auto; } .selector-cliente { flex-wrap: wrap; } }
.valor-inventario { color: var(--suave); }
.valor-inventario strong { color: var(--texto); }
.movimientos-inventario > summary { cursor: pointer; }
.movimientos-inventario > summary small { margin-left: 6px; padding: 1px 8px; border-radius: 6px; background: var(--fondo); }
.movimientos-inventario[open] > summary { margin-bottom: 12px; }
#retazos .panel-titulo { align-items: center; }
/* Ficha de receta */
.franja-numeros { display: flex; flex-wrap: wrap; gap: 0; padding: 0; overflow: hidden; }
.franja-numeros > div { flex: 1 1 140px; display: grid; gap: 2px; padding: 16px 20px; border-right: 1px solid var(--borde); }
.franja-numeros > div:last-child { border-right: 0; }
.franja-numeros span { color: var(--suave); font-size: 15px; }
.franja-numeros strong { font-size: 1.25rem; }
.franja-numeros small { color: var(--suave); }
.franja-numeros .destacado { box-shadow: inset 0 3px 0 var(--texto); }
.franja-numeros .destacado strong { font-size: 1.5rem; font-weight: 800; }
.franja-numeros .margen-bueno strong { color: var(--verde); }
.franja-numeros .margen-malo strong { color: var(--rojo); }
.vacio-linea { margin: 6px 0 0; color: var(--suave); }
.vacio-receta { padding: 18px 0 4px; text-align: center; }
.vacio-receta .acciones { justify-content: center; }
.tabla-receta td { vertical-align: top; }
.celda-cantidad small { display: block; color: var(--suave); }
.tabla-receta { table-layout: auto; }
.tabla-receta .columna-principal { width: auto; }
.tabla-receta .celda-cantidad, .tabla-receta th:nth-child(2) { min-width: 220px; width: 35%; }
.tabla-receta td:nth-child(3) { white-space: nowrap; }
.tabla-receta .celda-acciones { white-space: nowrap; }
.tabla-receta .celda-acciones form { display: inline; margin-left: 10px; }
.celda-numero { text-align: right; white-space: nowrap; }
.medida-receta { border: 1px solid var(--borde); background: var(--panel); color: var(--texto); font: inherit; text-align: left; cursor: pointer; }
.medida-receta:hover { border-color: var(--primario); }
.dialogo.dialogo-ancho { width: min(720px, calc(100% - 24px)); max-width: 720px; }
.buscador-material { position: relative; }
.resultados-busqueda { display: grid; gap: 4px; max-height: 260px; overflow-y: auto; margin-top: 6px; padding: 6px; border: 1px solid var(--borde); border-radius: 6px; background: var(--fondo); }
.resultados-busqueda button { display: grid; gap: 2px; padding: 8px 10px; border: 0; border-radius: 6px; background: var(--panel); color: var(--texto); font: inherit; text-align: left; cursor: pointer; }
.resultados-busqueda button:hover { background: #e3f1f5; }
.resultados-busqueda small { color: var(--suave); font-size: 14px; }
.selector-modo { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; border: 0; }
.selector-modo legend { margin-bottom: 6px; font-weight: 700; font-size: 14px; }
.selector-modo label { position: relative; cursor: pointer; }
.selector-modo input { position: absolute; opacity: 0; }
.selector-modo span { display: grid; gap: 2px; height: 100%; padding: 10px 12px; border: 2px solid var(--borde); border-radius: 6px; font-weight: 700; }
.selector-modo span small { color: var(--suave); font-weight: 400; font-size: 14px; }
.selector-modo input:checked + span { border-color: var(--primario); background: #eef7fa; }
.selector-modo input:focus-visible + span { box-shadow: 0 0 0 3px rgba(18,103,130,.2); }
.selector-modo-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.campos-precio-fijo { min-width: 0; margin: 0; padding: 0; border: 0; grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 1000px) { .selector-modo-4, .campos-precio-fijo { grid-template-columns: 1fr 1fr; } }
.filas-piezas { display: grid; gap: 6px; }
.filas-piezas .fila-corte, .filas-piezas .fila-pieza { margin: 0; }
.filas-piezas input { margin-top: 0; }
.bloque-calculo { padding: 18px 0; border-top: 1px solid var(--borde); }
.bloque-calculo:first-of-type { border-top: 0; }
.bloque-calculo h3 { margin: 0; }
.cifra-compra { padding: 6px 12px; border-radius: 6px; background: #eef7fa; color: var(--primario-oscuro); white-space: nowrap; }
.contenido-dialogo { padding: 16px 20px 20px; }
.fila-copiar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--borde); }
.fila-copiar small { display: block; color: var(--suave); }
.espaciador { flex: 1; }
@media (max-width: 700px) { .selector-modo { grid-template-columns: 1fr; } .franja-numeros > div { border-right: 0; border-bottom: 1px solid var(--borde); } }
/* Receta abierta dentro de la proforma */
.embebido .barra, .embebido .ocultar-embebido, .embebido #aviso-notificaciones { display: none !important; }
.embebido main.contenedor { padding-top: 8px; }
.dialogo.dialogo-receta { width: min(1100px, calc(100% - 24px)); max-width: 1100px; height: calc(100vh - 48px); padding: 0; display: none; }
.dialogo.dialogo-receta[open] { display: flex; flex-direction: column; }
.dialogo-receta .dialogo-cabecera { display: flex; align-items: center; gap: 14px; padding: 12px 18px; border-bottom: 1px solid var(--borde); }
.dialogo-receta .dialogo-cabecera h2 { margin: 0; font-size: 1.1rem; }
.dialogo-receta .dialogo-cabecera small { flex: 1; color: var(--suave); }
.dialogo-receta iframe { flex: 1; width: 100%; border: 0; }
.boton-editar-receta { margin-top: 8px; }
/* Asistente de receta */
.pasos-asistente { display: flex; gap: 6px; margin: 0 0 18px; padding: 0; list-style: none; counter-reset: paso; overflow-x: auto; }
.pasos-asistente li { flex: 1; min-width: 110px; padding: 10px 12px; border-radius: 6px; background: var(--panel); border: 1px solid var(--borde); color: var(--suave); font-weight: 600; counter-increment: paso; white-space: nowrap; }
.pasos-asistente li::before { content: counter(paso); display: inline-grid; width: 22px; height: 22px; margin-right: 8px; place-items: center; border-radius: 50%; background: var(--fondo); font-size: 14px; }
.pasos-asistente li.actual { border-color: var(--primario); color: var(--primario-oscuro); background: #eef7fa; }
.pasos-asistente li.actual::before { background: var(--primario); color: white; }
.pasos-asistente li.hecho { color: var(--verde); }
.pasos-asistente li.hecho::before { content: "✓"; background: #e3f4ea; color: var(--verde); }
.pasos-asistente li[hidden] { display: none; }
.paso-asistente h2 { margin-top: 0; }
.opciones-si-no { display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0; }
.opciones-si-no .boton { flex: 1 1 220px; padding: 16px; }
.chips-sugeridas { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 14px; }
.chip { padding: 8px 14px; border: 1px solid var(--borde); border-radius: 4px; background: var(--panel); color: var(--texto); font: inherit; cursor: pointer; }
.chip:hover { border-color: var(--primario); }
.chip[disabled] { opacity: .45; cursor: default; }
.lista-agregados { display: grid; gap: 6px; margin: 10px 0; padding: 0; list-style: none; }
.lista-agregados li { padding: 9px 12px; border-radius: 6px; background: #eaf6ee; color: #1f6b3a; font-weight: 600; }
.lista-agregados li::before { content: "✓ "; }
.navegacion-paso { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--borde); align-items: center; }
.lista-medidas { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0; }
.medida-receta { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border: 1px solid var(--borde); border-radius: 6px; }
.medida-receta > strong { font-size: 1.3rem; min-width: 1.5em; text-align: center; }
.medida-receta span small { display: block; color: var(--suave); }
.formulario-medida { display: grid; grid-template-columns: 0.6fr 1.6fr 1fr 1fr auto; gap: 10px; align-items: end; margin-top: 10px; }
@media (max-width: 700px) { .formulario-medida { grid-template-columns: 1fr 1fr; } }
.medidas-receta code, .item-obra code, .ayuda code { background: var(--fondo); padding: 1px 5px; border-radius: 4px; }
.ayuda { margin: 4px 0 8px; color: var(--suave); font-size: 15px; }
@media (max-width: 600px) { .plan-tubo-nombre { flex-basis: 70px; } .fila-corte { grid-template-columns: 1fr 1fr; } .fila-corte input:first-child { grid-column: 1 / -1; } .fila-corte [data-quitar-fila] { grid-column: 1 / -1; justify-self: end; } }

/* Inicio: una mesa de trabajo. Las acciones son filas (como la web) y los pendientes, una hoja al lado */
.inicio-saludo { margin-bottom: 18px; }
.inicio-saludo h1 { margin: 4px 0 0; font-size: clamp(32px, 4vw, 46px); font-weight: 800; line-height: 1.05; }
.inicio-mesa { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(300px, 1fr); gap: 20px 48px; align-items: start; margin-bottom: 40px; }
.acciones-grandes { margin: 0 0 22px; border-top: 2px solid var(--texto); border-bottom: 1px solid var(--borde); }
.encabezado-pagina + .acciones-grandes { max-width: 780px; }
.accion-grande { display: grid; grid-template-columns: 34px minmax(0, 1fr); column-gap: 18px; row-gap: 1px; align-items: center; padding: 15px 10px; border-top: 1px solid var(--borde); color: var(--texto); transition: background-color .15s; }
.accion-grande:first-child { border-top: 0; }
.accion-grande:hover, .accion-grande:focus-visible { background: var(--panel); color: var(--texto); }
.accion-grande .accion-icono { grid-row: span 2; margin: 0; color: var(--minio); }
.accion-grande strong { font-size: 20px; font-weight: 750; font-stretch: 108%; }
.accion-grande small { color: var(--suave); font-size: 15px; }
.inicio-mesa .acciones-grandes { margin: 0; }
.inicio-mesa .pendientes { margin: 0; border-top: 3px solid var(--texto); }
.pendientes h2, .todo-sistema h2 { margin-top: 0; }
.lista-pendientes { margin: 0; padding: 0; list-style: none; }
.lista-pendientes li { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 0; border-top: 1px solid var(--borde); font-size: 16px; }
.lista-pendientes li:first-child { border-top: 0; }
.lista-pendientes li.urgente span { color: var(--rojo); font-weight: 600; }
.lista-pendientes .boton { flex: none; }
/* Todo el sistema: listas de enlaces bajo una línea, sin cajas */
.todo-sistema { margin: 0 0 36px; }
.grupos-sistema { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px 32px; }
.grupo-sistema { padding-top: 12px; border-top: 2px solid var(--texto); }
.grupo-sistema h3 { margin: 0 0 6px; font-size: 16px; font-weight: 700; }
.grupo-sistema a { display: block; padding: 8px 0; border-top: 1px solid var(--borde); font-size: 15px; }
.grupo-sistema h3 + a { border-top: 0; }
.desplegable-inicio { margin-bottom: 16px; }
.desplegable-inicio > summary { cursor: pointer; font-size: 17px; font-weight: 600; }
.desplegable-inicio[open] > summary { margin-bottom: 18px; }
@media (max-width: 1000px) { .inicio-mesa { grid-template-columns: 1fr; } .grupos-sistema { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) {
    .grupos-sistema { grid-template-columns: 1fr; }
    .accion-grande { column-gap: 14px; padding: 13px 4px; }
    .accion-grande strong { font-size: 18px; }
    .lista-pendientes li { flex-direction: column; align-items: flex-start; }
}

/* Página de error amigable */
.pagina-error { max-width: 640px; margin: 40px auto; padding: 32px; border-color: #f0c2bd; }
.pagina-error h1 { margin-top: 0; color: var(--rojo); }
.pagina-error-mensaje { font-size: 18px; line-height: 1.5; }
.pagina-error .acciones { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }

/* Retazos en inventario */
.grupo-retazos { padding: 12px 0; border-top: 1px solid var(--borde); }
.lista-retazos { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.retazo { display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px; border: 1px solid #b9dcc8; border-radius: 4px; background: #e8f5ee; color: var(--verde); font-weight: 600; }
.retazo form { display: inline; }
.retazo .enlace-peligro { font-size: 14px; font-weight: 400; }

.login-logo { display: block; max-width: 180px; max-height: 80px; object-fit: contain; }

/* Emisión SRI */
.boton-grande { padding: 14px 26px; font-size: 17px; }
.sri-avanzado { margin-top: 14px; color: var(--suave); }
.sri-avanzado summary { cursor: pointer; }
.sri-avanzado .acciones { margin-top: 10px; }
.sri-ambiente { border: 1px solid var(--borde); border-radius: 6px; padding: 12px 16px; }
.sri-ambiente legend { padding: 0 6px; font-weight: 600; }
.dialogo { max-width: 460px; width: calc(100% - 32px); padding: 24px; border: 1px solid var(--borde); border-radius: 6px; }
.dialogo::backdrop { background: rgba(16, 44, 58, .45); }
.dialogo h2 { margin-top: 0; }
.dialogo .acciones { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; margin-top: 18px; }

.enviar-correo { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; margin-top: 16px; }
.enviar-correo p { flex-basis: 100%; margin: 0; }
.enviar-correo label { flex: 1 1 260px; }

.etiqueta-nota { display: block; color: var(--rojo); font-size: 13px; font-weight: 600; }
.anular-factura { margin: 14px 0 0; }

/* Licencia y respaldos */
.codigo-equipo { margin: 8px 0 16px; padding: 12px; border: 1px dashed var(--primario); border-radius: 6px; font-family: ui-monospace, Consolas, monospace; font-size: 22px; font-weight: 700; letter-spacing: 1px; text-align: center; user-select: all; }
.aviso-prueba { margin-bottom: 16px; }
.lista-respaldos { margin: 0 0 12px; padding-left: 18px; color: var(--suave); }
.lista-respaldos .en-linea { display: inline; margin-left: 8px; }
.formulario-carpeta-respaldo { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; margin-top: 14px; }
.formulario-carpeta-respaldo label { flex: 1 1 280px; }
.activacion-sin-internet { margin-top: 18px; color: var(--suave); }
.activacion-sin-internet summary { cursor: pointer; }
.formulario-red { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 12px 0; }
.direcciones-red code { font-size: 20px; font-weight: 700; user-select: all; }

/* Venta rápida (nueva factura) */
.vr { display: grid; gap: 16px; }
.vr-principal { display: grid; gap: 16px; min-width: 0; }
.vr-bloque { display: grid; gap: 12px; }
.vr-titulo { margin: 0; font-size: 17px; }
.vr-modos { display: flex; flex-wrap: wrap; gap: 8px; }
.vr-modo { padding: 8px 14px; border: 1px solid var(--borde); border-radius: 4px; background: white; color: var(--texto); font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; }
.vr-modo:hover { border-color: var(--primario); }
.vr-modo.activo { border-color: var(--primario); background: var(--primario); color: white; }
.vr-nota { margin: 0; color: var(--suave); font-size: 15px; line-height: 1.5; }
.vr-buscar { display: grid; gap: 6px; font-size: 15px; font-weight: 700; }
.vr-buscar input, .vr-datos input, .vr-datos select { width: 100%; min-height: 40px; padding: 8px 11px; border: 1px solid var(--borde); border-radius: 6px; font: inherit; font-size: 14px; background: white; }
.vr-buscar input:focus, .vr-datos input:focus, .vr-datos select:focus { outline: 2px solid #b9dbe5; border-color: var(--primario); }
.vr-resultados { display: grid; margin: -6px 0 0; padding: 4px; list-style: none; border: 1px solid var(--borde); border-radius: 6px; background: white; box-shadow: 0 6px 18px rgba(17, 36, 48, .08); max-height: 320px; overflow: auto; }
.vr-resultados button { display: grid; width: 100%; padding: 9px 10px; border: 0; border-radius: 6px; background: none; text-align: left; font: inherit; cursor: pointer; }
.vr-resultados button:hover, .vr-resultados button:focus { background: #f1f8fa; }
.vr-resultados span { color: var(--suave); font-size: 14px; }
.vr-vacio { padding: 10px; color: var(--suave); font-size: 15px; }
.vr-elegido { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; border: 1px solid #b9dbe5; border-radius: 6px; background: #f1f8fa; }
.vr-elegido > div:first-child { display: grid; gap: 2px; min-width: 0; }
.vr-elegido span { color: var(--suave); font-size: 14px; overflow-wrap: anywhere; }
.vr-elegido-acciones { display: flex; gap: 14px; }
.vr-enlace { padding: 0; border: 0; background: none; color: var(--primario); font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; }
.vr-enlace:hover { text-decoration: underline; }
.vr-datos { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 12px; }
.vr-datos label { display: grid; gap: 5px; font-size: 15px; font-weight: 700; }
.vr-datos .campo-ancho { grid-column: 1 / -1; }
/* Detalle con el mismo formato que la factura (RIDE): tabla con bordes y cabecera gris. */
.vr-detalle { border: 1px solid #b8c2c9; border-radius: 6px; }
.vr-fila { display: grid; grid-template-columns: 64px minmax(0, 1fr) 104px 84px 96px 32px; align-items: stretch; }
.vr-fila + .vr-fila { border-top: 1px solid #dce2e6; }
.vr-encabezado { background: #eef2f4; border-radius: 6px 8px 0 0; border-bottom: 1px solid #b8c2c9; }
.vr-encabezado + .vr-fila { border-top: 0; }
.vr-encabezado span { padding: 6px 8px; color: #33424d; font-size: 13px; font-weight: 700; }
.vr-fila > * + * { border-left: 1px solid #e3e8eb; }
.vr-encabezado > * + * { border-left-color: #c9d2d8; }
.num { text-align: right; }
.vr-celda { position: relative; display: flex; align-items: center; min-height: 36px; }
.vr-etiqueta { display: none; }
.vr-linea input { width: 100%; height: 100%; min-height: 36px; padding: 6px 8px; border: 0; border-radius: 0; background: transparent; font: inherit; font-size: 15px; }
.vr-linea input:focus { outline: 2px solid #9fcbd8; outline-offset: -2px; background: #f7fbfc; }
.vr-cant input, .vr-precio input, .vr-descuento input { text-align: right; font-variant-numeric: tabular-nums; }
.vr-total-linea { justify-content: flex-end; padding: 6px 8px; font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
.vr-quitar { margin: auto; width: 24px; height: 24px; border: 0; border-radius: 6px; background: none; color: #9aa7b0; font-size: 16px; cursor: pointer; }
.vr-quitar:hover { background: #fff1f0; color: var(--rojo); }
.vr-linea:last-child .vr-quitar { visibility: hidden; }
.vr-sugerencias { position: absolute; z-index: 20; top: calc(100% + 2px); left: -1px; right: -1px; margin: 0; padding: 4px; list-style: none; border: 1px solid var(--borde); border-radius: 6px; background: white; box-shadow: 0 8px 22px rgba(17, 36, 48, .12); max-height: 300px; overflow: auto; }
.vr-sugerencias button { display: flex; justify-content: space-between; gap: 12px; width: 100%; padding: 8px 10px; border: 0; border-radius: 6px; background: none; color: var(--texto); text-align: left; font: inherit; font-size: 15px; cursor: pointer; }
.vr-sugerencias button:hover { background: #f1f8fa; }
.vr-sugerencias b { color: var(--primario); font-variant-numeric: tabular-nums; white-space: nowrap; }
/* Pie como en la factura: información adicional a la izquierda, totales a la derecha. */
.vr-pie { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; margin-top: 4px; }
.vr-totales { margin: 0; border: 1px solid #b8c2c9; border-radius: 6px; overflow: hidden; font-size: 15px; }
.vr-totales div { display: grid; grid-template-columns: 1fr 104px; }
.vr-totales div + div { border-top: 1px solid #e3e8eb; }
.vr-totales dt { padding: 7px 10px; color: var(--suave); }
.vr-totales dd { margin: 0; padding: 7px 10px; border-left: 1px solid #e3e8eb; text-align: right; font-variant-numeric: tabular-nums; }
/* El descuento se escribe en su propia celda, con el mismo aspecto que las demás. */
.vr-totales .vr-fila-descuento dd { padding: 0; }
.vr-totales .vr-fila-descuento input { display: block; width: 100%; min-height: 0; margin: 0; padding: 7px 10px; border: 0; border-radius: 0; box-shadow: none; background: transparent; color: var(--texto); font-family: inherit; font-size: 15px; line-height: 17px; text-align: right; font-variant-numeric: tabular-nums; cursor: text; }
.vr-totales .vr-fila-descuento input::placeholder { color: #9aa7b0; }
.vr-totales .vr-fila-descuento:hover dd { background: #f7fbfc; }
.vr-totales .vr-fila-descuento input:focus { outline: 2px solid #9fcbd8; outline-offset: -2px; background: #f7fbfc; }
.vr-totales label { display: inline; margin: 0; color: inherit; font-size: inherit; font-weight: 400; cursor: text; }
.vr-totales .vr-total { background: #eef2f4; border-top-color: #b8c2c9; }
.vr-totales .vr-total dt, .vr-totales .vr-total dd { color: var(--texto); font-size: 15px; font-weight: 800; }
.vr-adicional { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid #b8c2c9; border-radius: 6px; font-size: 15px; }
.vr-adicional p { display: flex; justify-content: space-between; gap: 12px; margin: 0 0 6px; color: var(--suave); }
.vr-adicional b { color: var(--texto); font-weight: 600; text-align: right; overflow-wrap: anywhere; }
.vr-acciones { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 14px; }
.vr-boton { min-height: 46px; padding: 10px 28px; font-size: 15px; }
@media (max-width: 760px) {
    .vr-datos, .vr-pie { grid-template-columns: 1fr; }
    .vr-acciones { justify-content: stretch; }
    .vr-boton { width: 100%; }
    .vr-encabezado { display: none; }
    .vr-detalle { border: 0; }
    .vr-fila + .vr-fila { border-top: 0; }
    .vr-linea { grid-template-columns: 1fr 1fr 1fr; gap: 0; margin-bottom: 10px; border: 1px solid #b8c2c9; border-radius: 6px; }
    .vr-linea > * + * { border-left: 0; }
    .vr-linea .vr-desc { grid-column: 1 / -1; order: -1; border-bottom: 1px solid #dce2e6; }
    .vr-celda { flex-direction: column; align-items: stretch; }
    .vr-etiqueta { display: block; padding: 6px 10px 0; color: var(--suave); font-size: 13px; font-weight: 700; text-align: left; }
    .vr-total-linea { grid-column: 1 / -1; flex-direction: row; align-items: center; justify-content: space-between; padding: 8px 10px; border-top: 1px solid #dce2e6; background: #f7f9fa; }
    .vr-total-linea .vr-etiqueta { padding: 0; }
    .vr-tipo { align-self: flex-start; margin: 0 10px 6px; }
    .vr-quitar { grid-column: 1 / -1; width: auto; margin: 0; border-top: 1px solid #dce2e6; border-radius: 0 0 8px 8px; font-size: 15px; }
    .vr-quitar::after { content: " Quitar"; }
    .vr-linea:last-child .vr-quitar { display: none; }
}

/* Detalle de una venta: barra de acciones y la factura con el formato del RIDE */
.fv-barra { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 14px; margin: 6px 0 16px; }
.fv-barra h1 { margin: 2px 0 0; font-size: 28px; }
.fv-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.fv-acciones form { margin: 0; }
.fv-menu { position: relative; }
.fv-menu > summary { list-style: none; min-width: 42px; font-size: 18px; line-height: 1; }
.fv-menu > summary::-webkit-details-marker { display: none; }
.fv-menu-lista { position: absolute; z-index: 30; right: 0; top: calc(100% + 6px); display: grid; min-width: 230px; padding: 6px; border: 1px solid var(--borde); border-radius: 6px; background: white; box-shadow: 0 10px 26px rgba(17, 36, 48, .14); }
.fv-menu-lista a, .fv-menu-lista button { display: block; width: 100%; padding: 9px 10px; border: 0; border-radius: 6px; background: none; color: var(--texto); text-align: left; font: inherit; font-size: 15px; cursor: pointer; }
.fv-menu-lista a:hover, .fv-menu-lista button:hover { background: #f1f8fa; }
.fv-menu-lista form { margin: 0; }
.fv-menu-lista .peligro { color: var(--rojo); }
.fv-menu-lista .peligro:hover { background: #fff1f0; }
.fv-hoja { position: relative; display: grid; gap: 14px; max-width: 980px; margin: 0 auto 16px; padding: 28px 30px; border: 1px solid #c9d2d8; border-radius: 6px; background: white; box-shadow: 0 2px 10px rgba(17, 36, 48, .06); font-size: 14px; overflow: hidden; }
.fv-marca { position: absolute; top: 34px; right: -46px; transform: rotate(35deg); padding: 4px 56px; background: #fff4d6; color: #8a6200; font-size: 13px; font-weight: 800; letter-spacing: 1px; }
.fv-anulada .fv-marca { background: #fde7e5; color: var(--rojo); }
.fv-cabecera { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 16px; }
.fv-emisor { display: grid; align-content: start; gap: 4px; padding: 4px 0; }
.fv-logo { max-width: 140px; max-height: 56px; object-position: left; margin-bottom: 8px; object-fit: contain; }
.fv-razon { font-size: 15px; }
.fv-emisor dl, .fv-recuadro dl { display: grid; gap: 4px; margin: 6px 0 0; }
.fv-emisor dl div { display: flex; flex-wrap: wrap; gap: 0 6px; }
.fv-emisor dt::after { content: ":"; }
.fv-recuadro dl div { display: grid; gap: 1px; }
.fv-emisor dt, .fv-recuadro dt { color: var(--suave); font-size: 12.5px; }
.fv-emisor dd, .fv-recuadro dd { margin: 0; }
.fv-rimpe { margin-top: 6px; font-size: 13px; }
.fv-recuadro { display: grid; align-content: start; gap: 4px; padding: 14px 16px; border: 1px solid #b8c2c9; border-radius: 6px; }
.fv-ruc { font-size: 15px; }
.fv-tipo { font-size: 18px; font-weight: 800; letter-spacing: .5px; }
.fv-numero { font-size: 15px; font-weight: 700; }
.fv-clave { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; font-size: 13px; overflow-wrap: anywhere; }
.fv-comprador { display: grid; grid-template-columns: 1.6fr 1fr 1fr; gap: 8px 16px; padding: 12px 14px; border: 1px solid #b8c2c9; border-radius: 6px; }
.fv-comprador div { display: grid; gap: 2px; min-width: 0; }
.fv-comprador span { color: var(--suave); font-size: 12.5px; }
.fv-comprador .fv-ancho { grid-column: 1 / -1; }
.fv-detalle { border: 1px solid #b8c2c9; border-collapse: collapse; }
.fv-detalle th { padding: 6px 8px; border: 1px solid #b8c2c9; background: #eef2f4; color: #33424d; font-size: 12.5px; letter-spacing: 0; text-transform: none; }
.fv-detalle td { padding: 6px 8px; border: 1px solid #dce2e6; font-size: 14px; font-variant-numeric: tabular-nums; }
.fv-detalle .num { text-align: right; white-space: nowrap; }
.fv-codigo { color: var(--suave); font-size: 13px; white-space: nowrap; }
.fv-pie { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; align-items: start; }
.fv-adicional { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid #b8c2c9; border-radius: 6px; }
.fv-adicional p { display: flex; justify-content: space-between; gap: 12px; margin: 0 0 6px; color: var(--suave); }
.fv-adicional p span:last-child { color: var(--texto); text-align: right; overflow-wrap: anywhere; }
.fv-totales { margin: 0; border: 1px solid #b8c2c9; border-radius: 6px; overflow: hidden; }
.fv-totales div { display: grid; grid-template-columns: 1fr 96px; }
.fv-totales div + div { border-top: 1px solid #e3e8eb; }
.fv-totales dt { padding: 6px 10px; color: var(--suave); }
.fv-totales dd { margin: 0; padding: 6px 10px; border-left: 1px solid #e3e8eb; text-align: right; font-variant-numeric: tabular-nums; }
.fv-totales .fv-total { background: #eef2f4; border-top-color: #b8c2c9; }
.fv-totales .fv-total dt, .fv-totales .fv-total dd { color: var(--texto); font-size: 14px; font-weight: 800; }
.fv-correo { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; max-width: 980px; margin: 0 auto 16px; }
.fv-correo label { display: grid; flex: 1 1 260px; gap: 5px; font-size: 15px; font-weight: 700; }
.fv-correo .ayuda { flex-basis: 100%; margin: 0; }
.tabla-ventas .num { text-align: right; }
.tabla-ventas .columna-principal small { display: block; color: var(--suave); font-size: 13px; }
.sin-salto { white-space: nowrap; }
@media (max-width: 760px) {
    .fv-hoja { padding: 18px 14px; }
    .fv-cabecera, .fv-pie, .fv-comprador { grid-template-columns: 1fr; }
    .fv-detalle { display: block; overflow-x: auto; }
}

/* Nota de crédito parcial */
.nc { display: grid; gap: 16px; }
.nc-bloque { display: grid; gap: 12px; }
.nc-motivo { width: 100%; min-height: 40px; padding: 8px 11px; border: 1px solid var(--borde); border-radius: 6px; font: inherit; font-size: 14px; }
.nc-tabla td small { display: block; color: var(--suave); font-size: 13px; }
.nc-tabla td.nc-entrada { padding: 0; }
.nc-tabla td.nc-entrada input { width: 100%; min-width: 80px; min-height: 36px; padding: 6px 8px; border: 0; background: #fffdf5; font: inherit; font-size: 15px; text-align: right; }
.nc-tabla td.nc-entrada input:focus { outline: 2px solid #9fcbd8; outline-offset: -2px; background: #f7fbfc; }
.nc-tabla td.nc-entrada input:disabled { background: transparent; }
.nc-tabla tfoot td { background: #eef2f4; font-size: 15px; }
.nc-agotada td { color: #9aa7b0; }
.nc-error td { background: #fff4f3; }
.nc-atajos { display: flex; gap: 16px; }
.fv-notas ul { margin: 6px 0; padding-left: 18px; }
.fv-notas li { margin: 2px 0; }
.fv-modificado { background: #f7f9fa; }
@media (max-width: 760px) { .nc-tabla { display: block; overflow-x: auto; } }

/* Tipo de cada línea de la venta: fabricado y servicio no mueven inventario; material y retazo sí. */
.vr-desc { gap: 6px; padding-right: 6px; }
.vr-tipo, .vr-sugerencias small { flex: none; padding: 2px 7px; border-radius: 4px; background: #eef2f4; color: #52616c; font-size: 12.5px; font-weight: 700; white-space: nowrap; }
.vr-tipo[data-tipo="MATERIAL"], .vr-sugerencias small[data-tipo="MATERIAL"] { background: #e8f1fb; color: #1d5a96; }
.vr-tipo[data-tipo="RETAZO"], .vr-sugerencias small[data-tipo="RETAZO"] { background: #fff4d6; color: #8a6200; }
.vr-tipo[data-tipo="SERVICIO"], .vr-sugerencias small[data-tipo="SERVICIO"] { background: #eaf6ee; color: #1b7f3b; }
.vr-sugerencias button { align-items: center; }
.vr-sugerencias button span { flex: 1; }

/* Lista de comprobantes: las notas de crédito debajo de su factura */
.tabla-ventas .fila-nota td { background: #fbfcfd; }
.flecha-nota { margin-right: 6px; color: #9aa7b0; }
.acciones-venta { white-space: nowrap; }
.acciones-venta a { margin-right: 12px; font-size: 15px; }
.fila-venta { cursor: pointer; }
.fila-venta:hover td { background: #f4f9fb; }
.sigla { display: inline-block; min-width: 30px; margin-right: 4px; padding: 1px 5px; border-radius: 4px; background: #eef2f4; color: #52616c; font-size: 12px; font-weight: 800; letter-spacing: .4px; text-align: center; }
.sigla-fac { background: #e3f0f4; color: var(--primario); }
.sigla-nc { background: #fde7e5; color: var(--rojo); }
.sigla-nv { background: #eaf6ee; color: #1b7f3b; }
.sigla-prueba { background: #fff4d6; color: #7a5a00; }
.ver-notas { display: block; margin-top: 3px; padding: 0; border: 0; background: none; color: var(--primario); font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.ver-notas:hover { text-decoration: underline; }
.boton-chico { min-height: 30px; padding: 4px 12px; font-size: 14px; }
.acciones-venta { display: flex; align-items: center; gap: 12px; }
.acciones-venta a:not(.boton) { margin-right: 0; }
.acciones-venta form { margin: 0; }

/* Demostración pública: franja arriba y entrada con un clic. */
.franja-demo { padding: 8px 16px; background: #fff4d6; color: #5c4300; font-size: 15px; text-align: center; border-bottom: 1px solid #f0d58a; }
.franja-demo a { margin-left: 8px; font-weight: 700; color: inherit; }
.login-demo form { margin: 0; }
.login-demo form .boton { width: 100%; }
.login-demo { display: grid; gap: 10px; }
.login-demo small { color: var(--suave); text-align: center; }

/* Acceso de soporte de Nivel45: entrada discreta y aviso visible para todos. */
.acceso-soporte { margin-top: 14px; font-size: 15px; color: var(--suave); }
.acceso-soporte summary { cursor: pointer; }
.acceso-soporte form { display: grid; gap: 8px; margin-top: 8px; }
.franja-soporte { padding: 8px 16px; background: #e8f1fb; color: #1d4a78; font-size: 15px; text-align: center; border-bottom: 1px solid #b9d3ef; }

/* Ambiente de prueba del escritorio: imposible confundirlo con los datos reales. */
.franja-prueba { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; justify-content: center; padding: 8px 16px; background: #b42318; color: #fff; font-size: 15px; }
.franja-prueba form { margin: 0; }
.franja-prueba button { padding: 3px 10px; border: 1px solid #fff; border-radius: 4px; background: transparent; color: #fff; font: inherit; font-weight: 700; cursor: pointer; }

/* Visita guiada (static/visita.js) */
.visita-foco { position: fixed; z-index: 1000; border-radius: 6px; box-shadow: 0 0 0 9999px rgba(16, 44, 58, .55); pointer-events: none; transition: all .2s ease; }
.visita-globo, .visita-invitacion { position: fixed; z-index: 1001; width: min(380px, calc(100vw - 24px)); padding: 18px 20px; border-radius: 6px; background: var(--panel); color: var(--texto); box-shadow: 0 12px 32px rgba(16, 44, 58, .3); }
.visita-globo h2 { margin: 4px 0 8px; font-size: 18px; }
.visita-globo p, .visita-invitacion p { margin: 0 0 14px; color: var(--suave); line-height: 1.5; }
.visita-invitacion strong { display: block; margin-bottom: 4px; font-size: 16px; }
.visita-invitacion { right: 20px; bottom: 20px; border: 1px solid var(--borde); }
.visita-centro { top: 50% !important; left: 50% !important; transform: translate(-50%, -50%); }
.visita-cuenta { color: var(--primario); font-size: 14px; font-weight: 700; letter-spacing: .04em; }
.visita-botones { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.visita-botones .enlace-visita { margin-right: auto; padding: 8px 4px; border: 0; background: none; color: var(--suave); font: inherit; font-size: 15px; cursor: pointer; }
.visita-botones .enlace-visita:hover { color: var(--texto); }
@media (max-width: 640px) {
    .visita-invitacion { right: 12px; left: 12px; bottom: 12px; width: auto; }
    .visita-centro { top: auto !important; bottom: 12px; left: 12px !important; right: 12px; width: auto; transform: none; }
}

/* Aviso bajo un campo (static/identificacion.js) */
.error-campo { display: block; margin-top: 4px; color: var(--rojo); font-size: 12.5px; font-weight: 600; }

/* Aviso de actualización (static/aviso.js) */
.franja-actualizacion { position: sticky; top: 0; z-index: 900; padding: 10px 16px; background: #1d2528; color: #fff; font-size: 14px; text-align: center; box-shadow: 0 2px 8px rgba(0, 0, 0, .2); }
.franja-actualizacion .cuenta { display: inline-block; min-width: 3.2em; padding: 0 6px; border-radius: 4px; background: #1f8aa8; font-variant-numeric: tabular-nums; }
.franja-actualizacion button { margin-left: 8px; padding: 4px 12px; border: 0; border-radius: 6px; background: #fff; color: #1d2528; font: inherit; font-weight: 700; cursor: pointer; }

/* Importar desde Excel */
.pestanas-importar { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
.pestanas-importar a { padding: 8px 14px; border: 1px solid var(--borde); border-radius: 4px; background: var(--panel); color: var(--texto); font-weight: 600; }
.pestanas-importar a.activo { border-color: var(--primario); background: var(--primario); color: #fff; }
.texto-error { color: var(--rojo); }

/* Escritorio: versión nueva lista (static/aviso.js) */
.aviso-version { position: fixed; right: 20px; bottom: 20px; z-index: 950; width: min(400px, calc(100vw - 24px)); padding: 18px 20px; border: 1px solid var(--borde); border-radius: 6px; background: var(--panel); box-shadow: 0 12px 32px rgba(16, 44, 58, .3); }
.aviso-version strong { display: block; margin-bottom: 4px; font-size: 16px; }
.aviso-version p { margin: 0 0 14px; color: var(--suave); line-height: 1.5; }
.aviso-version-botones { display: flex; justify-content: flex-end; gap: 8px; }

/* Fórmulas del material: medidas para insertar y resultado del campo activo */
.ayuda-formulas { display: grid; gap: 8px; padding: 10px 12px; border: 1px solid var(--borde); border-radius: 6px; background: #f7fafb; }
.medidas-formula { display: flex; flex-wrap: wrap; gap: 6px; }
.medidas-formula .chip strong { color: var(--primario); }
.resultado-formula { margin: 0; font-size: 14px; }
.resultado-formula strong { color: var(--verde); }
.resultado-formula.con-error { color: var(--rojo); font-weight: 600; }

/* Hoja de materiales en tabla: compacta, una tabla por parte */
.aviso.error { border-color: #ebc2c2; background: #fdf0f0; color: #8a2626; }
.parte-tabla { padding: 16px 18px; }
.parte-tabla .cabecera-seccion { justify-content: flex-start; margin-bottom: 8px; }
.nombre-parte { flex: 1; max-width: 420px; min-height: 38px; margin: 0; padding: 7px 11px; font-size: 16px; font-weight: 700; }
.parte-tabla .subtotal-parte { margin-left: auto; font-size: 16px; }
.medidas-parte { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin: 0 0 8px; padding: 6px 10px; border-radius: 6px; background: var(--fondo); font-size: 15px; }
.medidas-parte > span { font-weight: 700; }
.medidas-parte > span small { color: var(--suave); font-weight: 400; }
.medidas-parte label { display: flex; align-items: center; gap: 5px; color: var(--suave); }
.medidas-parte label strong { color: var(--primario); }
.medidas-parte label input { width: 64px; min-height: 30px; margin: 0; padding: 4px 8px; }
.medidas-parte label.usada { color: var(--texto); font-weight: 700; }
.medidas-parte label.usada input { border-color: var(--primario); }
.tabla-parte-scroll { overflow-x: auto; }
.tabla-materiales-parte { width: 100%; min-width: 760px; table-layout: fixed; }
.tabla-materiales-parte col.c-asa { width: 22px; }
.tabla-materiales-parte col.c-cuantas { width: 70px; }
.tabla-materiales-parte col.c-medida { width: 120px; }
.tabla-materiales-parte col.c-compra { width: 150px; }
.tabla-materiales-parte col.c-precio { width: 120px; }
.tabla-materiales-parte col.c-costo { width: 76px; }
.tabla-materiales-parte col.c-quitar { width: 26px; }
.tabla-materiales-parte th { padding: 6px 5px; white-space: nowrap; }
.tabla-materiales-parte th.derecha, .tabla-materiales-parte .celda-costo { text-align: right; }
.tabla-materiales-parte td { padding: 4px 5px; vertical-align: top; }
.tabla-materiales-parte input, .tabla-materiales-parte select { min-height: 32px; margin: 0; padding: 5px 8px; font-size: 15px; }
.tabla-materiales-parte select { padding-right: 26px; background-position: right 8px center; }
.tabla-materiales-parte td small { display: block; margin-top: 2px; overflow: hidden; color: var(--suave); font-size: 13px; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
.tabla-materiales-parte td small:empty { display: none; }
.tabla-materiales-parte small.error-texto { color: #a73636; font-weight: 600; white-space: normal; }
.compra-fila, .precio-fila { display: flex; align-items: center; gap: 4px; }
.compra-fila select { flex: 1; min-width: 0; }
.barra-largo { display: flex; align-items: center; gap: 2px; color: var(--suave); font-size: 14px; }
.barra-largo input { width: 38px; padding: 5px 4px !important; text-align: center; }
.precio-fila input { flex: 1; min-width: 0; }
.precio-fila small { margin: 0 !important; white-space: nowrap; }
.tabla-materiales-parte .celda-costo { padding-top: 11px; font-weight: 700; white-space: nowrap; }
.tabla-materiales-parte .celda-arrastre, .tabla-materiales-parte td:last-child { padding-left: 0; padding-right: 0; text-align: center; }
.tabla-materiales-parte td:last-child button { padding-top: 7px; }
.asa-arrastre { display: inline-block; padding: 7px 2px; color: var(--suave); font-size: 16px; line-height: 1; cursor: grab; user-select: none; }
.asa-arrastre:active { cursor: grabbing; }
.tabla-materiales-parte tr.arrastrando { opacity: .45; background: #e3f1f5; }
.fijas-parte { margin: 6px 0 0; }
.parte-tabla [data-otra-fila] { margin-top: 6px; font-size: 14px; }
.buscador-flotante { position: fixed; z-index: 60; overflow-y: auto; padding: 4px; border: 1px solid var(--borde); border-radius: 6px; background: var(--panel); box-shadow: 0 12px 32px rgba(17, 36, 48, .18); }
.buscador-flotante .grupo-buscador { margin: 6px 8px 2px; color: var(--suave); font-size: 13px; font-weight: 700; letter-spacing: .5px; }
.buscador-flotante button { display: grid; grid-template-columns: 1fr auto; gap: 1px 12px; width: 100%; padding: 7px 10px; border: 0; border-radius: 7px; background: none; color: var(--texto); font: inherit; text-align: left; cursor: pointer; }
.buscador-flotante button:hover, .buscador-flotante button.marcada { background: #e9f4f7; }
.buscador-flotante strong { overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.buscador-flotante b { color: var(--primario); font-size: 15px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.buscador-flotante b.sin-precio { color: var(--suave); font-weight: 400; }
.buscador-flotante small { grid-column: 1 / -1; color: var(--suave); font-size: 11.5px; }
.mano-tabla { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; }
.mano-tabla label input { width: 130px; }
.mano-tabla span, .mano-tabla strong { padding-bottom: 10px; }
.mano-tabla strong { font-size: 18px; }
.pie-tabla { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; }
.pie-tabla > div > span { display: block; color: var(--suave); font-size: 15px; }
.pie-tabla > div > strong { font-size: 20px; }
.pie-tabla .acciones { margin-left: auto; }
.parte-ficha + .parte-ficha { margin-top: 18px; }
.cabecera-parte { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin: 4px 0 6px; padding-bottom: 6px; border-bottom: 2px solid var(--borde); }
.cabecera-parte h3 { margin: 0; color: var(--primario); }
.cabecera-parte span { font-weight: 700; }
.despiece-pedido summary { cursor: pointer; }
.despiece-pedido summary small { color: var(--suave); font-weight: 400; }
.bloque-despiece h3 { margin: 16px 0 6px; font-size: 15px; color: var(--primario); }
.bloque-despiece ul { margin: 0; padding-left: 18px; }
.bloque-despiece li { margin-bottom: 4px; }
.medidas-linea .grupo-medidas { display: grid; flex: 1 1 100%; grid-template-columns: minmax(90px, 120px) repeat(3, minmax(0, 1fr)); align-items: end; gap: 6px 8px; }
.medidas-linea .grupo-medidas > span { padding-bottom: 9px; color: var(--primario); font-size: 15px; font-weight: 700; line-height: 1.2; }
.medidas-linea .grupo-medidas label { min-width: 0; font-size: 14px; }
.medidas-linea .grupo-medidas input { min-height: 34px; margin-top: 2px; padding: 6px 8px; }
.veces-parte { display: flex; align-items: center; gap: 4px; color: var(--suave); font-size: 18px; font-weight: 700; }
.veces-parte input { width: 58px; min-height: 38px; margin: 0; padding: 6px 8px; font-size: 15px; text-align: center; }
.veces-parte input.con-error { border-color: #c44; }
.cabecera-parte h3 small { color: var(--suave); font-weight: 700; }

/* Confirmar precios de una proforma */
.precios-proforma h3 { margin: 18px 0 8px; font-size: 15px; }
.precios-proforma .panel-titulo { align-items: flex-start; }
.contactos-proveedores { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.contacto-proveedor { display: grid; gap: 4px; padding: 12px; border: 1px solid var(--borde); border-radius: 6px; }
.contacto-proveedor small { color: var(--suave); }
.contacto-proveedor ul { margin: 4px 0; padding-left: 18px; font-size: 15px; }
.contacto-proveedor .acciones { display: flex; flex-wrap: wrap; gap: 6px; }
.tabla-precios-proforma tr.material-proforma td { padding-top: 14px; background: var(--fondo); }
.tabla-precios-proforma .formulario-en-linea { display: flex; gap: 6px; align-items: center; }
.tabla-precios-proforma .formulario-en-linea input { width: 110px; min-height: 32px; margin: 0; padding: 5px 8px; }
.etiqueta-precio { display: inline-block; margin: 3px 6px 0 0; padding: 1px 8px; border-radius: 4px; background: #eef2f4; color: #52616c; font-size: 13px; font-weight: 700; }
.etiqueta-precio.mejor { background: #e3f4ea; color: #18794e; }
.tabla-materiales-parte col.c-unidad { width: 110px; }
.tabla-materiales-parte input.con-error { border-color: #c44; }

/* Íconos de línea propios (sprite en base.html) */
.icono { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.campana .icono { width: 22px; height: 22px; vertical-align: -5px; }
.icono.accion-icono { width: 30px; height: 30px; stroke-width: 1.6; }
/* Cómo va el mes: cuadrícula de 4 × 2; la cifra principal ocupa 2 × 2 */
.tablero-mes { margin: 0 0 40px; }
.tablero-mes h2 { margin: 0 0 14px; }
.tablero { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: minmax(140px, auto); gap: 14px; }
.cifra { display: flex; flex-direction: column; gap: 4px; padding: 18px 20px; border: 1px solid var(--borde); border-top: 3px solid var(--borde); border-radius: 6px; background: var(--panel); color: var(--texto); }
a.cifra:hover { border-color: var(--texto); color: var(--texto); }
.cifra-titulo { color: var(--suave); font-size: 15px; font-weight: 600; }
.cifra strong { margin-top: auto; font-size: 30px; font-weight: 800; font-stretch: 110%; line-height: 1.1; font-variant-numeric: tabular-nums; }
.cifra-detalle { color: var(--suave); font-size: 14px; }
.cifra-alerta { border-top-color: var(--minio); }
.cifra-principal { grid-column: 1 / 3; grid-row: 1 / 3; padding: 24px 28px; border-top-color: var(--texto); }
.cifra-principal .cifra-titulo { font-size: 17px; color: var(--texto); }
.cifra .cifra-grande { margin: 6px 0 0; font-size: clamp(44px, 5.4vw, 72px); line-height: 1; }
.cifra-grande.negativa { color: var(--minio); }
.cifra-principal .cifra-detalle { margin: 6px 0 0; font-size: 15px; }
.cifra-cuenta { display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px; margin: auto 0 0; padding-top: 18px; }
.cifra-cuenta div { display: grid; gap: 2px; padding-top: 12px; border-top: 1px solid var(--borde); }
.cifra-cuenta dt { color: var(--suave); font-size: 14px; }
.cifra-cuenta dd { margin: 0; font-size: 22px; font-weight: 750; font-variant-numeric: tabular-nums; }
.cifra-cuenta small { color: var(--suave); font-size: 13px; }
.cifra-nota { margin: 14px 0 0; color: var(--suave); font-size: 13px; }
@media (max-width: 1000px) {
    .tablero { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .cifra-principal { grid-column: 1 / -1; grid-row: auto; }
}
@media (max-width: 560px) {
    .tablero { grid-template-columns: 1fr; grid-auto-rows: auto; }
    .cifra-cuenta { grid-template-columns: 1fr; }
}

/* Vender Zamfer (solo la instalación de Ludus) */
.rejilla-ventas-zamfer { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
.tabla-zamfer td { vertical-align: middle; }
.tabla-zamfer td small { display: block; color: var(--suave); font-size: 13px; }
.tabla-zamfer td:last-child { min-width: 330px; }
.formulario-cobro-zamfer { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.formulario-cobro-zamfer input, .formulario-cobro-zamfer select { width: auto; min-width: 0; max-width: 150px; }
.formulario-cobro-zamfer .campo-monto { max-width: 80px; }
.codigo-activacion { margin: 6px 0 10px; font-family: ui-monospace, Consolas, monospace; font-size: clamp(20px, 4vw, 30px); font-weight: 700; letter-spacing: 1px; overflow-wrap: anywhere; user-select: all; }
@media (max-width: 900px) { .rejilla-ventas-zamfer { grid-template-columns: 1fr; } }

/* Listas que se buscan escribiendo (static/buscable.js) */
.buscable { position: relative; }
.buscable input { padding-right: 36px; background: white url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2365727d' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat right 12px center; }
.buscable-lista { position: absolute; z-index: 30; top: calc(100% + 4px); right: 0; left: 0; max-height: 320px; margin: 0; padding: 4px; overflow-y: auto; border: 1px solid var(--borde); border-radius: 6px; background: var(--panel); box-shadow: 0 12px 28px rgba(16, 44, 58, .16); list-style: none; }
.buscable-lista li { padding: 9px 10px; border-radius: 4px; cursor: pointer; font-size: 15px; line-height: 1.35; }
.buscable-lista li[aria-selected="true"], .buscable-lista li:hover { background: #e9f2f5; }
.buscable-lista .buscable-vacio { color: var(--suave); cursor: default; }
.obra-por-cobrar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 4px 0; }
.obra-por-cobrar + .obra-por-cobrar { border-top: 1px solid var(--borde); }
input[type="date"], input[type="month"], input[type="time"] { cursor: pointer; }
input[type="date"]::-webkit-calendar-picker-indicator, input[type="month"]::-webkit-calendar-picker-indicator, input[type="time"]::-webkit-calendar-picker-indicator { opacity: .75; cursor: pointer; }
.novedades-hoy { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 16px; margin-top: 12px; }
.novedades-hoy form { display: flex; align-items: flex-end; gap: 8px; }
.novedades-hoy label { margin: 0; }
.novedades-hoy input[type="time"] { width: 130px; }

/* Subir facturas del SRI */
.aviso-facturas-sri { display: flex; align-items: center; gap: 18px; margin-top: 18px; border-left: 4px solid var(--primario); }
.aviso-facturas-sri > .icono { flex: none; width: 34px; height: 34px; color: var(--primario); }
.aviso-facturas-sri div { flex: 1; }
.aviso-facturas-sri h2 { margin: 0 0 2px; }
.aviso-facturas-sri p { margin: 0; color: var(--suave); }
.zona-carga { display: grid; gap: 16px; justify-items: start; }
.zona-soltar { position: relative; display: grid; justify-items: center; gap: 6px; width: 100%; padding: 42px 20px; border: 2px dashed #9fb6c0; border-radius: 8px; background: #f6fafb; text-align: center; cursor: pointer; transition: border-color .15s, background .15s; }
.zona-soltar:hover, .zona-soltar.encima { border-color: var(--primario); background: #eaf4f7; }
.zona-soltar strong { font-size: 20px; }
.zona-soltar span { color: var(--suave); font-size: 14px; }
.zona-soltar input[type="file"] { position: absolute; width: 1px; height: 1px; opacity: 0; }
.zona-icono { width: 40px; height: 40px; color: var(--primario); }
.pasos-sri { margin: 12px 0; padding-left: 20px; }
.pasos-sri li { margin-bottom: 8px; }
.lista-beneficios { margin: 12px 0 0; padding-left: 18px; }
.lista-beneficios li { margin-bottom: 8px; color: var(--suave); }
.lista-beneficios strong { color: var(--texto); }
@media (max-width: 640px) { .aviso-facturas-sri { flex-wrap: wrap; } }
