/* v23n1 · PC (decisión LZ del dueño, 27/10/2026): las pantallas de Administración armadas desde el molde del lienzo
   (docs/v23n1/lienzo/: Main, Celular, Paso1_CTF, Paso2_Factura, Paso3_Cobro y consta.css). Cada clase del molde pasa con
   el prefijo «lz-»; colores, radios, letras y tamaños salen de tokens.css (lo que el molde trae sin token, con el más
   cercano: docs/v23n1/DECISIONES_CONSEJO_v23n1.md). Sin alto fijo (.accion{min-height:168px} no pasa: la grilla iguala el
   alto de las tres tarjetas). */

.lz-pagina { display: flex; flex-direction: column; gap: 32px; }
.lz-cabeza { display: flex; flex-direction: column; gap: 8px; }
.lz-seccion { display: flex; flex-direction: column; gap: 12px; min-width: 0; max-width: 100%; }
.lz-h2 { margin: 0; font-family: var(--fuente-texto); font-size: var(--letra-texto-destacado); font-weight: 700; color: var(--tinta); }
.lz-h1 { margin: 0; font-family: var(--fuente-titulos); font-weight: 600; font-size: var(--letra-titulo-pagina); color: var(--tinta); }
.lz-frase { margin: 0; font-size: var(--letra-frase); font-weight: 600; color: var(--tinta); }
.lz-cifra { font-family: var(--fuente-titulos); font-weight: 600; font-variant-numeric: tabular-nums; }
.lz-cifra--grande { font-size: var(--letra-cifra-grande); }
.lz-cifra--media { font-size: var(--letra-cifra); }
.lz-num { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.lz-nota { margin: 0; font-size: var(--letra-texto-chico); font-weight: 400; color: var(--terciario); }
.lz-rotulo { margin: 0; font-size: var(--letra-rotulo); color: var(--secundario); }
.lz-sub { margin: 0; color: var(--secundario); }

/* Main.html · «Lo que hacés cada quincena»: tres tarjetas enlazadas enteras. */
.lz-acciones { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.lz-accion { border: 1px solid var(--linea-fuerte); border-radius: var(--radio-tarjeta); padding: 20px; display: flex; flex-direction: column;
             gap: 12px; text-decoration: none; color: var(--tinta); }
.lz-accion:hover { border-color: var(--azul-marca); background: var(--zona); color: var(--tinta); }
.lz-accion:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
.lz-accion b { font-size: var(--letra-texto-destacado); }
.lz-icono { width: 40px; height: 40px; border-radius: 10px; background: var(--fondo-seleccion); display: flex; align-items: center;
            justify-content: center; color: var(--azul-marca); }
.lz-pie { margin-top: auto; display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.lz-etiqueta { font-size: var(--letra-texto-chico); font-weight: 700; border-radius: var(--radio-etiqueta); padding: 3px 10px;
               background: var(--tinta); color: var(--blanco); }
.lz-etiqueta--suave { background: var(--zona); color: var(--secundario); }

/* Tablas, estados y botones (consta.css). */
.lz-caja-tabla { overflow-x: auto; max-width: 100%; }
.lz-tabla { width: 100%; border-collapse: collapse; }
.lz-tabla th { font-size: var(--letra-rotulo); font-weight: 600; color: var(--secundario); text-align: left; padding: 8px 12px;
               border-bottom: 1px solid var(--linea-fuerte); }
.lz-tabla td { padding: 12px; border-bottom: 1px solid var(--linea); vertical-align: middle; }
.lz-tabla th.lz-num, .lz-tabla td.lz-num { text-align: right; }
.lz-estado { display: inline-flex; align-items: center; gap: 6px; font-size: var(--letra-rotulo); font-weight: 600; white-space: nowrap; }
.lz-estado--atencion { color: var(--estado-atencion-texto); }
.lz-estado--hueco { color: var(--terciario); }
.lz-punto { width: var(--tamano-punto); height: var(--tamano-punto); border-radius: 50%; display: inline-block;
            border: 1.5px solid var(--azul-marca); background: var(--azul-marca); flex: none; }
.lz-punto--hueco { background: var(--blanco); border-color: var(--rotulo-tabla); }
.lz-punto--atencion { background: var(--estado-atencion-punto); border-color: var(--estado-atencion-punto); }
.lz-boton { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: var(--tamano-toque); padding: 0 16px;
            border-radius: var(--radio-boton); font: 700 var(--letra-boton) var(--fuente-texto); border: 1px solid var(--linea-fuerte);
            background: var(--blanco); color: var(--tinta); text-decoration: none; cursor: pointer; }
.lz-boton--principal { background: var(--azul-marca); border-color: var(--azul-marca); color: var(--blanco); }
.lz-boton--principal:hover { background: var(--azul-marca-hover); color: var(--blanco); }
.lz-boton--grande { min-height: 52px; padding: 0 20px; font-size: var(--letra-texto-destacado); }
.lz-acciones-fila { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }

/* Avisos (consta.css .aviso). */
.lz-aviso { background: var(--zona); border-radius: var(--radio-tarjeta); padding: 16px 20px; display: flex; gap: 12px; align-items: flex-start; }
.lz-aviso--bien { background: var(--fondo-resumen); }
.lz-aviso--bien b { color: var(--confirmacion-texto); }
.lz-aviso--atencion { background: var(--aviso-fondo); border: 1px solid var(--aviso-borde); color: var(--aviso-texto); }
/* «No se guardó: …» arriba: con los colores de aviso (el rojo de la Línea D queda para lo crítico; el error junto al campo,
   .lz-error, sigue el molde). */
.lz-aviso--error { background: var(--aviso-fondo); border: 1px solid var(--aviso-borde); color: var(--aviso-texto); }
.lz-aviso svg { flex: none; margin-top: 2px; }

/* «Ver más números» plegado. */
.lz-mas { border-top: 1px solid var(--linea); padding-top: 20px; }
.lz-mas summary { cursor: pointer; font-weight: 700; list-style: none; display: flex; align-items: center; gap: 8px; min-height: var(--tamano-toque); }
.lz-mas summary::-webkit-details-marker { display: none; }
.lz-mas__cifra { margin: 4px 0 0; }
.lz-ficha__cifra { margin: 0 0 8px; }
.lz-mas__cifras { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-top: 16px; }

/* Los pasos (Paso1, Paso2 y Paso3). */
.lz-migas { margin: 0; font-size: var(--letra-rotulo); color: var(--secundario); }
.lz-pasos { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; font-size: var(--letra-rotulo); font-weight: 600; color: var(--secundario); }
.lz-pasos .lz-hecho { color: var(--azul-marca); }
.lz-pasos .lz-actual { color: var(--tinta); background: var(--fondo-seleccion); padding: 4px 10px; border-radius: var(--radio-etiqueta); }
.lz-campo { display: flex; flex-direction: column; gap: 6px; }
.lz-campo label, .lz-campo legend { font-size: var(--letra-etiqueta-campo); font-weight: 600; }
.lz-campo input:not([type="radio"]):not([type="checkbox"]):not([type="file"]), .lz-campo select, .lz-campo textarea {
    min-height: var(--tamano-toque); border: 1px solid var(--borde-campo); border-radius: var(--radio-campo); padding: 0 12px;
    font: 500 var(--letra-texto) var(--fuente-texto); color: var(--tinta); background: var(--blanco); }
.lz-campo textarea { padding: 10px 12px; resize: vertical; }
/* Revisión PC.5 (alta): lo de solo lectura, en gris, con la misma fuerza que la regla de arriba (si no, se ve para escribir). */
.lz-campo input[readonly]:not([type="radio"]):not([type="checkbox"]):not([type="file"]) { background: var(--zona); border-color: var(--linea-fuerte); }
.lz-campo .lz-ayuda { font-size: var(--letra-texto-chico); color: var(--terciario); }
.lz-campo .lz-error { font-size: var(--letra-rotulo); color: var(--estado-critico); font-weight: 600; }
.lz-campo.lz-con-error input { border: 2px solid var(--estado-critico); }
.lz-carga { border: 1.5px dashed var(--borde-campo); border-radius: var(--radio-tarjeta); padding: 20px; display: flex; gap: 16px;
            align-items: center; flex-wrap: wrap; }
.lz-carga__texto { display: flex; flex-direction: column; gap: 2px; }
.lz-carga__fin { margin-left: auto; }
.lz-datos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.lz-dos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.lz-igual { color: var(--confirmacion-texto); font-weight: 700; }
.lz-ejemplo { border: 1px dashed var(--linea-fuerte); border-radius: var(--radio-tarjeta); padding: 20px; display: flex; flex-direction: column; gap: 12px; }
.lz-factura { border: 1px solid var(--linea-fuerte); border-radius: var(--radio-tarjeta); overflow: hidden; }
.lz-factura-cab { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; padding: 20px; border-bottom: 1px solid var(--linea); }
.lz-factura-cab .lz-cifra { margin-left: auto; }
.lz-panel { padding: 24px 20px; display: flex; flex-direction: column; gap: 20px; background: var(--zona); }
.lz-opciones { display: flex; flex-direction: column; gap: 8px; border: 0; padding: 0; margin: 0; }
.lz-opciones label { display: flex; gap: 10px; align-items: center; min-height: var(--tamano-toque); font-weight: 600; }
.lz-opciones input { width: 18px; height: 18px; accent-color: var(--azul-marca); }
.lz-menos { border: 1px solid var(--linea-fuerte); border-radius: var(--radio-tarjeta); padding: 16px 20px; display: flex;
            flex-direction: column; gap: 14px; background: var(--blanco); }

/* Paso3_Cobro.html: «Entró de menos» y sus campos, solo con su opción (sin JavaScript: :has; el atributo hidden de
   entrada sale del servidor según lo elegido, y estas reglas lo siguen al tocar otra opción). */
.lz-panel:has(input[name="entro_total"]:checked) [data-solo-menos],
.lz-panel:has(input[name="entro_total"]:checked) [data-solo-con] { display: none; }
.lz-panel:has(input[name="entro_total"]:not([value="total"]):checked) [data-solo-menos] { display: flex; }
.lz-panel:has(input[name="entro_total"][value="descuento_multa"]:checked) [data-solo-con="descuento_multa"],
.lz-panel:has(input[name="entro_total"][value="comision_banco"]:checked) [data-solo-con="comision_banco"],
.lz-panel:has(input[name="entro_total"][value="otro"]:checked) [data-solo-con="otro"] { display: flex; }

/* Celular.html: la ficha de cada fila de «En curso». */
.lz-ficha { border: 1px solid var(--linea-fuerte); border-radius: var(--radio-tarjeta); padding: 16px; display: flex; flex-direction: column; gap: 4px; }
.lz-ficha h2 { margin: 0; font-size: var(--letra-texto-destacado); }
.lz-linea-paso { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--linea); font-size: var(--letra-texto-destacado); }
.lz-linea-paso:last-child { border-bottom: 0; }
.lz-linea-paso .lz-dato { margin-left: auto; font-size: var(--letra-texto); color: var(--secundario); }
.lz-linea-paso.lz-estado--atencion, .lz-linea-paso.lz-estado--atencion .lz-dato { color: var(--estado-atencion-texto); }
.lz-linea-paso.lz-estado--hueco { color: var(--terciario); }

@media (max-width: 900px) {
    .lz-acciones, .lz-datos, .lz-dos, .lz-mas__cifras { grid-template-columns: minmax(0, 1fr); }
}

/* A menos de 768 px (computadora angosta), la tabla en fichas, como .s-tabla (sistema.css): sin deslizar de costado. */
@media (max-width: 767px) {
    .lz-tabla thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
    .lz-tabla, .lz-tabla tbody, .lz-tabla tr, .lz-tabla td { display: block; width: 100%; box-sizing: border-box; }
    .lz-tabla tr { border: 1px solid var(--linea); border-radius: var(--radio-tarjeta); padding: 8px 12px; margin: 0 0 8px; }
    .lz-tabla td { border: none; padding: 4px 0; display: flex; justify-content: space-between; gap: 12px; text-align: right; flex-wrap: wrap; }
    .lz-tabla td::before { content: attr(data-rotulo); color: var(--terciario); font-size: var(--letra-texto-chico); font-weight: 700; text-align: left; }
    .lz-tabla td.lz-num { text-align: right; }
    .lz-estado { white-space: normal; }
}
.lz-bloque { display: block; }
.lz-campo--medio { max-width: 560px; }
/* Revisión PC.5 (baja 7): el aire entre las secciones del Hoy, como el molde (gap 32 px de .pagina). */
#hoy-pasos, #en-curso.lz-seccion { margin-top: 24px; }
.lz-mas { margin: 24px 0; }

/* v23o · O.1 y O.2 (L1): Certificación y el certificado, desde el molde docs/v23o/lienzo/ (Adm_Certificacion y A_Certificado). */
.lz-quincena { gap: 28px; }
.lz-ciclo { display: flex; flex-direction: column; gap: 8px; }
.lz-pasos { display: flex; gap: 8px; flex-wrap: wrap; align-items: flex-start; font-size: var(--letra-rotulo); font-weight: 600; color: var(--secundario); }
.lz-paso { display: inline-flex; flex-direction: column; gap: 2px; }
.lz-paso a { color: inherit; text-decoration: none; display: inline-flex; align-items: center; min-height: 24px; }
.lz-paso a:hover { text-decoration: underline; }
.lz-paso small { font-size: var(--letra-texto-chico); font-weight: 400; color: var(--terciario); }
.lz-paso--hecho, .lz-paso--hecho a { color: var(--azul-marca); }
.lz-paso--ahora { color: var(--tinta); background: var(--fondo-seleccion); padding: 4px 10px; border-radius: var(--radio-etiqueta); }
.lz-le-toca { margin: 0; font-size: var(--letra-rotulo); color: var(--secundario); }
.lz-toca { border: 1px solid var(--linea-fuerte); border-radius: var(--radio-tarjeta); padding: 20px; display: flex; flex-direction: column; gap: 14px; }
.lz-toca__fila { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 12px 0; border-top: 1px solid var(--linea); }
.lz-toca h2 + .lz-toca__fila { border-top: 0; }
.lz-quincena .lz-h2, .lz-certificado .lz-h2 { border: 0; padding: 0; }
.lz-toca__n { width: 28px; height: 28px; border-radius: 50%; background: var(--fondo-seleccion); color: var(--azul-marca); font-weight: 700;
              display: flex; align-items: center; justify-content: center; font-size: var(--letra-rotulo); }
.lz-cabecera { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 24px; align-items: end; }
.lz-cabecera__izq { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.lz-cabecera .lz-cifra--manda { margin: 0; font-size: 40px; line-height: 1.1; } /* v23q · Q.6 (M4 de v23o): la del molde; sin la variable, que en la computadora baja a 20px */
.lz-aviso--cuenta { flex-direction: column; gap: 10px; }
.lz-cuenta { display: grid; grid-template-columns: auto auto; gap: 4px 24px; width: 100%; font-size: var(--letra-texto); }
.lz-avisos { display: flex; flex-direction: column; gap: 10px; }
.lz-capitulo { border: 1px solid var(--linea); border-radius: var(--radio-tarjeta); }
.lz-capitulo > summary { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 16px; align-items: center; padding: 14px 16px; min-height: var(--tamano-toque);
                         cursor: pointer; font-weight: 700; list-style: none; }
.lz-capitulo > summary::-webkit-details-marker { display: none; }
.lz-capitulo > summary:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
.lz-capitulo[open] > summary { border-bottom: 1px solid var(--linea); }
.lz-capitulo .lz-caja-tabla { padding: 0 4px 4px; }
.lz-abrir { font-size: var(--letra-rotulo); font-weight: 600; color: var(--azul-marca); }
.lz-capitulo [data-cerrar], .lz-capitulo[open] [data-abrir] { display: none; }
.lz-capitulo[open] [data-cerrar] { display: inline; }
.lz-num--envuelve { white-space: normal; }
.lz-num--envuelve .lz-nota { display: block; }
.lz-lista { margin: 0; padding: 12px 16px 12px 32px; display: flex; flex-direction: column; gap: 6px; }
@media (max-width: 900px) {
    .lz-cabecera { grid-template-columns: minmax(0, 1fr); }
    .lz-toca__fila { grid-template-columns: 28px minmax(0, 1fr); }
    .lz-toca__fila > .lz-boton, .lz-toca__fila > form { grid-column: 2; }
    .lz-paso a, .lz-quincena .lz-aviso a { display: inline-flex; align-items: center; min-height: var(--tamano-toque); }
}
@media (max-width: 767px) {
    .lz-capitulo > summary { grid-template-columns: minmax(0, 1fr) auto; }
    .lz-capitulo > summary > .lz-num { grid-column: 1; grid-row: 2; text-align: left; }
    .lz-num--envuelve .lz-nota { flex-basis: 100%; }
}
.lz-certificado { gap: 28px; margin-bottom: 32px; }
.lz-grupo td { background: var(--zona); font-weight: 700; border-bottom: 1px solid var(--linea-fuerte); }
.lz-debajo { display: flex; flex-direction: column; gap: 16px; }
.certificado-cabeza-chica { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; border-top: 1px solid var(--linea); padding-top: 16px; }
.certificado-cabeza-chica .lz-rotulo { margin-right: auto; }
.certificado__plegada { margin: 8px 0; }
.certificado__plegada > summary .lz-h2 { font-weight: 700; }
.certificado__plegada .certificado-seccion { border: 0; }
@media (max-width: 767px) {
    .lz-grupo td { display: flex; justify-content: space-between; }
}

/* v23p · PB.2 (LP): F_Hoy.html · «Para confirmar», con sus dos botones (.marca del molde: 48 px; sin token: --radio-boton). */
.lz-por-confirmar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: center; border: 1px solid var(--linea);
                    border-radius: var(--radio-tarjeta); padding: 14px 18px; }
.lz-por-confirmar__botones { display: flex; gap: 8px; }
.lz-marca { min-height: 48px; min-width: 120px; padding: 0 14px; border-radius: var(--radio-boton); border: 1px solid var(--linea-fuerte); background: var(--blanco);
            font: 700 var(--letra-boton) var(--fuente-texto); color: var(--tinta); cursor: pointer; }
.lz-marca--si { background: var(--azul-marca); border-color: var(--azul-marca); color: var(--blanco); }
.lz-marca:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
@media (max-width: 600px) {
    .lz-por-confirmar { grid-template-columns: minmax(0, 1fr); }
    .lz-por-confirmar__botones { flex-wrap: wrap; }
    .lz-marca { flex: 1 1 120px; }
}

/* v23p · PB.3 (LP, D22): R_Hoy.html y R_Hoy_Celular.html. */
.lz-solo-celular { display: flex; }
.lz-solo-computadora { display: none; }
.lz-botones-cel { flex-direction: column; gap: 12px; }
.lz-btn-cel { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 56px; padding: 0 16px; border: 1px solid var(--linea-fuerte);
              border-radius: var(--radio-tarjeta); text-decoration: none; color: var(--tinta); font-weight: 700; font-size: var(--letra-texto-destacado); }
.lz-btn-cel--principal { background: var(--azul-marca); border-color: var(--azul-marca); color: var(--blanco); }
.lz-btn-cel--principal:hover { color: var(--blanco); }
.lz-btn-cel__n { font-size: var(--letra-rotulo); font-weight: 600; opacity: .85; white-space: nowrap; }
.lz-filas-aviso { display: flex; flex-direction: column; gap: 8px; }
.lz-fila-aviso { border: 1px solid var(--linea); border-radius: var(--radio-tarjeta); padding: 12px 14px; display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.lz-fila-aviso .lz-boton { min-height: 44px; }
.lz-ver-mas { border-top: 1px solid var(--linea); padding-top: 12px; }
.lz-ver-mas__titulo { cursor: pointer; font-weight: 700; list-style: none; display: flex; align-items: center; gap: 8px; min-height: 44px; }
.lz-ver-mas__titulo::-webkit-details-marker { display: none; }
.lz-ver-mas__titulo:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
.lz-ver-mas__cuerpo { display: flex; flex-direction: column; gap: 16px; padding-top: 8px; min-width: 0; }
@media (min-width: 1024px) {
    .lz-solo-celular { display: none; }
    .lz-solo-computadora { display: block; }
    section.lz-seccion.lz-solo-computadora { display: flex; }
    .lz-filas-aviso { gap: 0; }
    .lz-fila-aviso { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: center; border: 0; border-bottom: 1px solid var(--linea); border-radius: 0; padding: 12px 0; }
    .lz-fila-aviso:last-child { border-bottom: 0; }
}

/* v23p · PB.6: en el celular, el ciclo en columna: un paso por línea, sin separadores. */
@media (max-width: 599px) {
    .lz-pasos { flex-direction: column; align-items: flex-start; flex-wrap: nowrap; }
    .lz-pasos__sep { display: none; }
}

/* v23p · PB.8 (D23): el «lugar exacto», más chico y obligatorio. */
.lz-campo-corto { max-width: 320px; }

/* v23p · PB.9 (A1): en el celular, el Urgente del residente es una ficha, con su botón a la vista (R_Hoy_Celular.html). */
@media (max-width: 1023px) {
    .lz-hoy-residente [data-hoy-seccion="urgente"] .pendiente { border: 1px solid var(--linea); border-radius: var(--radio-tarjeta); list-style: none; }
    .lz-hoy-residente [data-hoy-seccion="urgente"] .pendiente__enlace { flex-wrap: wrap; padding: 12px 14px; }
    .lz-hoy-residente [data-hoy-seccion="urgente"] .pendiente__boton { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; flex-basis: 100%;
        padding: 0 14px; border: 1px solid var(--linea-fuerte); border-radius: var(--radio-boton); background: var(--blanco); color: var(--tinta); font-weight: 700; }
}

/* v23p · PB.10: la frase de los Hoy, en la escala de D (F_Hoy.html:32 pide 16 px; R_Hoy.html:37, 17; R_Hoy_Celular.html:30, 15). */
.lz-hoy-fiscal .lz-frase, .lz-hoy-residente .lz-frase { font-size: var(--letra-texto-destacado); }

/* v23o1 · C.3 y C.4 (A_Contrato.html, Adm_Validar.html, Adm_Hoy_Validar.html): la propuesta del contrato y su validación. */
.lz-tabla .lz-precio { height: 40px; width: 100px; border: 1px solid var(--borde-campo); border-radius: var(--radio-boton); padding: 0 8px;
                       font: 600 var(--letra-texto) var(--fuente-texto); text-align: right; }
.lz-comparar { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.lz-comparar > div { border: 1px solid var(--linea); border-radius: var(--radio-tarjeta); padding: 16px; display: flex; flex-direction: column; gap: 4px; }
.lz-cod { font-size: var(--letra-texto-chico); font-weight: 700; color: var(--secundario); white-space: nowrap; }
.lz-falta { color: var(--terciario); font-style: italic; }
.lz-oculto { position: absolute; left: -9999px; }
.lz-error-fila { display: block; font-size: var(--letra-rotulo); color: var(--estado-critico); font-weight: 600; white-space: normal; }
.lz-cierre { border-top: 1px solid var(--linea); padding-top: 20px; }
.lz-carga__icono { font-size: var(--letra-cifra-grande); }
.lz-control { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px 12px; align-items: start; font-size: var(--letra-texto); }
.lz-marca-atencion { color: var(--estado-atencion-texto); font-weight: 700; }
.lz-fila-validar { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 16px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--linea); }
.lz-fila-validar:last-child { border-bottom: 0; }
.lz-fila-validar .lz-nota { display: block; }
@media (max-width: 899px) { .lz-comparar { grid-template-columns: minmax(0, 1fr); } }

/* v23o1 · C.7 (Adm_Tarifario.html). */
.lz-fila-version { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--linea); }

/* v23o1 · C.8 (Adm_Costeo_Obra.html). */
.lz-paso-n { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 14px; align-items: start; }
.lz-paso-n > span:first-child { width: 32px; height: 32px; border-radius: 50%; background: var(--fondo-seleccion); color: var(--azul-marca); font-weight: 700;
                                display: flex; align-items: center; justify-content: center; }
.lz-estado--largo { white-space: normal; }

/* v23o1 · C.10: el texto de la carga ocupa lo que sobra: el botón queda en la misma fila, como el molde. */
.lz-carga .lz-carga__texto { flex: 1 1 0; min-width: 240px; }
.lz-archivo-elegido { flex-basis: 100%; font-size: var(--letra-rotulo); font-weight: 600; color: var(--tinta); }

/* v23r · R.3 y R.4 (molde docs/v23r/lienzo/Asistente.html, secciones 1 y 2): el asistente. En la computadora, el botón
   «✦ Asistente» de la barra de arriba y el panel a la derecha, sin tapar la pantalla (el contenido se corre); en el
   celular, el «?» del encabezado y la hoja desde abajo, encima de la barra. Valores del molde sin token: el más cercano
   (docs/v23r/DECISIONES_CONSEJO_v23r.md). */
.lz-asis-boton {
    display: inline-flex; align-items: center; gap: var(--espacio-8); min-height: var(--boton-alto); padding: 0 14px; flex: none;
    border-radius: var(--radio-etiqueta); border: 1px solid var(--azul-marca); color: var(--azul-marca); background: var(--fondo-seleccion);
    font-family: var(--fuente-texto); font-size: var(--letra-boton); font-weight: 700; cursor: pointer; white-space: nowrap;
}
.lz-asis-boton:hover { background: var(--blanco); }
.lz-asis-boton:focus-visible, .lz-asis-q:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
.lz-asis-q {
    width: var(--tamano-toque); height: var(--tamano-toque); flex: none; border-radius: var(--radio-etiqueta); border: 1.5px solid var(--azul-marca);
    color: var(--azul-marca); background: var(--fondo-seleccion); display: inline-flex; align-items: center; justify-content: center;
    font-family: var(--fuente-texto); font-size: var(--letra-texto-destacado); font-weight: 700; cursor: pointer; padding: 0;
}
.lz-asis {
    position: fixed; left: 0; right: 0; bottom: calc(64px + env(safe-area-inset-bottom, 0px)); top: 18vh; z-index: 45;
    display: flex; flex-direction: column; min-width: 0; box-sizing: border-box; background: var(--zona); color: var(--tinta);
    border-top: 1px solid var(--linea-fuerte); border-radius: var(--radio-flota) var(--radio-flota) 0 0;
    box-shadow: 0 -6px 18px rgba(20, 33, 58, 0.10); font-family: var(--fuente-texto); font-size: var(--letra-texto);
}
.lz-asis[hidden] { display: none; }
.lz-asis__tirador { width: 40px; height: 4px; border-radius: 2px; background: var(--linea-fuerte); margin: var(--espacio-8) auto 0; flex: none; }
.lz-asis__cab {
    display: flex; align-items: center; justify-content: space-between; gap: var(--espacio-8); padding: var(--espacio-12) 18px;
    border-bottom: 1px solid var(--linea); flex: none;
}
.lz-asis__titulo { font-family: var(--fuente-titulos); font-weight: 600; font-size: var(--letra-texto-destacado); }
.lz-asis__quien { display: none; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.lz-asis__cerrar {
    min-height: var(--tamano-toque); padding: 0 var(--espacio-8); border: none; background: none; color: var(--terciario);
    font-family: var(--fuente-texto); font-size: var(--letra-texto-chico); font-weight: 400; cursor: pointer;
}
.lz-asis__charla { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: var(--espacio-16) 18px; display: flex; flex-direction: column; gap: var(--espacio-12); }
.lz-asis__yo {
    align-self: flex-end; max-width: 85%; background: var(--azul-marca); color: var(--blanco); padding: 9px 13px; font-weight: 600;
    border-radius: 14px 14px 4px 14px; overflow-wrap: anywhere;
}
.lz-asis__ia {
    align-self: flex-start; max-width: 94%; box-sizing: border-box; background: var(--blanco); border: 1px solid var(--linea); padding: var(--espacio-12) 14px;
    border-radius: 14px 14px 14px 4px; display: flex; flex-direction: column; gap: var(--espacio-8); overflow-wrap: anywhere;
}
.lz-asis__ia ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: var(--espacio-4); }
.lz-asis__pensando { color: var(--terciario); }
.lz-asis__ir {
    display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; min-height: var(--tamano-toque); padding: 0 var(--espacio-12);
    border-radius: var(--radio-boton); border: 1px solid var(--linea-fuerte); font-weight: 700; color: var(--azul-marca); background: var(--blanco);
    text-decoration: none; max-width: 100%; box-sizing: border-box;
}
.lz-asis__ir:hover { border-color: var(--azul-marca); }
.lz-asis__fuente { font-size: var(--letra-texto-chico); color: var(--terciario); border-top: 1px dashed var(--linea-fuerte); padding-top: 6px; }
.lz-asis__escribir {
    padding: var(--espacio-12) 18px var(--espacio-16); border-top: 1px solid var(--linea); background: var(--blanco); display: flex;
    flex-direction: column; gap: 6px; flex: none;
}
.lz-asis__sug { display: none; gap: 6px; flex-wrap: wrap; }
.lz-asis__sugerencia {
    font-family: var(--fuente-texto); font-size: var(--letra-texto-chico); font-weight: 600; border: 1px solid var(--linea-fuerte);
    border-radius: var(--radio-etiqueta); padding: 3px 10px; min-height: 32px; background: var(--blanco); color: var(--secundario); cursor: pointer;
}
.lz-asis__caja {
    display: flex; align-items: center; justify-content: space-between; gap: var(--espacio-8); min-height: var(--tamano-toque); margin: 0;
    border: 1px solid var(--borde-campo); border-radius: 10px; padding: 0 6px 0 var(--espacio-12); box-sizing: border-box; background: var(--blanco);
}
.lz-asis__entrada {
    flex: 1 1 auto; min-width: 0; border: none; outline: none; background: none; color: var(--tinta); min-height: 40px;
    font-family: var(--fuente-texto); font-size: 16px; padding: 0;
}
.lz-asis__entrada::placeholder { color: var(--terciario); }
.lz-asis__caja:focus-within { border-color: var(--azul-marca); box-shadow: 0 0 0 1px var(--azul-marca); }
.lz-asis__enviar {
    min-height: 32px; padding: 0 var(--espacio-12); border-radius: 7px; border: none; background: var(--azul-marca); color: var(--blanco);
    font-family: var(--fuente-texto); font-weight: 700; font-size: var(--letra-rotulo); cursor: pointer; flex: none;
}
.lz-asis__nota { display: none; }
@media (min-width: 900px) {
    .lz-asis {
        left: auto; top: 64px; bottom: 0; width: 380px; max-width: 100%; border-top: none; border-left: 1px solid var(--linea);
        border-radius: 0; box-shadow: none; z-index: 24;
    }
    .lz-asis__tirador, .lz-asis__cerrar { display: none; }
    .lz-asis__cab { background: var(--blanco); padding: 14px 18px; }
    .lz-asis__quien { display: block; }
    .lz-asis__sug { display: flex; }
    .lz-asis__nota { display: block; }
    .lz-asis__entrada { font-size: var(--letra-texto); }
    body.lz-asis-abierto .contenido { margin-right: 380px; margin-left: auto; }
}

/* v23s · S.1 (F2; molde docs/v23s/lienzo/R_Hoy_Corregi.html): «Te toca a vos» en el Hoy del residente y del analista, con el
   renglón «Corregí el certificado». Igual en la computadora y en el celular (el texto se corta, el botón no). */
.lz-te-toca { border: 1px solid var(--linea); border-radius: var(--radio-tarjeta); background: var(--blanco); min-width: 0; }
.lz-te-toca .lz-h2 { padding: 14px 16px 0; }
.lz-renglon { display: flex; align-items: center; gap: 16px; padding: 14px 16px; border-top: 1px solid var(--linea); }
.lz-te-toca .lz-h2 + .lz-renglon { border-top: 0; }
.lz-renglon__que { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; overflow-wrap: anywhere; }
.lz-renglon__que b { font-size: var(--letra-texto-destacado); }
.lz-renglon__que span { font-size: var(--letra-rotulo); color: var(--secundario); }
.lz-renglon__punto { width: var(--tamano-punto); height: var(--tamano-punto); border-radius: 50%; background: var(--estado-atencion-punto); flex: none; }
.lz-renglon .lz-boton { flex: none; }

/* v23t · T.3 (molde docs/v23t/lienzo/Pesos_Etapas.html): «Pesos de las etapas de esta obra», arriba de Capítulos. */
.lz-pesos { border: 1px solid var(--linea); border-radius: var(--radio-tarjeta); background: var(--blanco); padding: var(--espacio-16);
            display: flex; flex-direction: column; gap: var(--espacio-16); min-width: 0; }
.lz-pesos__grupo { display: flex; flex-direction: column; gap: var(--espacio-12); padding-top: var(--espacio-16); border-top: 1px solid var(--linea); }
.lz-pesos__grupo:first-of-type { border-top: 0; padding-top: 0; }
.lz-pesos__cab { display: flex; justify-content: space-between; align-items: baseline; gap: var(--espacio-12); flex-wrap: wrap; }
.lz-pesos__campos { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--espacio-12); }
.lz-pesos__campos input { text-align: right; }
.lz-pesos__suma { font-size: 13px; font-weight: 600; color: var(--confirmacion-texto); margin: 0; }
.lz-pesos__acciones { display: flex; gap: var(--espacio-12); flex-wrap: wrap; align-items: center; }
.lz-pesos__valores { margin: 0; }

/* v23t · T.6.1 (molde docs/v23t/lienzo/Cobro_Antes.html): las facturas de antes de Consta en la Caja de la obra. */
.lz-cobro-antes__cab { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--espacio-12); flex-wrap: wrap; }
.lz-cobro-antes input { min-width: 0; }

/* v23t · T.5.2: «Retención en adicionales» con Sí o No (antes una casilla): cada opción con su toque de 44 px. */
.condiciones-linea__opciones { display: inline-flex; align-items: center; gap: var(--espacio-12); flex-wrap: wrap; min-width: 15em; }
.condiciones-linea__opcion { display: inline-flex; align-items: center; gap: var(--espacio-8); min-height: var(--tamano-toque); min-width: var(--tamano-toque); cursor: pointer; }
.condiciones-linea__opcion input { width: 22px; height: 22px; accent-color: var(--azul-marca); }

/* v23t · T.9.1: el contrato firmado y la planilla del cliente; la diferencia, en gris. */
.lz-firmado p { margin: 0 0 var(--espacio-4); }
.lz-firmado__diferencia { color: var(--secundario); }
