/* Mi trabajo (G. Lector, Control lechero): estilo de panel de datos (Grupo Operativo) con los colores de OviNET: cabecera marino y oro,
   pestañas, cifras en tarjetas con número en monoespaciada, tablas sobrias y tarjetas de acción. */
.gx { display: flex; flex-direction: column; gap: var(--esp-4); max-width: 1240px; }
.mono { font-family: var(--fuente-mono); }
.gx-sub { font-size: var(--fs-xs); color: var(--color-texto-suave); }

/* Cabecera */
.gx-cab { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: var(--esp-3);
    padding: var(--esp-3) var(--esp-5); border-radius: var(--radio-lg); background: var(--marca-marino-900); color: #fff;
    border-bottom: 3px solid var(--marca-oro-500); }
.gx-cab-tit { display: flex; align-items: center; gap: var(--esp-3); min-width: 0; }
.gx-cab-ico { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: color-mix(in srgb, var(--marca-oro-500) 22%, transparent); color: var(--marca-oro-500); }
.gx-cab-ico svg { width: 16px; height: 28px; }
.gx-cab h1 { margin: 0; font-size: var(--fs-xl); font-weight: 800; letter-spacing: -.01em; color: #fff; }
.gx-cab p { margin: 2px 0 0; font-size: var(--fs-xs); color: color-mix(in srgb, #fff 72%, transparent); }
.gx-cab-der { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--esp-2); }
.gx-sel { display: inline-flex; align-items: center; gap: var(--esp-2); font-size: var(--fs-xs); color: color-mix(in srgb, #fff 72%, transparent); }
.gx-sel select { min-height: 30px; padding: 0 var(--esp-2); border: 1px solid color-mix(in srgb, #fff 25%, transparent); border-radius: var(--radio-sm);
    background: color-mix(in srgb, #fff 8%, transparent); color: #fff; font: inherit; font-size: var(--fs-sm); }
.gx-sel option { color: var(--color-texto); }
.gx-estado { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: var(--radio-full); font-size: var(--fs-xs); font-weight: 700;
    background: color-mix(in srgb, var(--color-aviso) 18%, transparent); color: var(--color-aviso); }
.gx-cab .gx-estado { background: color-mix(in srgb, #fff 10%, transparent); color: #fff; }
.gx-estado i { width: 8px; height: 8px; border-radius: 50%; background: var(--color-aviso); }
.gx-estado.ok i { background: var(--color-exito); }
.gx-estado.ok { color: var(--color-exito); }
.gx-cab .gx-estado.ok { color: #fff; }

/* Pestañas: píldoras con icono, en su barra (con el selector de técnico a la derecha) */
.gx-barra-tabs { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--esp-3); }
.gx-tabs { display: inline-flex; gap: 4px; padding: 4px; border-radius: var(--radio-full); background: var(--color-superficie); border: 1px solid var(--color-borde); box-shadow: var(--sombra-xs); }
.gx-tabs button { display: inline-flex; align-items: center; gap: var(--esp-2); padding: 8px 20px; border: 0; border-radius: var(--radio-full); background: none;
    color: var(--color-texto-2); font: inherit; font-size: var(--fs-sm); font-weight: 700; cursor: pointer; transition: background .15s, color .15s; }
.gx-tabs button svg { width: 17px; height: 17px; }
.gx-tabs button:hover { color: var(--color-texto); background: var(--color-superficie-2); }
.gx-tabs button.activa { background: var(--marca-marino-900); color: #fff; box-shadow: inset 0 -2px 0 var(--marca-oro-500); }
.gx-tabs button.activa svg { color: var(--marca-oro-500); }
.gx-tabs b, .gx-subtabs b { min-width: 22px; padding: 0 7px; border-radius: var(--radio-full); background: var(--color-superficie-2); color: var(--color-texto-2);
    font-family: var(--fuente-mono); font-size: var(--fs-2xs); font-weight: 600; text-align: center; }
.gx-tabs button.activa b { background: var(--marca-oro-500); color: var(--marca-marino-900); }
.gx-barra-tabs .gx-sel { color: var(--color-texto-suave); font-weight: 700; }
.gx-barra-tabs .gx-sel select { border-color: var(--color-borde-fuerte); background: var(--color-superficie); color: var(--color-texto); }

/* Operaciones en la cabecera: en el centro, grandes y con el oro de OviNET */
.gx-ops-cab { display: inline-flex; gap: var(--esp-2); justify-self: center; }
.gx-op-btn { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 20px; border: 1.5px solid var(--marca-oro-500);
    border-radius: var(--radio-full); background: transparent; color: #fff; font: inherit; font-size: var(--fs-sm); font-weight: 800; letter-spacing: .01em;
    cursor: pointer; transition: background .15s, transform .1s, box-shadow .15s; }
.gx-op-btn svg { width: 18px; height: 18px; color: var(--marca-oro-500); }
.gx-op-btn:hover:not(:disabled) { background: color-mix(in srgb, var(--marca-oro-500) 18%, transparent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--marca-oro-500) 22%, transparent); }
.gx-op-btn:active:not(:disabled) { transform: translateY(1px); }
.gx-op-btn.prim { background: linear-gradient(180deg, #e3bb5c, var(--marca-oro-500)); color: var(--marca-marino-900); box-shadow: 0 2px 8px color-mix(in srgb, var(--marca-oro-500) 40%, transparent); }
.gx-op-btn.prim svg { color: var(--marca-marino-900); }
.gx-op-btn.prim:hover:not(:disabled) { background: linear-gradient(180deg, #ecc76b, #d9ae4a); }
.gx-op-btn.peligro { border-color: color-mix(in srgb, #ff9a9a 70%, transparent); }
.gx-op-btn.peligro svg { color: #ff9a9a; }
.gx-op-btn.peligro:hover:not(:disabled) { background: color-mix(in srgb, var(--color-peligro) 30%, transparent); box-shadow: 0 0 0 3px color-mix(in srgb, #ff9a9a 20%, transparent); }
.gx-op-btn:disabled { opacity: .5; cursor: not-allowed; }

/* Avisos y progreso */
.gx-aviso { display: flex; align-items: center; justify-content: space-between; gap: var(--esp-3); padding: var(--esp-2) var(--esp-4); border-radius: var(--radio-md);
    font-size: var(--fs-sm); font-weight: 600; }
.gx-aviso.ok { background: var(--color-exito-fondo); color: var(--color-exito); }
.gx-aviso.mal { background: var(--color-peligro-fondo); color: var(--color-peligro); }
.gx-x { border: 0; background: none; color: inherit; cursor: pointer; opacity: .7; }
.gx-progreso { display: flex; flex-direction: column; gap: var(--esp-2); padding: var(--esp-3) var(--esp-4); border: 1px solid var(--color-borde); border-radius: var(--radio-md); background: var(--color-superficie); }
.gx-progreso-txt { display: flex; justify-content: space-between; gap: var(--esp-3); font-size: var(--fs-sm); }
.gx-progreso-txt span { color: var(--color-texto-suave); font-family: var(--fuente-mono); font-size: var(--fs-xs); }
.gx-barra { height: 6px; border-radius: var(--radio-full); background: var(--color-superficie-2); overflow: hidden; }
.gx-barra i { display: block; height: 100%; border-radius: var(--radio-full); background: var(--marca-oro-500); transition: width .3s; }

/* Cifras */
.gx-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--esp-3); }
.gx-kpi { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: var(--esp-3) var(--esp-4); border: 1px solid var(--color-borde);
    border-top: 3px solid var(--marca-marino-700); border-radius: var(--radio-md); background: var(--color-superficie); }
.gx-kpi:first-child { border-top-color: var(--marca-oro-500); }
.gx-kpi span { font-size: var(--fs-2xs); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--color-texto-suave); }
.gx-kpi b { font-family: var(--fuente-mono); font-size: var(--fs-2xl); font-weight: 600; line-height: 1.15; color: var(--color-texto); }
.gx-kpi b.gx-kpi-fecha { font-size: var(--fs-xl); }
.gx-kpi small { font-size: var(--fs-xs); color: var(--color-texto-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Lista de descargas */
.gx-panel { display: flex; flex-direction: column; border: 1px solid var(--color-borde); border-radius: var(--radio-md); background: var(--color-superficie); overflow: hidden; }
.gx-filtros { display: flex; flex-wrap: wrap; gap: var(--esp-3); align-items: flex-end; padding: var(--esp-3) var(--esp-4); border-bottom: 1px solid var(--color-borde); background: var(--color-superficie-2); }
.gx-filtros label { display: flex; flex-direction: column; gap: 3px; font-size: var(--fs-2xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--color-texto-suave); }
.gx-filtros .ancho { flex: 1; min-width: 180px; }
.gx-filtros input, .gx-filtros select { min-height: 34px; padding: 0 var(--esp-2); border: 1px solid var(--color-borde-fuerte); border-radius: var(--radio-sm);
    background: var(--color-superficie); color: var(--color-texto); font: inherit; font-size: var(--fs-sm); font-weight: 400; text-transform: none; letter-spacing: 0; }
.gx-tabla { display: flex; flex-direction: column; max-height: 62vh; overflow-y: auto; }
.gx-fila { display: grid; grid-template-columns: 120px 150px 170px minmax(0, 1fr) 150px 90px; align-items: center; gap: var(--esp-3); width: 100%;
    padding: 5px var(--esp-4); border: 0; border-top: 1px solid var(--color-borde); background: none; color: var(--color-texto);
    font: inherit; font-size: var(--fs-sm); text-align: left; cursor: pointer; }
.gx-fila:hover { background: color-mix(in srgb, var(--marca-oro-500) 7%, transparent); }
.gx-fila-cab { position: sticky; top: 0; z-index: 1; border-top: 0; background: var(--color-superficie); cursor: default; font-size: var(--fs-2xs); font-weight: 700;
    text-transform: uppercase; letter-spacing: .04em; color: var(--color-texto-suave); }
.gx-fila-cab:hover { background: var(--color-superficie); }
/* Fecha y su detalle (turno, hora…) en la misma línea: filas bajas, más datos a la vista */
.gx-fecha { display: flex; align-items: baseline; gap: 6px; min-width: 0; line-height: 1.2; white-space: nowrap; }
.gx-fecha b { font-family: var(--fuente-mono); font-weight: 600; font-size: var(--fs-sm); }
.gx-fecha small { overflow: hidden; text-overflow: ellipsis; font-family: var(--fuente-mono); font-size: var(--fs-2xs); color: var(--color-texto-suave); }
.gx-cat { display: inline-block; padding: 1px 9px; border-radius: var(--radio-full); background: var(--color-superficie-2); color: var(--color-texto-2); font-size: var(--fs-xs); font-weight: 600; }
.gx-desc { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--color-texto-2); }
.gx-siglas { display: flex; flex-wrap: wrap; gap: 4px; }
.gx-siglas b { padding: 0 7px; border-radius: var(--radio-xs); background: color-mix(in srgb, var(--marca-marino-700) 10%, transparent); color: var(--marca-marino-900);
    font-family: var(--fuente-mono); font-size: var(--fs-xs); font-weight: 600; }
.gx-siglas.grande b { padding: 2px 10px; font-size: var(--fs-sm); }
.gx-siglas small { margin-left: 4px; color: var(--color-texto-suave); }
.gx-chip { display: inline-block; padding: 1px 9px; border-radius: var(--radio-full); background: var(--color-superficie-2); color: var(--color-texto-2); font-size: var(--fs-2xs); font-weight: 700; }
.gx-chip.oro { background: color-mix(in srgb, var(--marca-oro-500) 20%, transparent); color: #7c5a00; }
.gx-vacio { padding: var(--esp-6); text-align: center; color: var(--color-texto-suave); font-size: var(--fs-sm); }

/* Ficha de una descarga */
.gx-migas { display: flex; align-items: center; gap: var(--esp-3); font-size: var(--fs-sm); color: var(--color-texto-2); }
.gx-ficha { display: flex; flex-direction: column; gap: var(--esp-3); }
.gx-ficha-cab { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--esp-2) var(--esp-4); }
.gx-ficha-cab h2 { margin: 0; font-size: var(--fs-lg); font-weight: 800; color: var(--color-texto); }
/* Cifras pequeñas en la línea del título */
.gx-datos { display: flex; flex-wrap: wrap; gap: var(--esp-2); }
.gx-datos > span { display: inline-flex; align-items: baseline; gap: 5px; padding: 3px 10px; border: 1px solid var(--color-borde); border-radius: var(--radio-full);
    background: var(--color-superficie); font-size: var(--fs-xs); color: var(--color-texto-2); white-space: nowrap; }
.gx-datos b { font-family: var(--fuente-mono); font-size: var(--fs-sm); font-weight: 700; color: var(--color-texto); }
.gx-datos .oro { border-color: color-mix(in srgb, var(--marca-oro-500) 45%, transparent); background: color-mix(in srgb, var(--marca-oro-500) 12%, transparent); }
.gx-datos .aviso { border-color: color-mix(in srgb, var(--color-aviso) 40%, transparent); background: var(--color-aviso-fondo); color: var(--color-aviso); }
.gx-datos .aviso b { color: var(--color-aviso); }
.gx-subtabs { display: flex; flex-wrap: wrap; gap: var(--esp-1); padding: 4px; border-radius: var(--radio-md); background: var(--color-superficie-2); }
.gx-subtabs button { display: inline-flex; align-items: center; gap: var(--esp-2); padding: 6px 14px; border: 0; border-radius: var(--radio-sm); background: none;
    color: var(--color-texto-2); font: inherit; font-size: var(--fs-sm); font-weight: 700; cursor: pointer; font-family: var(--fuente-mono); }
.gx-subtabs button.activa { background: var(--color-superficie); color: var(--color-texto); box-shadow: var(--sombra-xs); }
.gx-subtabs button.sin, .gx-subtabs button.aviso { font-family: var(--fuente-ui); }
.gx-subtabs button.aviso { color: var(--color-aviso); }
.gx-subtabs button.aviso b { background: var(--color-aviso-fondo); color: var(--color-aviso); }
.gx-trabajo { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--esp-3); padding: var(--esp-2) 0 0; font-size: var(--fs-sm); color: var(--color-texto-2); }
.gx-trabajo b { color: var(--color-texto); }
.gx-dur { padding: 0 8px; border-radius: var(--radio-full); background: color-mix(in srgb, var(--marca-oro-500) 18%, transparent); color: #7c5a00; font-size: var(--fs-xs); font-weight: 700; }

.gx-act { border: 1px solid var(--color-borde); border-left: 3px solid var(--marca-oro-500); border-radius: var(--radio-md); background: var(--color-superficie); overflow: hidden; }
.gx-act-cab { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--esp-2) var(--esp-4); padding: var(--esp-3) var(--esp-4); }
.gx-act-cab h3 { margin: 0 0 2px; font-size: var(--fs-md); font-weight: 800; color: var(--color-texto); }
.gx-act-acc { display: flex; flex-wrap: wrap; gap: var(--esp-2); }
.gx-tt { max-height: 420px; overflow: auto; border-top: 1px solid var(--color-borde); }
.gx-tt.corta { max-height: 220px; border: 1px solid var(--color-borde); border-radius: var(--radio-sm); }
.gx-tt table { width: 100%; border-collapse: collapse; font-size: var(--fs-xs); }
.gx-tt th { position: sticky; top: 0; padding: 6px var(--esp-3); background: var(--color-superficie-2); color: var(--color-texto-suave); font-size: var(--fs-2xs);
    font-weight: 700; text-transform: uppercase; letter-spacing: .04em; text-align: left; white-space: nowrap; }
.gx-tt td { padding: 4px var(--esp-3); border-top: 1px solid var(--color-borde); white-space: nowrap; color: var(--color-texto); }
.gx-tt tr:hover td { background: var(--color-superficie-2); }

/* Botones */
.gx-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--esp-2); min-height: 38px; padding: 0 var(--esp-4);
    border: 1px solid var(--color-borde-fuerte); border-radius: var(--radio-sm); background: var(--color-superficie); color: var(--color-texto);
    font: inherit; font-size: var(--fs-sm); font-weight: 700; text-decoration: none; cursor: pointer; white-space: nowrap; }
.gx-btn:hover:not(:disabled) { border-color: var(--marca-oro-500); }
.gx-btn.prim { border-color: var(--marca-marino-900); background: var(--marca-marino-900); color: #fff; }
.gx-btn.prim:hover:not(:disabled) { border-color: var(--marca-oro-500); }
.gx-btn.peligro { border-color: var(--color-peligro); background: var(--color-peligro); color: #fff; }
.gx-btn.peligro-sec { border-color: var(--color-peligro); color: var(--color-peligro); }
.gx-btn-sm { min-height: 30px; padding: 0 var(--esp-3); font-size: var(--fs-xs); }
.gx-btn:disabled { opacity: .45; cursor: not-allowed; }

/* Carga y descarga · Configuración */
.gx-ops { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--esp-4); align-items: start; }
.gx-op { display: flex; flex-direction: column; gap: var(--esp-3); padding: var(--esp-4); border: 1px solid var(--color-borde); border-radius: var(--radio-md); background: var(--color-superficie); }
.gx-op.ancho { grid-column: 1 / -1; }
.gx-op.peligro { border-top: 3px solid var(--color-peligro); }
.gx-op-cab { display: flex; align-items: flex-start; gap: var(--esp-3); }
.gx-op-cab h3 { margin: 0 0 2px; font-size: var(--fs-md); font-weight: 800; color: var(--color-texto); }
.gx-op-n { display: grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--marca-marino-900); color: var(--marca-oro-500);
    font-family: var(--fuente-mono); font-size: var(--fs-sm); font-weight: 700; }
.gx-op-acc { display: flex; flex-wrap: wrap; gap: var(--esp-2); justify-content: flex-end; margin-top: auto; }
.gx-mini-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--esp-2); }
.gx-mini-kpis div { display: flex; flex-direction: column; padding: var(--esp-2) var(--esp-3); border-radius: var(--radio-sm); background: var(--color-superficie-2); }
.gx-mini-kpis b { font-family: var(--fuente-mono); font-size: var(--fs-xl); font-weight: 600; color: var(--color-texto); }
.gx-mini-kpis span { font-size: var(--fs-2xs); text-transform: uppercase; letter-spacing: .04em; color: var(--color-texto-suave); font-weight: 700; }
.gx-mini-kpis .mal b { color: var(--color-peligro); }
.gx-trabajos { display: flex; flex-direction: column; gap: var(--esp-2); }
.gx-tr { display: flex; flex-direction: column; border: 1px solid var(--color-borde); border-left: 3px solid var(--marca-oro-500); border-radius: var(--radio-sm); }
.gx-tr-cab { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--esp-2) var(--esp-3); padding: var(--esp-2) var(--esp-3); font-size: var(--fs-sm); }
.gx-tr-cab b { font-family: var(--fuente-mono); }
.gx-tr-g { display: flex; justify-content: space-between; gap: var(--esp-3); padding: 3px var(--esp-3); border-top: 1px solid var(--color-borde); font-size: var(--fs-xs); color: var(--color-texto-2); }
.gx-tr-g b { font-family: var(--fuente-mono); color: var(--color-texto); }
.gx-tr-g.aviso { color: var(--color-aviso); background: var(--color-aviso-fondo); }
.gx-guardar { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: var(--esp-1) var(--esp-4); margin: 0; font-size: var(--fs-sm); }
.gx-guardar dt { font-size: var(--fs-2xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--color-texto-suave); padding-top: 3px; }
.gx-guardar dd { margin: 0; color: var(--color-texto); overflow-wrap: anywhere; }
.gx-hecho { display: flex; align-items: center; gap: var(--esp-3); padding: var(--esp-3); border-radius: var(--radio-sm); background: var(--color-exito-fondo); }
.gx-hecho-ico { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border-radius: 50%; background: var(--color-exito); color: #fff; font-size: var(--fs-lg); font-weight: 800; }
.gx-hecho div { display: flex; flex-direction: column; font-size: var(--fs-sm); }
.gx-hecho b { color: var(--color-exito); }
.gx-lista { width: 100%; padding: var(--esp-2) var(--esp-3); border: 1px solid var(--color-borde-fuerte); border-radius: var(--radio-sm);
    background: var(--color-superficie); color: var(--color-texto); font-size: var(--fs-sm); resize: vertical; }

@media (max-width: 900px) {
    .gx-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gx-ops { grid-template-columns: 1fr; }
    .gx-fila { grid-template-columns: 76px minmax(0, 1fr) auto; }
    .gx-fila > :nth-child(2), .gx-fila > :nth-child(3), .gx-fila > :nth-child(6) { display: none; }
}
@media (max-width: 600px) {
    .gx-cab { padding: var(--esp-3); }
    .gx-tabs button { padding: var(--esp-2) var(--esp-3); }
}

/* Sin identificar: se quedan en su lote, marcados */
.gx-marca { display: inline-block; margin-left: var(--esp-2); padding: 0 8px; border-radius: var(--radio-full); background: var(--color-aviso-fondo); color: var(--color-aviso);
    font-family: var(--fuente-ui); font-size: var(--fs-2xs); font-weight: 700; white-space: nowrap; }
.gx-tt tr.sinid td { background: color-mix(in srgb, var(--color-aviso-fondo) 70%, transparent); }

/* Ventanas de las operaciones */
.gx-fondo { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: var(--esp-4);
    background: color-mix(in srgb, var(--marca-marino-900) 55%, transparent); }
.gx-ventana { display: flex; flex-direction: column; width: min(720px, 100%); max-height: calc(100vh - 2 * var(--esp-4)); overflow: hidden;
    border-radius: var(--radio-lg); background: var(--color-fondo); box-shadow: var(--sombra-lg); }
.gx-v-cab { display: flex; align-items: center; justify-content: space-between; gap: var(--esp-3); padding: var(--esp-3) var(--esp-5);
    background: var(--marca-marino-900); border-bottom: 3px solid var(--marca-oro-500); }
.gx-v-cab h2 { margin: 0; font-size: var(--fs-lg); font-weight: 800; color: #fff; }
.gx-v-cab .gx-x { color: #fff; font-size: var(--fs-lg); }
.gx-v-cuerpo { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: var(--esp-3); padding: var(--esp-4) var(--esp-5); }
.gx-v-pie { display: flex; justify-content: flex-end; gap: var(--esp-2); padding: var(--esp-3) var(--esp-5); border-top: 1px solid var(--color-borde); background: var(--color-superficie); }
.gx-conectar { display: flex; flex-direction: column; align-items: center; gap: var(--esp-2); padding: var(--esp-4); border: 1px dashed var(--color-borde-fuerte);
    border-radius: var(--radio-md); text-align: center; }
.gx-conectar p, .gx-texto { margin: 0; font-size: var(--fs-sm); color: var(--color-texto-2); }
.gx-fuentes { display: flex; gap: 4px; padding: 4px; border-radius: var(--radio-md); background: var(--color-superficie-2); }
.gx-fuentes button { flex: 1; padding: 7px 12px; border: 0; border-radius: var(--radio-sm); background: none; color: var(--color-texto-2);
    font: inherit; font-size: var(--fs-sm); font-weight: 700; cursor: pointer; }
.gx-fuentes button.activa { background: var(--color-superficie); color: var(--color-texto); box-shadow: var(--sombra-xs); }
.gx-campo { display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-xs); font-weight: 700; color: var(--color-texto-suave); }
.gx-fichero { display: flex; align-items: center; gap: var(--esp-3); padding: var(--esp-3); border: 1px dashed var(--color-borde-fuerte); border-radius: var(--radio-md);
    background: var(--color-superficie); font-size: var(--fs-sm); color: var(--color-texto-2); cursor: pointer; }
.gx-fichero input[type=file] { max-width: 230px; font-size: var(--fs-xs); }
.gx-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--esp-3); }
.gx-form label { display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-2xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--color-texto-suave); }
.gx-form input, .gx-form select { min-height: 36px; padding: 0 var(--esp-2); border: 1px solid var(--color-borde-fuerte); border-radius: var(--radio-sm);
    background: var(--color-superficie); color: var(--color-texto); font: inherit; font-size: var(--fs-sm); font-weight: 400; text-transform: none; letter-spacing: 0; }
.gx-pref { display: flex; align-items: flex-start; gap: var(--esp-3); font-size: var(--fs-sm); cursor: pointer; }
.gx-pref input { margin-top: 3px; width: 18px; height: 18px; accent-color: var(--marca-marino-900); }
.gx-pref span { display: flex; flex-direction: column; gap: 2px; }
.gx-pref small { color: var(--color-texto-suave); font-size: var(--fs-xs); }
.gx-tt td.der { text-align: right; }
@media (max-width: 760px) {
    .gx-cab { grid-template-columns: 1fr; }
    .gx-cab-der { justify-content: flex-start; }
    .gx-ops-cab { width: 100%; }
    .gx-op-btn { flex: 1; justify-content: center; padding: 0 12px; }
    .gx-fondo { padding: 0; }
    .gx-ventana { height: 100%; max-height: 100vh; border-radius: 0; }
}

/* Control lechero (Mi trabajo → Control lechero) */
.gx-fila-cl { grid-template-columns: 150px 84px 100px 70px 120px minmax(0, 1fr) 90px; cursor: default; }
.gx-fila-lote { grid-template-columns: 190px 84px 70px minmax(0, 1fr) 70px 150px 60px 150px; }
.gx-fila-lote.abierta { background: color-mix(in srgb, var(--marca-oro-500) 10%, transparent); }
.gx-fila .der { text-align: right; }
.gx-fila small { color: var(--color-texto-suave); font-size: var(--fs-2xs); }
.gx-chip.ok { background: var(--color-exito-fondo); color: var(--color-exito); }
.gx-chip.aviso { background: var(--color-aviso-fondo); color: var(--color-aviso); }
.gx-trayendo { display: flex; align-items: center; gap: var(--esp-2); padding: 6px var(--esp-4); border-bottom: 1px solid var(--color-borde); }
.gx-chip-btn { border: 0; font: inherit; font-size: var(--fs-2xs); font-weight: 700; cursor: pointer; }
.gx-faltan { display: flex; flex-wrap: wrap; align-items: center; gap: var(--esp-1) var(--esp-3); padding: 4px var(--esp-4) 6px;
    border-top: 1px dashed var(--color-borde); background: var(--color-superficie-2); font-size: var(--fs-xs); }
.gx-faltan .gx-sub { flex: 1 1 100%; }
.gx-falta { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.gx-chip.hecho { background: var(--color-exito); color: var(--color-superficie); }
.gx-fila-gan.apagada { color: var(--color-texto-suave); }
.gx-fila-gan.apagada .gx-siglas b { background: var(--color-superficie-2); color: var(--color-texto-suave); }
.gx-chip.med { background: var(--color-aviso); color: var(--color-texto); }
.gx-pref-fila { flex-direction: row !important; align-items: center !important; text-transform: none !important; letter-spacing: 0 !important; }
.gx-cl { display: flex; flex-direction: column; gap: var(--esp-4); }
.gx-form .ancho { grid-column: 1 / -1; }
.gx-form small { float: right; font-weight: 400; text-transform: none; }
.gx-datos .mal { border-color: color-mix(in srgb, var(--color-peligro) 40%, transparent); background: var(--color-peligro-fondo); color: var(--color-peligro); }
.gx-datos .mal b { color: var(--color-peligro); }
.gx-datos small { color: var(--color-texto-suave); }
.gx-numctl { display: flex; flex-wrap: wrap; gap: 4px; }
.gx-numctl button { display: inline-flex; flex-direction: column; align-items: center; min-width: 52px; padding: 4px 8px; border: 1px solid var(--color-borde);
    border-radius: var(--radio-sm); background: var(--color-superficie); color: var(--color-texto); font: inherit; cursor: pointer; }
.gx-numctl button span { font-size: var(--fs-2xs); font-weight: 700; color: var(--color-texto-suave); }
.gx-numctl button b { font-family: var(--fuente-mono); font-size: var(--fs-md); }
.gx-numctl button.neg { border-color: color-mix(in srgb, var(--color-aviso) 40%, transparent); background: var(--color-aviso-fondo); }
.gx-numctl button.neg b, .gx-numctl button.neg span { color: var(--color-aviso); }
.gx-numctl button.activa { border-color: var(--marca-marino-900); box-shadow: inset 0 -2px 0 var(--marca-oro-500); }
.gx-incid { display: flex; flex-direction: column; gap: 4px; margin: 0; padding: 0; list-style: none; }
.gx-incid li { padding: 6px var(--esp-3); border-radius: var(--radio-sm); background: var(--color-superficie-2); font-size: var(--fs-sm); color: var(--color-texto-2); }
.gx-incid li.aviso { background: var(--color-aviso-fondo); color: var(--color-aviso); font-weight: 600; }
.gx-incid li.mal { background: var(--color-peligro-fondo); color: var(--color-peligro); font-weight: 700; }
.gx-fuentes-izq { align-self: flex-start; }
.gx-fuentes-izq button { flex: none; }
.gx-fuentes b { margin-left: 4px; font-family: var(--fuente-mono); font-size: var(--fs-2xs); }
.gx-tt tr.mal td { background: color-mix(in srgb, var(--color-peligro-fondo) 70%, transparent); }
.gx-tt th.der { text-align: right; }
.gx-tt small { color: var(--color-texto-suave); }
.gx-calc { max-width: 260px; overflow: hidden; text-overflow: ellipsis; color: var(--color-texto-2); }
.gx-marca.mal { background: var(--color-peligro-fondo); color: var(--color-peligro); }
.gx-marca:first-child { margin-left: 0; }
@media (max-width: 900px) {
    .gx-fila-cl { grid-template-columns: 76px 60px minmax(0, 1fr) auto; }
    .gx-fila-cl > :nth-child(3), .gx-fila-cl > :nth-child(4), .gx-fila-cl > :nth-child(6) { display: none; }
    .gx-fila-lote { grid-template-columns: 76px 60px minmax(0, 1fr) auto; }
    .gx-fila-lote > :nth-child(2), .gx-fila-lote > :nth-child(5), .gx-fila-lote > :nth-child(6), .gx-fila-lote > :nth-child(7) { display: none; }
}
.gx-ml { width: 76px; min-height: 26px; padding: 0 6px; border: 1px solid var(--color-aviso); border-radius: var(--radio-xs);
    background: var(--color-superficie); color: var(--color-texto); font-family: var(--fuente-mono); font-size: var(--fs-xs); text-align: right; }
.gx-fila-gan { grid-template-columns: minmax(0, 1fr) 110px 40px 110px 230px 120px 150px; gap: var(--esp-2); cursor: default; }
.gx-gan { display: flex; align-items: center; gap: var(--esp-2); min-width: 0; }
.gx-gan .gx-siglas { flex: none; }
.gx-lote { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--fuente-mono); }
.gx-lote small { margin-left: 4px; color: var(--color-texto-suave); }
.gx-chip.mal { background: var(--color-peligro-fondo); color: var(--color-peligro); }
@media (max-width: 900px) {
    .gx-fila-gan { grid-template-columns: minmax(0, 1fr) 40px auto; }
    .gx-fila-gan > :nth-child(2), .gx-fila-gan > :nth-child(4), .gx-fila-gan > :nth-child(5), .gx-fila-gan > :nth-child(6) { display: none; }
}

/* ── Control lechero: declarar en un panel compacto (cabecera + 3 pasos + tabla + barra fija) ── */
.cl-cab { display: flex; flex-direction: column; gap: var(--esp-2); padding: var(--esp-2) var(--esp-3); border: 1px solid var(--color-borde);
    border-radius: var(--radio-md); background: var(--color-superficie); }
.cl-cab-l1 { display: flex; flex-wrap: wrap; align-items: center; gap: 6px var(--esp-2); }
.cl-sigla { font-family: var(--fuente-mono); font-size: var(--fs-lg); font-weight: 800; color: var(--color-texto); }
.cl-dia { font-size: var(--fs-sm); font-weight: 700; color: var(--color-texto-2); text-transform: capitalize; }
.cl-dato { display: inline-flex; align-items: baseline; gap: 4px; padding: 1px 8px; border: 1px solid var(--color-borde); border-radius: var(--radio-full);
    font-size: var(--fs-xs); color: var(--color-texto-2); white-space: nowrap; }
.cl-dato b { font-family: var(--fuente-mono); color: var(--color-texto); }
.cl-dato.aviso { border-color: color-mix(in srgb, var(--color-aviso) 40%, transparent); background: var(--color-aviso-fondo); color: var(--color-aviso); }
.cl-estado { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; color: var(--color-texto-suave); font-size: var(--fs-xs); min-height: 20px; }
.cl-seg { display: inline-flex; padding: 2px; border-radius: var(--radio-full); background: var(--color-superficie-2); }
.cl-seg button { padding: 1px 10px; border: 0; border-radius: var(--radio-full); background: none; font: inherit; font-size: var(--fs-xs); font-weight: 700; color: var(--color-texto-2); cursor: pointer; }
.cl-seg button.activa { background: var(--marca-marino-700); color: #fff; }
.cl-seg b { font-family: var(--fuente-mono); }
.cl-link { padding: 0 4px; border: 0; background: none; font: inherit; font-size: var(--fs-xs); font-weight: 700; color: var(--color-acento-texto); cursor: pointer; text-decoration: underline; }
.cl-link.mal { color: var(--color-peligro); }
.cl-campos { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--esp-2); }
.cl-campos label { display: flex; flex-direction: column; gap: 2px; font-size: var(--fs-2xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--color-texto-suave); }
.cl-campos label small { font-weight: 400; text-transform: none; }
.cl-campos input, .cl-campos select { min-height: 30px; padding: 0 6px; border: 1px solid var(--color-borde-fuerte); border-radius: var(--radio-sm);
    background: var(--color-superficie); color: var(--color-texto); font: inherit; font-size: var(--fs-sm); font-weight: 400; text-transform: none; letter-spacing: 0; width: auto; }
.cl-campos input.c3 { width: 5ch; }
.cl-campos input.c4 { width: 6ch; }
.cl-campos input.c5 { width: 8ch; }
.cl-campos input[type=number] { font-family: var(--fuente-mono); text-align: right; }
.cl-par { display: inline-flex; align-items: center; gap: 4px; }
.cl-par i { font-style: normal; color: var(--color-texto-suave); }
.cl-obs { flex: 1 1 200px; }
.cl-obs input { width: 100%; }
.cl-lote { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.cl-lote li { padding: 2px 10px; border-radius: var(--radio-sm); font-size: var(--fs-xs); font-weight: 600; background: var(--color-superficie-2); color: var(--color-texto-2); }
.cl-lote li.mal { background: var(--color-peligro-fondo); color: var(--color-peligro); }
.cl-lote li.aviso { background: var(--color-aviso-fondo); color: var(--color-aviso); }

.cl-rev { display: flex; flex-direction: column; border: 1px solid var(--color-borde); border-radius: var(--radio-md); background: var(--color-superficie); overflow: hidden; }
.cl-rev-tabs { display: flex; flex-wrap: wrap; align-items: stretch; gap: 0 2px; padding: 0 var(--esp-2); border-bottom: 1px solid var(--color-borde); background: var(--color-superficie-2); }
.cl-rev-tabs button { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px 6px; border: 0; border-bottom: 3px solid transparent; background: none;
    font: inherit; font-size: var(--fs-sm); font-weight: 700; color: var(--color-texto-2); cursor: pointer; }
.cl-rev-tabs button:hover { color: var(--color-texto); }
.cl-rev-tabs button.activa { border-bottom-color: var(--marca-marino-700); background: var(--color-superficie); color: var(--color-texto); }
.cl-rev-tabs button i { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--gris-400); color: #fff; font-style: normal; font-size: var(--fs-2xs); font-weight: 800; }
.cl-rev-tabs button.pend i { background: var(--color-aviso); }
.cl-rev-tabs button.mal i { background: var(--color-peligro); }
.cl-rev-tabs button.info i { background: var(--color-info); }
.cl-rev-tabs button.ok i { background: var(--color-exito); }
.cl-rev-tabs button b { min-width: 20px; padding: 0 6px; border-radius: var(--radio-full); background: var(--color-superficie); font-family: var(--fuente-mono); font-size: var(--fs-2xs); text-align: center; }
.cl-rev-tabs button.activa b { background: var(--color-superficie-2); }
.cl-rev-tabs button.pend b { background: var(--color-aviso-fondo); color: var(--color-aviso); }
.cl-rev-tabs button.mal b { background: var(--color-peligro-fondo); color: var(--color-peligro); }
.cl-rev-res { margin-left: auto; align-self: center; font-size: var(--fs-xs); color: var(--color-texto-2); }
.cl-rev-res b { font-family: var(--fuente-mono); color: var(--color-texto); }
.cl-rev-barra { display: flex; flex-wrap: wrap; align-items: center; gap: var(--esp-2); padding: 6px var(--esp-3); border-bottom: 1px solid var(--color-borde); font-size: var(--fs-xs); color: var(--color-texto-2); }
.cl-rev-barra .cl-confirma { margin-left: auto; padding: 0; border: 0; }
.cl-rev-nota { padding: 5px var(--esp-3); border-bottom: 1px solid var(--color-borde); font-size: var(--fs-xs); }
.cl-rev-nota.mal { background: var(--color-peligro-fondo); color: var(--color-peligro); }
.cl-filtros { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.cl-filtros button { display: inline-flex; align-items: baseline; gap: 4px; padding: 1px 10px; border: 1px solid var(--color-borde); border-radius: var(--radio-full); background: var(--color-superficie);
    font: inherit; font-size: var(--fs-xs); font-weight: 600; color: var(--color-texto-2); cursor: pointer; }
.cl-filtros button b { font-family: var(--fuente-mono); }
.cl-filtros button.mal { border-color: color-mix(in srgb, var(--color-peligro) 40%, transparent); color: var(--color-peligro); }
.cl-filtros button.activa { border-color: var(--marca-marino-700); background: var(--marca-marino-700); color: #fff; }
.cl-rev .gx-tt { max-height: 52vh; border: 0; border-radius: 0; }
.cl-rev .gx-ml { width: 9ch; min-width: 0; }
.cl-rev tr.ok td { opacity: .55; }
.cl-acc-col { white-space: nowrap; }
.cl-acc-col > * { margin-left: 4px; vertical-align: middle; }
.cl-acc-des { display: inline-flex; align-items: center; gap: 3px; font-size: var(--fs-2xs); color: var(--color-texto-suave); }
.cl-acc-nota { font-size: var(--fs-2xs); font-weight: 700; color: var(--color-peligro); }
.cl-abrir { width: 18px; padding: 0; border: 0; background: none; font: inherit; color: var(--color-texto-suave); cursor: pointer; }
.cl-marca-btn { border: 0; font: inherit; cursor: pointer; text-decoration: underline dotted; }
.cl-rev tr.abierta td { background: color-mix(in srgb, var(--marca-oro-500) 10%, transparent); }
.cl-hist-fila td { padding: 0 !important; background: var(--color-fondo); }
.cl-hist { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 4px; padding: 6px var(--esp-3) 8px 34px; }
.cl-hist-tit { align-self: center; margin-right: var(--esp-2); font-size: var(--fs-xs); font-weight: 700; color: var(--color-texto-2); }
.cl-hist-c { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; min-width: 64px; height: 76px; padding: 2px 4px;
    border: 1px solid var(--color-borde); border-radius: var(--radio-sm); background: var(--color-superficie); font-size: var(--fs-2xs); line-height: 1.15; overflow: hidden; }
.cl-hist-c i { position: absolute; left: 0; right: 0; bottom: 0; height: var(--alto); background: var(--color-info-fondo); }
.cl-hist-c > :not(i) { position: relative; }
.cl-hist-c small { color: var(--color-texto-suave); }
.cl-hist-c .mono { font-weight: 700; color: var(--color-texto); }
.cl-hist-c.neg { opacity: .65; }
.cl-hist-c.hoy { border-color: var(--marca-marino-700); }
.cl-hist-c.hoy i { background: color-mix(in srgb, var(--marca-oro-500) 35%, transparent); }
.cl-hist-nota { align-self: center; margin-left: var(--esp-2); font-size: var(--fs-2xs); color: var(--color-texto-suave); }
.cl-rev-num { display: grid; grid-template-columns: minmax(260px, 340px) minmax(0, 1fr); align-items: start; }
.cl-rev-num > .cl-res { border-right: 1px solid var(--color-borde); }
.cl-rev-num-filas { min-width: 0; }
.cl-confirma { display: flex; align-items: center; gap: 6px; font-size: var(--fs-xs); font-weight: 700; color: var(--color-texto); }
.cl-res { width: 100%; border-collapse: collapse; font-size: var(--fs-xs); }
.cl-res td { padding: 3px 6px; border-top: 1px solid var(--color-borde); }
.cl-res td:first-child { padding-left: var(--esp-3); width: 1%; white-space: nowrap; }
.cl-res tr.neg td { color: var(--color-texto-suave); }
.cl-res tr.activa td { background: color-mix(in srgb, var(--marca-oro-500) 14%, transparent); }
.cl-res td.der { white-space: nowrap; }
.cl-res-que { color: var(--color-texto-2); }

.cl-t td, .cl-t th { padding-top: 2px; padding-bottom: 2px; }
.cl-pie { position: sticky; bottom: 0; z-index: 3; display: flex; flex-wrap: wrap; align-items: center; gap: var(--esp-3); padding: 8px var(--esp-3);
    border: 1px solid var(--color-borde); border-radius: var(--radio-md); background: var(--color-superficie); box-shadow: var(--sombra-md); font-size: var(--fs-sm); }
.cl-pie b { font-family: var(--fuente-mono); }
.cl-pie-falta { margin-left: auto; font-size: var(--fs-xs); color: var(--color-texto-suave); }
button.cl-pie-falta { color: var(--color-aviso); }
.cl-pie-ok { color: var(--color-exito); font-weight: 700; }
.cl-motivo { width: 16ch; min-height: 28px; padding: 0 6px; border: 1px solid var(--color-borde-fuerte); border-radius: var(--radio-sm); font: inherit; font-size: var(--fs-xs); }
.gx-fila-inc { grid-template-columns: 80px 120px 150px 60px minmax(0, 1fr) 190px 210px; }
@media (max-width: 1100px) { .cl-rev-num { grid-template-columns: 1fr; } .cl-rev-num > .cl-res { border-right: 0; border-bottom: 1px solid var(--color-borde); } }
@media (max-width: 760px) {
    .gx-fila-inc { grid-template-columns: 1fr 1fr; }
    .cl-estado { margin-left: 0; }
}

/* ── Control lechero: plan (semanas y calendario) ── */
.pl-barra { align-items: center; }
.pl-barra .gx-datos .mal { border-color: color-mix(in srgb, var(--color-peligro) 40%, transparent); background: var(--color-peligro-fondo); color: var(--color-peligro); }
.pl-barra .gx-datos .mal b { color: var(--color-peligro); }
.pl-sem { display: flex; align-items: center; gap: var(--esp-2); padding: 6px var(--esp-4); border-top: 1px solid var(--color-borde); background: var(--color-superficie-2);
    font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .05em; color: var(--color-texto-2); }
.pl-sem span { font-family: var(--fuente-mono); }
.pl-sem.mal { color: var(--color-peligro); background: var(--color-peligro-fondo); }
.pl-sem.aviso { color: var(--color-aviso); background: var(--color-aviso-fondo); }
.pl-fila { display: grid; grid-template-columns: 70px 120px minmax(160px, 1fr) minmax(0, 1.6fr); align-items: center; gap: var(--esp-3); width: 100%;
    padding: 6px var(--esp-4); border: 0; border-top: 1px solid var(--color-borde); background: none; font: inherit; text-align: left; color: var(--color-texto); cursor: pointer; }
.pl-fila:hover, .pl-fila.abierta { background: var(--color-superficie-2); }
.pl-lim { display: flex; flex-direction: column; line-height: 1.15; }
.pl-lim b { font-family: var(--fuente-mono); font-size: var(--fs-sm); text-transform: capitalize; }
.pl-lim small { font-size: var(--fs-2xs); color: var(--color-texto-suave); }
.pl-lim.mal b, .pl-lim.mal small { color: var(--color-peligro); }
.pl-lim.aviso b { color: var(--color-aviso); }
.pl-motivo { display: flex; flex-direction: column; min-width: 0; line-height: 1.2; }
.pl-motivo small { font-size: var(--fs-2xs); color: var(--color-texto-suave); }
.pl-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.pl-chip { display: inline-flex; align-items: baseline; gap: 4px; padding: 1px 8px; border-radius: var(--radio-full); background: var(--color-superficie-2);
    color: var(--color-texto-2); font-size: var(--fs-2xs); font-weight: 700; white-space: nowrap; }
.pl-chip b { font-family: var(--fuente-mono); }
.pl-chip i { font-style: normal; font-weight: 600; opacity: .85; }
.pl-chip.ventana { background: var(--color-exito-fondo); color: var(--color-exito); }
.pl-chip.vence { background: var(--color-aviso-fondo); color: var(--color-aviso); }
.pl-chip.pasado, .pl-chip.partir { background: var(--color-peligro-fondo); color: var(--color-peligro); }
.pl-chip.c1 { background: var(--color-info-fondo); color: var(--color-info); }
.pl-chip.lector { background: color-mix(in srgb, var(--marca-oro-500) 18%, transparent); color: #7c5a00; }
.pl-chip.cumplido { opacity: .7; }
.pl-chip.hecho { background: var(--color-exito-fondo); color: var(--color-exito); }
.pl-det { display: flex; flex-direction: column; gap: var(--esp-2); padding: var(--esp-2) var(--esp-4) var(--esp-3); border-top: 1px solid var(--color-borde); background: var(--color-fondo); }
.pl-det-cab { display: flex; flex-wrap: wrap; align-items: center; gap: var(--esp-2); font-size: var(--fs-sm); }
.pl-det-cab > b { font-family: var(--fuente-mono); font-size: var(--fs-md); }
.pl-t { width: 100%; border-collapse: collapse; border: 1px solid var(--color-borde); border-radius: var(--radio-sm); background: var(--color-superficie); font-size: var(--fs-xs); }
.pl-t th { padding: 4px 8px; text-align: left; font-size: var(--fs-2xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--color-texto-suave); background: var(--color-superficie-2); }
.pl-t td { padding: 3px 8px; border-top: 1px solid var(--color-borde); }
.pl-t .der { text-align: right; }
.pl-t tr.gris td { color: var(--color-texto-suave); }
.pl-fin { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-xs); }
.pl-lector { padding: 6px 10px; border-radius: var(--radio-sm); background: color-mix(in srgb, var(--marca-oro-500) 14%, transparent); font-size: var(--fs-xs); color: var(--color-texto-2); }
.pl-mes { display: flex; align-items: center; gap: var(--esp-2); padding: var(--esp-2) var(--esp-4); }
.pl-mes > b { min-width: 150px; text-align: center; text-transform: capitalize; }
.pl-leyenda { display: inline-flex; align-items: center; gap: 4px 10px; margin-left: auto; flex-wrap: wrap; font-size: var(--fs-2xs); color: var(--color-texto-suave); }
.pl-leyenda i { display: inline-block; width: 10px; height: 10px; margin-right: 3px; border-radius: 3px; vertical-align: -1px; }
.pl-leyenda i.pasado, .pl-marca.pasado { background: var(--color-peligro-fondo); color: var(--color-peligro); }
.pl-leyenda i.vence, .pl-marca.vence { background: var(--color-aviso-fondo); color: var(--color-aviso); }
.pl-leyenda i.c1, .pl-marca.c1 { background: var(--color-info-fondo); color: var(--color-info); }
.pl-leyenda i.hecho, .pl-marca.hecho { background: var(--color-exito-fondo); color: var(--color-exito); }
.pl-cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-top: 1px solid var(--color-borde); }
.pl-cal-cab { padding: 4px 6px; font-size: var(--fs-2xs); font-weight: 700; text-transform: uppercase; color: var(--color-texto-suave); background: var(--color-superficie-2); }
.pl-dia { display: flex; flex-direction: column; gap: 2px; min-height: 92px; padding: 3px; border-top: 1px solid var(--color-borde); border-left: 1px solid var(--color-borde); }
.pl-dia:nth-child(7n + 1) { border-left: 0; }
.pl-dia.fuera { background: var(--color-superficie-2); opacity: .55; }
.pl-dia.finde { background: color-mix(in srgb, var(--color-superficie-2) 60%, transparent); }
.pl-dia.hoy { box-shadow: inset 0 0 0 2px var(--marca-oro-500); }
.pl-dia-n { font-family: var(--fuente-mono); font-size: var(--fs-2xs); font-weight: 700; color: var(--color-texto-suave); }
.pl-marca { display: flex; align-items: baseline; gap: 4px; padding: 0 5px; border: 0; border-radius: var(--radio-xs); font: inherit; font-family: var(--fuente-mono);
    font-size: var(--fs-2xs); font-weight: 700; text-align: left; cursor: pointer; overflow: hidden; white-space: nowrap; }
.pl-marca small { font-weight: 400; }
.pl-mas { font-size: var(--fs-2xs); color: var(--color-texto-suave); }
@media (max-width: 760px) {
    .pl-fila { grid-template-columns: 60px 1fr; }
    .pl-motivo, .pl-chips { grid-column: 1 / -1; }
    .pl-dia { min-height: 60px; }
    .pl-marca small { display: none; }
}
.gx-fila-inc { grid-template-columns: 84px 210px 190px 60px minmax(0, 1fr) 200px auto; cursor: default; }
@media (max-width: 900px) { .gx-fila-inc { grid-template-columns: 60px minmax(0, 1fr) auto; } .gx-fila-inc > :nth-child(3), .gx-fila-inc > :nth-child(4), .gx-fila-inc > :nth-child(5), .gx-fila-inc > :nth-child(6) { display: none; } }
