.container {
  clear: both;
}

@media (min-width: 768px) {
  .dialogo-editar-campana .modal-body { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 16px; }
  .dialogo-editar-campana .modal-body > .row,
  .dialogo-editar-campana .modal-body > .grupo-tarifas-campana,
  .dialogo-editar-campana .modal-body > .grupo-coste-personal-campana,
  .dialogo-editar-campana .modal-body > small,
  .dialogo-editar-campana .modal-body > .alert { grid-column: 1 / -1; }
  .dialogo-editar-campana .modal-body > .mb-3 { margin-bottom: 0 !important; }
  .dialogo-editar-campana .modal-body > .mt-3 { margin-top: 0 !important; }
}
@media (min-width: 992px) {
  .dialogo-campana { max-width: 960px; }
  .dialogo-campana .grupo-tarifas-campana .row > div { flex: 0 0 20%; width: 20%; }
}

.evolucion-finanzas { background: #fff; border: 1px solid #dfe5e9; border-radius: 16px; padding: 24px; box-shadow: 0 5px 22px rgba(31,49,66,.05); }
.evolucion-cabecera { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.evolucion-cabecera h3 { font-size: 1.25rem; margin: 0 0 6px; color: #253f50; }
.evolucion-cabecera p { font-size: .8rem; color: #74818b; }
.evolucion-filtros { display: flex; flex-wrap: wrap; gap: 14px; align-items: end; padding: 0 0 16px; }
.barra-sueldos-finanzas { display: flex; align-items: center; gap: 16px; }
.barra-sueldos-finanzas > .alert { flex: 0 1 auto; min-width: 0; padding: 10px 14px; font-size: .85rem; }
@media (max-width: 575px) { .barra-sueldos-finanzas { flex-wrap: wrap; } }
.evolucion-filtros label { font-size: .8rem; font-weight: 600; }
.evolucion-filtros input, .evolucion-filtros select { margin-top: 5px; }
.evolucion-linea { padding-bottom: 7px; }
.evolucion-categorias { padding: 12px 0; border-top: 1px solid #edf0f2; border-bottom: 1px solid #edf0f2; font-size: .82rem; }
.evolucion-opciones { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,2fr); gap: 24px; padding: 10px 0; }
.evolucion-grupo { min-width: 0; margin: 0; padding: 0; }
.evolucion-grupo + .evolucion-grupo { border-left: 1px solid #e5e9ed; padding-left: 24px; }
.evolucion-grupo legend { float: none; font-size: .85rem; font-weight: 700; color: #53616d; margin-bottom: 12px; }
.evolucion-lista-categorias { display: grid; grid-template-columns: repeat(auto-fit,minmax(180px,1fr)); gap: 12px 16px; }
@media(max-width:767px) { .evolucion-opciones { grid-template-columns: 1fr; } .evolucion-grupo + .evolucion-grupo { border-left: 0; border-top: 1px solid #e5e9ed; padding: 16px 0 0; } }
.evolucion-opciones label { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.evolucion-totales { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; margin: 20px 0; }
.evolucion-total { padding: 14px 16px; border-radius: 10px; background: #f3f6f8; }
.evolucion-total span { display: block; font-size: .78rem; color: #64717d; margin-bottom: 4px; }
.evolucion-total strong { font-size: clamp(.9rem,1.6vw,1.3rem); overflow-wrap: anywhere; }
.evolucion-total.ingresos { background: #edf7f3; color: #167761; }
.evolucion-total.costos { background: #fcf2ed; color: #a45c35; }
.evolucion-total.resultado { color: #304d78; }
.evolucion-leyenda { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: .74rem; margin-bottom: 12px; }
.evolucion-leyenda > span { display: inline-flex; gap: 6px; align-items: center; }
.evolucion-punto { width: 10px; height: 10px; border-radius: 3px; display: inline-block; flex-shrink: 0; }
.evolucion-grafico { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.evolucion-grafico svg { display: block; width: 100%; }
.evolucion-grafico svg text { font-size: 10px; }
.evolucion-grafico rect:focus, .evolucion-grafico circle:focus { outline: 2px solid #263d50; }
@media(max-width:575px) { .evolucion-finanzas { padding: 14px; } .evolucion-totales { grid-template-columns: 1fr; gap: 8px; } .evolucion-total { display: flex; justify-content: space-between; gap: 10px; } .evolucion-total strong { white-space: nowrap; } .evolucion-cabecera { flex-wrap: wrap; } }
.navegacion-campos { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; padding-bottom: 12px; border-bottom: 1px solid #dce3dd; }
.navegacion-campos a,
.navegacion-campos .nav-link { display: block; padding: 10px 16px; border-radius: 8px; color: #42624d; text-decoration: none; border: 1px solid transparent; }
.navegacion-campos a:hover,
.navegacion-campos .nav-link:hover { background: #f2f5f2; color: #28533a; }
.navegacion-campos a.activo,
.navegacion-campos .nav-link.active { background: #eaf4ee; border-color: #c8dfd0; color: #17633d; font-weight: 700; }
.navegacion-campos a:focus-visible,
.navegacion-campos .nav-link:focus-visible { outline: 2px solid #198754; outline-offset: 2px; }
.navegacion-finanzas { border-bottom-color: #dedfe1; }
.navegacion-finanzas .nav-link { color: #565b61; }
.navegacion-finanzas .nav-link:hover { background: #f5f5f6; color: #25282c; }
.navegacion-finanzas .nav-link.active { background: #eceef0; border-color: #d1d5da; color: #25282c; }
.navegacion-finanzas .nav-link:focus-visible { outline-color: #727981; }
.navegacion-subfinanzas .nav-link { font-size: .9rem; }
.cabecera-contenido-finanzas { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.detalle-campo-con-pestanas { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; align-items: start; margin-top: 32px; }
.navegacion-campo-detalle { flex-direction: row; margin: 0; padding: 0 0 12px; border-bottom: 1px solid #dce3dd; }
.navegacion-campo-detalle .nav-link { width: auto; text-align: center; white-space: nowrap; }
.contenido-campo-detalle { min-width: 0; }
.contenido-campo-detalle > .tab-pane > .mt-5:first-child { margin-top: 0 !important; }
.ayuda-campo { position: relative; max-width: 100%; }
.ayuda-superficie h4 { font-size: 1.3rem; }
.ayuda-campo-boton { display: inline-flex; align-items: center; justify-content: center; width: 19px; height: 19px; margin-left: 7px; padding: 0; vertical-align: middle; border: 1px solid #aebec9; border-radius: 50%; background: #fff; color: #586e7d; font: 600 12px/1 Georgia, serif; cursor: help; }
.ayuda-campo-boton:hover { background: #e9f0f4; color: #354954; }
.ayuda-campo-boton:focus-visible { outline: 2px solid #8d9eab; outline-offset: 3px; }
.ayuda-icono-relleno { color: #8d9eab; border: 0; background: transparent; }
.ayuda-icono-relleno:focus-visible { outline-color: currentColor; }
.ayuda-operacion-boton { color: var(--verde-2-borde); }
.ayuda-operacion-boton:hover { color: var(--verde-2-borde-hover); background: var(--verde-2-hover); }
.ayuda-icono-relleno > svg { display: block; flex-shrink: 0; }
.ayuda-campo-bocadillo { position: absolute; top: 100%; left: 0; z-index: 10; width: 360px; max-width: calc(100vw - 32px); padding: 12px 14px; border: 1px solid #dbe5eb; border-radius: 8px; background: #fff; color: #465766; box-shadow: 0 4px 16px rgb(43 64 79 / 14%); font-size: .82rem; font-weight: 400; line-height: 1.55; }
.barra-operaciones-campana { flex-wrap: wrap; gap: 12px; }
.barra-operaciones-campana > div:first-child { min-width: 0; }
.ayuda-operacion > button { flex-shrink: 0; }
.ayuda-derecha > .ayuda-campo-bocadillo { top: 50%; left: calc(100% + 10px); transform: translateY(-50%); }
.ayuda-derecha > .ayuda-campo-bocadillo::before { content: ''; position: absolute; top: 0; right: 100%; width: 10px; height: 100%; }
.ayuda-derecha[data-posicion-ayuda="arriba"] > .ayuda-campo-bocadillo::before { top: 100%; right: 0; width: 100%; height: 10px; }
.informacion-productiva { margin-top: 0; border: 1px solid #dce3dd; border-radius: 12px; background: #fff; overflow: hidden; }
.informacion-productiva-cabecera { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 16px; background: #f2f5f2; border-bottom: 1px solid #dce3dd; }
.informacion-productiva-cabecera h3 { margin: 0; font-size: 1.15rem; color: #334e3c; }
.informacion-productiva-etiqueta { color: #66736a; font-size: .82rem; }
.tabla-productiva thead th { background: #f6f8f6; color: #46594b; border-bottom: 2px solid #dce3dd; }
.tabla-productiva thead small { font-size: .75rem; font-weight: normal; color: #6a766d; }
.tabla-productiva tbody td { padding: 10px 8px; border-color: #e8ece9; }
.tabla-productiva tbody tr:hover { background: #f7faf7; }
.tabla-productiva tfoot th { background: #edf3ee; color: #334e3c; padding: 12px 8px; }
.registro-lluvias summary { cursor: pointer; }
.detalle-lluvias { padding: 0 16px 16px; }
.detalle-lluvias:not([open]) { padding-bottom: 0; }
.detalle-lluvias > summary { margin: 0 -16px; padding: 16px; background: #f2f5f2; color: #334e3c; }
.detalle-lluvias[open] > summary { border-bottom: 1px solid #dce3dd; }
.lluvia-indicador { background: #edf3ee; border-radius: 8px; padding: 16px; height: 100%; }
.lluvia-indicador strong, .lluvia-indicador small { display: block; }
.lluvia-indicador strong { font-size: 1.05rem; margin: 4px 0; color: #245b49; }
.lluvia-indicador small { font-size: .75rem; }
.lluvia-totales { display: flex; flex-wrap: wrap; gap: 12px; }
.lluvia-totales .lluvia-indicador { flex: 1 1 220px; padding: 12px 16px; }
.lluvia-panel { padding: 20px; }
.lluvia-grafico { overflow-x: auto; max-width: 100%; padding: 12px 0; }
.lluvia-grafico svg { display: block; max-width: none; }
.lluvia-leyenda { display: flex; flex-wrap: wrap; gap: 20px; font-size: .8rem; }
.lluvia-leyenda i { display: inline-block; width: 9px; height: 9px; border-radius: 2px; margin-right: 6px; }
.lluvia-sin-datos { padding: 70px 18px; text-align: center; background: #f8faf9; color: #69766f; border-radius: 6px; font-size: .85rem; }
.lluvia-mediciones { max-height: 280px; overflow: auto; }
.lluvia-enlace { color: #326854; text-decoration: none; }
.tabla-productiva tfoot th .rinde-promedio-productivo { font-size: inherit; font-weight: inherit; line-height: inherit; }
.enlace-campo-productivo, .enlace-campo-productivo:visited { display: inline-block; color: #385d44; font-size: inherit; font-weight: 700; text-decoration: none; padding: 3px 0; }
.enlace-campo-productivo:hover { color: #23472f; text-decoration: none; }
.enlace-campo-productivo:focus-visible { outline: 2px solid #385d44; outline-offset: 3px; border-radius: 2px; }
.silo-bolsa-campo-resumen { display: flex; align-items: center; gap: 10px; width: 100%; padding: 6px 0; text-align: left; }
.silo-bolsa-campo-texto { min-width: 0; overflow-wrap: anywhere; }
.silo-bolsa-campo-texto strong { display: block; font-size: .9rem; }
.silo-bolsa-campo-texto div, .silo-bolsa-campo-texto span { font-size: .86rem; }

/* Nueva disposicion compacta de las campanas y del silo bolsa en la portada. */
.campos-cereal-portada .campana-activa-portada {
    display: grid;
    grid-template-columns: 74px 64px minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    width: 100%;
    margin: 0;
    padding: 10px 4px;
    border: 0;
    border-bottom: 1px solid #e5e7e2;
    border-radius: 0;
    text-align: left;
}

.campos-cereal-portada .bloque-campanas-campo-portada {
    border-bottom: 1px solid #e5e7e2;
    padding-bottom: 0;
}

.campos-cereal-portada .campana-activa-portada:last-child {
    border-bottom: 0;
}

.campos-cereal-portada .nombre-campana-portada {
    white-space: nowrap;
}

.campos-cereal-portada .campana-activa-portada .tipo-grano-campana {
    margin: 0;
    justify-content: flex-start;
    color: #555;
    white-space: nowrap;
}

.campos-cereal-portada .operacion-campana-portada {
    display: inline-block;
    justify-self: center;
    width: max-content;
    max-width: 100%;
    padding: 3px 9px;
    border: 1px solid #8ba773;
    border-radius: 7px;
    color: #42652f;
    font-size: 0.82rem;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
    white-space: nowrap;
}

.campos-cereal-portada .operacion-movimiento-suelo-portada {
    padding-right: 6px;
    padding-left: 6px;
    font-size: 0.68rem;
}

.campos-cereal-portada .avance-campana-portada,
.campos-cereal-portada .sin-operacion-campana-portada {
    color: #666;
    font-size: 0.86rem;
    white-space: nowrap;
}

.campos-cereal-portada .avance-campana-portada {
    justify-self: end;
    text-align: right;
}

.campos-cereal-portada .sin-operacion-campana-portada {
    grid-column: 3 / 5;
    justify-self: end;
    text-align: right;
}

.campos-cereal-portada .campana-sin-operacion-portada {
    grid-template-columns: minmax(100px, auto) minmax(72px, auto) 1fr;
}

.campos-cereal-portada .campana-sin-operacion-portada .sin-operacion-campana-portada {
    grid-column: 3;
}

.campos-cereal-portada .silo-bolsa-campo-portada {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 13px;
    min-height: 64px;
    padding: 11px 4px 0 !important;
    border-top: 0;
    text-align: left !important;
}

.campos-cereal-portada .silo-bolsa-campo-vacio {
    min-height: 38px;
    padding-top: 11px !important;
}

.resumen-silo-bolsa-campo-portada {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0 4px;
    font-size: 0.94rem;
}

/* Bolsas por lote: dos columnas; solo tres bolsas comparten una fila. */
.campos-cereal-portada .resumen-silo-bolsa-campo-portada {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 8px 12px;
    width: 100%;
}

.campos-cereal-portada .silo-bolsa-campo-resumen {
    min-width: 0;
    gap: 8px;
}

.campos-cereal-portada .silo-bolsa-campo-resumen .visual-silo-bolsa-planta {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
}

.campos-cereal-portada .silo-bolsa-campo-resumen .visual-silo-bolsa-planta img {
    width: 42px;
    height: 34px;
}

.campos-cereal-portada .cantidad-silos-0,
.campos-cereal-portada .cantidad-silos-1 {
    grid-template-columns: minmax(0, 190px);
    justify-content: center;
}

.campos-cereal-portada .cantidad-silos-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
}

.campos-cereal-portada .cantidad-silos-3 .silo-bolsa-campo-resumen {
    gap: 4px;
}

.campos-cereal-portada .cantidad-silos-3 .silo-bolsa-campo-resumen .visual-silo-bolsa-planta {
    flex-basis: 32px;
    width: 32px;
    height: 36px;
}

.campos-cereal-portada .cantidad-silos-3 .silo-bolsa-campo-resumen .visual-silo-bolsa-planta img {
    width: 31px;
    height: 27px;
}

.campos-cereal-portada .cantidad-silos-3 .silo-bolsa-campo-texto strong {
    font-size: 0.72rem;
    line-height: 1.15;
}

.campos-cereal-portada .cantidad-silos-3 .silo-bolsa-campo-texto div,
.campos-cereal-portada .cantidad-silos-3 .silo-bolsa-campo-texto span {
    font-size: 0.7rem;
    line-height: 1.2;
}

@media (max-width: 575.98px) {
    .campos-cereal-portada .bloque-campanas-campo-portada {
        overflow-x: visible;
    }

    .campos-cereal-portada .campana-activa-portada {
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-rows: auto auto;
        gap: 7px 12px;
        min-width: 0;
        padding: 10px 4px;
    }

    .campos-cereal-portada .nombre-campana-portada {
        grid-column: 1;
        grid-row: 1;
    }

    .campos-cereal-portada .campana-activa-portada .tipo-grano-campana {
        grid-column: 2;
        grid-row: 1;
        justify-self: end;
    }

    .campos-cereal-portada .operacion-campana-portada {
        grid-column: 1;
        grid-row: 2;
        justify-self: start;
        max-width: 100%;
    }

    .campos-cereal-portada .avance-campana-portada {
        grid-column: 2;
        grid-row: 2;
    }

    .campos-cereal-portada .campana-sin-operacion-portada {
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .campos-cereal-portada .campana-sin-operacion-portada .sin-operacion-campana-portada {
        grid-column: 1 / 3;
        grid-row: 2;
        justify-self: end;
    }
}

.container-fluid {
  clear: both;
}

.row {
  margin-left: 0px;
  margin-right: 0px;
}

* {
  font-family: 'Poppins', sans-serif;
  font-size: 14px;
  /* 1em; */
}

/* Equivalentes a los h1, h2, ... */

p.p1 {
  clear: both;
  width: 100%;
  margin-top: 15px;
  margin-bottom: 15px;
  padding: 5px;
  background: #0000AA;
  color: #FFFFFF;
}

p.p2 {
  clear: both;
  padding-top: 3px;
  padding-bottom: 3px;
  padding-left: 5px;
  padding-right: 5px;
  background: #FF5C00;
  color: #FFFFFF;
  text-align: center;
}

p.p3 {
  clear: both;
  padding-top: 3px;
  padding-bottom: 3px;
  padding-left: 5px;
  padding-right: 5px;
  background: #AAAAAA;
  color: #FFFFFF;
  text-align: center;
}

p.p4 {
  clear: both;
  padding-top: 3px;
  padding-bottom: 3px;
  padding-left: 5px;
  padding-right: 5px;
  background: #AD0505;
  color: #FFFFFF;
  text-align: center;
}


p.grupoGrado {
  clear: both;
  padding-top: 3px;
  padding-bottom: 3px;
  padding-left: 5px;
  padding-right: 5px;
  background: #DDDDDD;
  border: 1px solid #AAAAAA;
  text-align: center;
}

p.mensajeAcceso {
  margin-top: 10px;
  text-align: center;
  background-color: #DDDDDD;
}


.logout {
  padding-top: 10px;
  padding-bottom: 10px;
  background-color: #DDDDDD;
}

.cabecera {
  padding-top: 10px;
  padding-bottom: 10px;
  background-color: #CCCCCC;
  color: #FFFFFF;
}


.cabecera_top {
  padding-top: 6px;
  padding-bottom: 6px;
  background-color: transparent;
  background-image: linear-gradient(
    to right,
    rgb(173 171 168 / 0%) 0%,
    rgb(173 171 168 / 0%) 20%,
    #ADABA8 100%
  );
 
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}


.pie {
  margin-top: 0;
  padding: 14px 25px;
  background-color: #ADABA8;
  background-image: linear-gradient(to right, #ADABA8 0%, #FAFBF9 80%, #FAFBF9 100%);
  font-size: 0.8em;
 /* url("../img/GanziMizesombreado.png") */
}

img.imgCabecera {
  display: block;
  height: 180px;
  padding: 0;
  /* Compensa el margen transparente desigual del archivo original. */
  transform: translateY(1.5%);
}

img.imgLogoCabecera {
  height: 240px;
  padding: 10px;
}

img.imgOpcion {
  width: 200px;
}

img.imgPie {
  display: block;
  height: 90px;
  width: auto;
  margin: 0 auto;
  transform: translateY(2%);
}

img.imgAyuda {
  width: 50%;
  margin: 5px;
}

.separacionSuperior {
  margin-top: 15px;
}

.separacionInferior {
  margin-bottom: 15px;
}

.separadorInferiorGrande {
  margin-bottom: 30px;
}

.linea-separador {
  clear: both;
  width: 100%;
  margin-top: 10px;
  margin-bottom: 10px;
  padding: 10px;
  border-top: 1px solid #777777;
}

.alineaDerecha {
  float: right;
}

.center-block {
  float: none;
  text-align: center;
}

.right-block {
  float: right;
}

.marcoRedondeado {
  margin: 4px;
  padding: 10px;
  border: 1px solid #555555;
  border-radius: 5px;
  box-shadow: 5px 5px 20px;
  background-color: #FFFFFF;
}


/* Usuario club */

.cajaVueltaAtras {
  clear: both;
}

#cajaLogin {}

#cajaLogout {
  float: right;
}

.pagina-login {
  min-height: 100vh;
  background: #eef2ee;
}

.contenedor-login {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.tarjeta-login {
  width: 100%;
  max-width: 420px;
  padding: 32px;
  background: #FFFFFF;
  border-radius: 12px;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.12);
}

.tarjeta-login h1 {
  margin-bottom: 24px;
  font-size: 1.6rem;
  text-align: center;
}

.logo-login {
  display: block;
  max-width: 180px;
  max-height: 90px;
  margin: 0 auto 20px;
  object-fit: contain;
}

.datos-usuario {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: 12px;
}

.datos-usuario-texto {
  display: flex;
  flex-direction: column;
  text-align: right;
  line-height: 1.2;
}

.nombre-usuario {
  font-weight: 700;
}

.nivel-usuario {
  font-size: 0.75rem;
  text-transform: uppercase;
  opacity: 0.8;
}

.form-logout {
  margin: 0;
}

.boton-logout {
  padding: 6px 8px;
  color: inherit;
  background: transparent;
  border: 0;
  cursor: pointer;
}

.boton-logout:hover,
.boton-logout:focus {
  color: #dc3545;
}

@media (max-width: 991.98px) {
  .datos-usuario-texto {
    display: none;
  }
}

.cajaUsuario {
  width: 100%;
  padding: 10px;
  border: 1px solid #BBBBBB;
  border-radius: 5px;
  box-shadow: 3px 3px 3px #888888;
}

table.listado {
  width: 100%;
}

table.listado tr td {
  border: 1px solid #BBBBBB;
}

.colOpcion {
  margin-bottom: 10px;
}


/* Forms */

.enLinea {
  display: inline;
}

form {
  width: 100%;
}

button {
  cursor: pointer;
  border: 0px;
  background: transparent;
}

button.botonTexto {
  padding: 0px;
}


label {
  margin-right: 5px;
  font-weight: bold;
}

label.normal {
  font-weight: normal;
}

.labelTAB {
  clear: both;
  margin-left: 3em;
  display: block;
}

.labelBR {
  clear: both;
  display: block;
}

.checkbox-inline,
.radio-inline {
  position: relative;
  display: inline-block;
  padding-left: 40px;
  margin-bottom: 0;
  font-weight: 400;
  vertical-align: middle;
  cursor: pointer;
}

.radio-inline label {
  font-weight: normal;
}


/* ----------------------------------------------------- */

p.textoCabecera {
  mrgin-top: 10px;
  color: #000000;
  font-size: 1.2em;
  font-style: italic;
}

p.textoCabeceraSmartphone {
  color: #000000;
  font-size: 1em;
  font-style: italic;
}

p.textoPie {
  font-size: 0.8em;
  font-style: italic;
}

p.help-block {
  font-size: 0.9em;
}

p.textoPlano {
  font-style: none;
}

p.textoPlanoCentrado {
  font-style: none;
  text-align: center;
}

p.textoResaltado {
  font-size: 1.1em;
  font-weight: bold;
}

p.comentario {
  font-style: italic;
}

img.imgTexto {
  margin: 3px;
}

img.iconoTexto {
  height: 1em;
}


.cajaId {
  float: right;
  font-size: 0.9em;
  color: #0000FF;
  text-align: center;
}

.cajaInfoId {
  float: right;
  font-size: 0.8em;
  color: #0000FF;
  text-align: center;
}

/* ================================================================ */
/* PORTADA: TARJETAS DE LOS SILOS                                  */
/* ================================================================ */

/* Espacio exterior del conjunto completo del dashboard de silos. */
.dashboard-silos {
  margin-top: 25px;
  margin-bottom: 25px;
}

/* Caja visual de cada silo: espacio interior, borde, fondo y sombra. */
.tarjeta-silo {
  position: relative;
  padding: 15px;
  margin-bottom: 15px;
  border: 1px solid #DDDDDD;
  border-radius: 10px;
  background-color: #FFFFFF;
  box-shadow: 0px 3px 10px rgba(0,0,0,0.12);
  text-align: center;
}

/* Anchura maxima disponible para el titulo, las tarjetas y la tabla. */
.contenedor-portada {
  width: 96%;
  max-width: 1440px;
}

/* Cuadricula que distribuye las tarjetas y alinea sus bordes inferiores. */
.silos-portada {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  align-items: end;
}

/* Ajuste horizontal del espacio interior de las tarjetas de la portada. */
.silos-portada .tarjeta-silo {
  padding-left: 10px;
  padding-right: 10px;
}

/* Anchura comun del area reservada para las imagenes de los silos. */
.silos-portada .silo-visual {
  width: 180px;
}

/* Area visual exclusiva del expeller y separacion respecto a sus datos. */
.silos-portada .silo-visual-expeller {
  height: 272px;
  margin: 10px auto 0;
  overflow: hidden;
}

/* Escala aplicada unicamente a la imagen PNG del silo de expeller. */
.silo-img-expeller {
  transform: scale(1.35);
}

/* Sube en bloque los datos y el estado situados debajo del expeller. */
.info-silo-expeller {
  transform: translateY(-10px);
}

/* Colores de la etiqueta provisional "Pendiente" del expeller. */
.estado-prototipo {
  background-color: #e9ecef;
  color: #5f6368;
}

/* Distribucion de dos tarjetas por fila en pantallas pequenas. */
@media (min-width: 576px) {
  .silos-portada {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Distribucion de tres tarjetas por fila en pantallas medianas. */
@media (min-width: 992px) and (max-width: 1199.98px) {
  .silos-portada {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Escritorio: cuatro silos y el expeller en una columna mas estrecha. */
@media (min-width: 1200px) {
  .silos-portada {
    grid-template-columns: repeat(4, minmax(0, 1fr)) minmax(185px, 0.78fr);
  }

  /* Reduce y centra las cuatro tarjetas de los silos convencionales. */
  .silos-portada > div:not(.contenedor-silo-expeller) .tarjeta-silo {
    width: calc(100% - 10px);
    margin-left: auto;
    margin-right: auto;
  }

  /* Aumenta la separacion entre Silo 5 y el silo de expeller sin desplazar el borde derecho de la portada. */
  .contenedor-silo-expeller {
    margin-left: 10px;
  }

  /* Altura menor del expeller; la cuadricula mantiene alineada su base. */
  .tarjeta-silo-expeller {
    box-sizing: border-box;
    height: 465px;
  }

}

/* Nombre mostrado en la parte superior de cada tarjeta. */
.tarjeta-silo h5 {
  font-weight: bold;
  margin-bottom: 10px;
}

/* Hace visible la ayuda emergente al situar el cursor en la tarjeta. */
.tarjeta-silo:hover .silo-tooltip {
  opacity: 1;
  visibility: visible;
}

/* v1 del boceto del silo
.silo-dibujo {
  width: 80px;
  height: 150px;
  border: 3px solid #333333;
  border-radius: 25px 25px 8px 8px;
  margin: 10px auto;
  position: relative;
  overflow: hidden;
  background: #F5F5F5;
}
.silo-relleno {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: #C9A227;
  transition: height 0.6s ease;
}
*/

/* Area que reserva el espacio de la imagen y del nivel de llenado. */
.silo-visual {
  width: 180px;
  height: 272px;
  margin: 15px auto 15px auto;
  position: relative;
}

/* Imagen base del silo, superpuesta al indicador coloreado de grano. */
.silo-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  z-index: 3;
  pointer-events: none;
}

/* Mascara interior que limita el color del grano a la forma del silo. */
.silo-grano {
  position: absolute;
  left: 44px;
  top: 20px;
  width: 95px;
  height: 223px;
  z-index: 4;
  overflow: hidden;
  pointer-events: none;
  opacity: 0.55;

  clip-path: polygon(
    50% 0%,
    100% 18%,
    100% 72%,
    100% 82%,
    50% 100%,
    0% 82%,
    0% 72%,
    0% 18%
  );
}

/* Relleno dinámico */
/* Nivel dinamico: --llenado recibe el porcentaje calculado en Smarty. */
.silo-grano::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: var(--llenado);
  transition: height 0.7s ease;
}

/* Colores */
/* Color del nivel de grano para el estado disponible. */
.silo-grano.verde::after {
  background: linear-gradient(to right, #0c7a3d, #28b96b, #0c7a3d);
}

/* Color del nivel de grano para una ocupacion intermedia. */
.silo-grano.amarillo::after {
  background: linear-gradient(to right, #bd8d10, #e5bd35, #bd8d10);
}

/* Color del nivel de grano para los estados casi lleno y lleno. */
.silo-grano.rojo::after {
  background: linear-gradient(to right, #8f1f27, #c8373f, #8f1f27);
}

/*
  Mascara de llenado exclusiva del Silo Expeller.
  Las coordenadas siguen el deposito y la tolva de silo_expeller.png
  con la escala visual aplicada actualmente a la imagen.
*/
.silo-grano-expeller {
  left: 42px;
  top: 34px;
  width: 82px;
  height: 148px;

  clip-path: polygon(
    5% 0%,      /* P1: superior izquierdo */
    95% 0%,     /* P2: superior derecho */
    95% 71%,    /* P3: inicio derecho de la tolva */
    51% 100%,   /* P4: punta inferior */
    5% 71%      /* P5: inicio izquierdo de la tolva */
  );
}
/* FIN v2 del boceto del silo------------------------------------------------*/


/* Separacion del bloque de datos situado debajo de la imagen. */
.info-silo {
  margin-top: 6px;
}

/* Separacion vertical de producto, ocupacion y capacidad. */
.info-silo p {
  margin: 3px 0;
}

/* Tipo de grano y su miniatura en las tarjetas de la portada. */
.tipo-grano-silo {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
}

.emoji-grano-silo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  font-size: 18px;
  line-height: 1;
  flex: 0 0 18px;
}

/* Tipo de grano de las fichas de campaña en el detalle de un campo. */
.tipo-grano-detalle-campana {
  display: flex;
  align-items: center;
  gap: 6px;
}

.silo-relleno.verde {
  background: #198754;
}

.silo-relleno.amarillo {
  background: #C9A227;
}

.silo-relleno.rojo {
  background: #B02A37;
}

/* Forma y tipografia comunes de las etiquetas de estado. */
.estado-silo {
  display: inline-block;
  margin-top: 6px;
  padding: 4px 10px;
  border-radius: 20px;
  font-weight: bold;
  font-size: 12px;
}

/* Colores de la etiqueta Disponible. */
.estado-verde {
  background: #D1E7DD;
  color: #0F5132;
}

/* Colores de la etiqueta de ocupacion intermedia. */
.estado-amarillo {
  background: #FFF3CD;
  color: #664D03;
}

/* Colores de las etiquetas Casi lleno y Lleno. */
.estado-rojo {
  background: #F8D7DA;
  color: #842029;
}

/* Separacion de un bloque generico de acciones del silo. */
.acciones-silo {
  margin-top: 10px;
  margin-bottom: 10px;
}

/* Alineacion horizontal de una etiqueta de estado y una accion. */
.estado-con-accion {
  display: flex;

  justify-content: center;
  align-items: center;

  gap: 10px;

  margin-top: 12px;
}

/* Alineacion horizontal del lapiz de edicion y la cantidad almacenada. */
.stock-con-accion {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}

/* Apariencia y alineacion del lapiz utilizado para editar el silo. */
.btn-editar-silo {
  text-decoration: none;
  font-size: 15px;
  transition: transform 0.2s ease;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Ampliacion del lapiz al situar el cursor encima. */
.btn-editar-silo:hover {
  transform: scale(1.15);
}


/* Caja emergente con informacion adicional del silo. */

.silo-tooltip {
  position: absolute;

  bottom: 105%;
  left: 50%;

  transform: translateX(-50%);

  background: rgba(20,20,20,0.95);
  color: #FFFFFF;

  padding: 10px 14px;

  border-radius: 10px;

  font-size: 13px;
  line-height: 1.5;

  min-width: 220px;

  text-align: left;

  opacity: 0;
  visibility: hidden;

  transition: all 0.25s ease;

  z-index: 50;

  box-shadow: 0 5px 18px rgba(0,0,0,0.25);
}

/* Flechita */
/* Flecha inferior que une visualmente el tooltip con la tarjeta. */
.silo-tooltip::after {
  content: "";

  position: absolute;

  top: 100%;
  left: 50%;

  transform: translateX(-50%);

  border-width: 8px;
  border-style: solid;

  border-color:
    rgba(20,20,20,0.95)
    transparent
    transparent
    transparent;
}

/* Mostrar tooltip */
.tarjeta-silo:hover .silo-tooltip {
  opacity: 1;
  visibility: visible;
}

.titulo-planta-silos {
  text-align: center;

  font-size: 26px;
  font-weight: 700;

  margin-top: 25px;
  margin-bottom: 25px;

  color: #1E1E1E;

  letter-spacing: 1px;
}


/* ===================================================== */
/* MODAL AJUSTE MANUAL DE SILOS */
/* ===================================================== */

.modal-ajuste {
  display: none;
  position: fixed;
  z-index: 9999;
  inset: 0;
  background: rgba(0,0,0,0.55);
  justify-content: center;
  align-items: center;
}

.modal-ajuste-contenido {
  background: #FFFFFF;
  width: 650px;
  max-width: 95%;
  padding: 25px;
  border-radius: 14px;
  box-shadow: 0 8px 30px rgba(0,0,0,0.35);
  text-align: center;
}

/* Comparación ANTES / AHORA */

.comparacion-ajuste {
  display: flex;
  gap: 20px;
  margin: 25px 0;
}

.bloque-ajuste {
  width: 50%;
  padding: 15px;
  border-radius: 10px;
  background: #F5F5F5;
  text-align: left;
}

.bloque-ajuste h5 {
  text-align: center;
  font-weight: bold;
  margin-bottom: 15px;
}

/* Botones del modal */

.acciones-modal-ajuste {
  display: flex;
  justify-content: center;
  gap: 15px;
}


/* ===================================================== */
/* ACCIONES TABLA MOVIMIENTOS */
/* ===================================================== */

.btn-editar-movimiento,
.btn-eliminar-movimiento {
  text-decoration: none;
  font-size: 18px;
  display: inline-block;
  transition: transform 0.2s ease;
}

.btn-editar-movimiento:hover,
.btn-eliminar-movimiento:hover {
  transform: scale(1.2);
}

/* Variante ligeramente más compacta para las tablas de Ajustes. */
.btn-editar-ajuste {
  font-size: 16px;
}



/* RESPONSIVE  de la barra de menu */

.menu-desktop {
  display: flex;
  gap: 35px;
  align-items: center;
}

.menu-desktop a {
  text-decoration: none;
  color: #222;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 15px;
}

.menu-desktop a:hover {
  color: #2f6f3e;
}

.btn-menu {
  background: none;
  border: none;
  font-size: 34px;
  color: #2f6f3e;
}

.boton-volver {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border: 1px solid;
  border-radius: 6px;
  font-weight: 600;
  text-decoration: none;
  transition: background-color .15s, box-shadow .15s;
}

.boton-volver > span {
  font-size: 1.2em;
  line-height: 1;
}

/* Filtros del historial: contraste suave y jerarquía entre acciones. */
.acciones-filtros-movimientos .btn,
.carta-porte-acciones .btn,
.acciones-suaves .btn {
  border-radius: 6px;
}

.acciones-filtros-movimientos .btn-secondary,
.carta-porte-acciones .btn-secondary,
.acciones-suaves .btn-secondary {
  color: #495057;
  background-color: #f1f3f5;
  border-color: #d9dee3;
}

.acciones-filtros-movimientos .btn-secondary:hover,
.carta-porte-acciones .btn-secondary:hover,
.acciones-suaves .btn-secondary:hover {
  color: #343a40;
  background-color: #e5e9ed;
  border-color: #c9cfd5;
}

.resumen-filtros-movimientos,
#panelCampanasCampo .alert-info {
  padding: 14px 16px;
  border: 1px solid #dbe5eb;
  border-radius: 6px;
  background-color: #f3f7f9;
  color: #465766;
}

.resumen-filtros-movimientos strong,
#panelCampanasCampo .alert-info strong {
  color: #354954;
}

.informacion-productiva .resumen-filtros-movimientos {
  background-color: #edf3ee;
  border-color: #dce3dd;
  color: #334e3c;
}

.informacion-productiva .resumen-filtros-movimientos strong {
  color: inherit;
}

/* Presentación común del panel de Campañas de todos los campos. */
.tabla-campanas-unificada > :is(thead, tbody, tfoot) > tr > :is(th, td),
.tabla-campanas-unificada > :is(thead, tbody, tfoot) > tr > :is(th, td) > span {
  font-size: 14px;
}

.texto-crema-campo {
  color: #6d5328;
}

#panelCampanasCampo .campana-seleccionada-suave {
  background-color: #f0f6f1;
  border-color: #abc4b1;
  box-shadow: 0 2px 8px rgb(54 85 66 / 8%);
}

#panelCampanasCampo .tarjeta-campana-activa:hover {
  border-color: #91ae9c;
  box-shadow: 0 2px 8px rgb(43 64 79 / 10%);
}

.seleccionar-campana {
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: var(--bs-card-border-radius);
  cursor: pointer;
}

.seleccionar-campana:focus-visible {
  outline: 2px solid #52765f;
  outline-offset: 3px;
}

#panelCampanasCampo .titulo-campana-seleccionada {
  font-size: 1.25rem;
  line-height: 1.5;
}

#panelCampanasCampo .titulo-campana-seleccionada .badge {
  font-size: .75rem;
  vertical-align: middle;
}

#panelCampanasCampo .fecha-campana-seleccionada {
  font-size: 1rem;
  font-style: italic;
  font-weight: 400;
}

#panelCampanasCampo .estado-campana-activa,
.estado-activo {
  color: #365314;
  background-color: #b2f522;
}

#panelCampanasCampo .card:not(.campana-seleccionada-suave) > .card-body > .resumen-campana-activa > :is(.identidad-campana-activa, .datos-campana-activa, .acciones-campana-activa) {
  opacity: .5;
}

#panelCampanasCampo .tarjeta-campana-activa .acciones-campana-activa {
  position: relative;
  z-index: 2;
  pointer-events: none;
}

#panelCampanasCampo .tarjeta-campana-activa .acciones-campana-activa > :is(button, form) {
  pointer-events: auto;
}

#panelCampanasCampo .btn-desplegar-avance {
  color: #62717d;
  background-color: transparent;
  box-shadow: none;
  transition: color .15s ease;
}

#panelCampanasCampo .btn-desplegar-avance i::before {
  -webkit-text-stroke: .4px currentColor;
}

#panelCampanasCampo .btn-desplegar-avance:is(:hover, :focus-visible, :active),
#panelCampanasCampo .btn-desplegar-avance[aria-expanded="true"] {
  color: #354954;
}

#panelCampanasCampo .btn-desplegar-avance:focus-visible {
  outline: 2px solid #8d9eab;
  outline-offset: 2px;
}

#panelCampanasCampo .borde-crema-campana {
  border-color: #decba4;
}

#panelCampanasCampo .btn-crema-campana {
  --bs-btn-color: #6d5328;
  --bs-btn-bg: #f5ead2;
  --bs-btn-border-color: #decba4;
  --bs-btn-hover-color: #5b4320;
  --bs-btn-hover-bg: #ecddbc;
  --bs-btn-hover-border-color: #ccb583;
  --bs-btn-active-color: var(--bs-btn-hover-color);
  --bs-btn-active-bg: var(--bs-btn-hover-bg);
  --bs-btn-active-border-color: var(--bs-btn-hover-border-color);
  --bs-btn-disabled-color: var(--bs-btn-color);
  --bs-btn-disabled-bg: var(--bs-btn-bg);
  --bs-btn-disabled-border-color: var(--bs-btn-border-color);
  --bs-btn-focus-shadow-rgb: 135, 110, 63;
  border-radius: 6px;
}

/* Pago en tablas: estado/guardar y check/fecha, en dos líneas. */
.pago-pesada-tabla {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 4px 8px;
  width: 100%;
  min-width: max-content;
}

.pago-pesada-tabla > .badge {
  grid-column: 1;
  grid-row: 1;
  justify-self: start;
  margin-bottom: 0 !important;
}

.pago-pesada-tabla > button {
  grid-column: 2;
  grid-row: 1;
}

.pago-pesada-tabla > [data-pago-pesada] {
  grid-column: 1 / -1;
  grid-row: 2;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: space-between;
  margin-bottom: 0 !important;
}

.pago-pesada-tabla [data-pago-pesada] > label {
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  margin-bottom: 0 !important;
}

.pago-pesada-tabla [name="fechaPago"],
.pago-pesada-tabla [data-sin-fecha-pago] {
  width: 9rem;
  min-width: 9rem;
}

/* Ajustes responsive comunes: tablas, modales y controles táctiles. */
.table-responsive,
.tabla-responsive-finanzas,
.tabla-responsive-pesadas {
  display: block;
  width: 100%;
  max-width: 100%;
  overflow-x: auto !important;
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}

.tabla-responsive-finanzas table,
.tabla-responsive-pesadas table {
  min-width: 900px;
}

#bloqueFinanzasCostos .card-body > div:has(> table) {
  display: block;
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

#bloqueFinanzasCostos .card-body > div:has(> table) table {
  min-width: 900px;
}

.tabla-historial-stock th:last-child,
.tabla-historial-stock td:last-child,
.tarjeta-historial-inventario table th:last-child,
.tarjeta-historial-inventario table td:last-child {
  min-width: 360px;
}

input[type="checkbox"].form-check-input {
  width: 1.15rem !important;
  min-width: 1.15rem !important;
  height: 1.15rem !important;
  min-height: 1.15rem !important;
  padding: 0 !important;
  aspect-ratio: 1 / 1;
}

.icono-menu-lineas {
  display: flex;
  width: 27px;
  height: 22px;
  flex-direction: column;
  justify-content: space-between;
}

.icono-menu-lineas > span {
  display: block;
  width: 100%;
  height: 3px;
  border-radius: 3px;
  background: #2f6f3e;
}

.menu-mobile {
  display: none;
  flex-direction: column;
  background: white;
  padding: 15px;
}

.menu-mobile a {
  padding: 12px;
  text-decoration: none;
  color: #222;
  border-bottom: 1px solid #ddd;
}

.menu-mobile.activo {
  display: flex;
}

/* RESPONSIVE */

@media (max-width: 991px) {

  .menu-desktop {
    display: none;
  }

}

/* LUPA VISUALIZAR AJUSTES STOCK SILO */

/* Fila inferior de la tarjeta: centra el estado y posiciona la lupa. */
.contenedor-estado {
  position: relative;
  width: 100%;
  margin-top: 10px;
  text-align: center;
  line-height: 1;
}

/* Lupa del historico, colocada a la derecha sin desplazar el estado. */
.btn-lupa-ajustes {
  position: absolute;
  left: calc(50% + 55px);  /*pone la lupa a la derecha del centro, sin mover el estado.*/
  top: 50%;
  transform: translateY(-50%);
  text-decoration: none;
  font-size: 15px;
}

/* Ampliacion de la lupa al situar el cursor encima. */
.btn-lupa-ajustes:hover {
  transform: translateY(-50%) scale(1.15);
}


/* Celdas dobles en tabla de movimientos */

.celda-doble {
  vertical-align: middle;
}

.celda-doble .arriba {
  text-align: left;
}

.celda-doble .abajo {
  margin-top: 8px;
  font-size: 0.95em;
}

.celda-doble .derecha {
  text-align: right;
}

.table td,
.table th {
  vertical-align: middle;
  font-size: 0.85rem;
  line-height: 1.25;
}


/* =======================================================
   COMPROBANTE DE PESADA
======================================================= */
.comprobante-pesada {
    position: relative;
    width: 794px;          /* ancho A4 aproximado en pantalla */
    min-height: 1123px;    /* alto A4 aproximado en pantalla */
    margin: 20px auto;
    background: white;
    padding: 45px;
    border: 1px solid #ddd;
    box-shadow: 0 0 12px rgba(0,0,0,0.15);
}
.encabezado-comprobante {

    /* ALTURA TOTAL DEL BLOQUE SUPERIOR */
    min-height: 140px;

    /* SEPARACIÓN ENTRE CABECERA Y TABLA */
    margin-bottom: 35px;
}
.logo-comprobante {
    max-width: 300px; 
    margin-top: 40px; /* BAJA O SUBE EL LOGO de GyM */
}
.titulo-comprobante {
    text-align: right;
    margin-top: 80px; /* SUBE O BAJA TODO EL BLOQUE: Comprobante-Nº-Fecha */
}
.titulo-comprobante h2 {
    margin-bottom: 10px;
    font-weight: 600;
    font-size: 1.7rem; /*Tamaño de letra de "Comprobante de pesada" */
}

.titulo-comprobante h3 {
    margin-bottom: 8px;
}

.linea-comprobante {

    height: 3px;
    background: #2f7d32;

    /* SEPARACIÓN CON EL ENCABEZADO */
    margin-top: 30px;

    /* SEPARACIÓN CON LA TABLA */
    margin-bottom: 60px;
}

.tabla-comprobante th {
    width: 220px;
    background: #f5f5f5;
}

.bloque-firma {
    margin-top: 170px; /* ESTA ES LA DISTANCIA ENTRE TABLA Y FIRMAS */
    display: flex;
    justify-content: space-between;
}

.linea-firma {

    width: 260px;
    border-top: 1px solid #333;
    text-align: center;

    /* DISTANCIA ENTRE LA LÍNEA Y EL TEXTO */
    padding-top: 8px;
}

.btn-imprimir {
    text-align: center;
}

/* Logo de autor integrado en el pie del propio comprobante. */
.pie-logo-pesada {
    display: block;
    position: absolute;
    left: 50%;
    bottom: 30px;
    transform: translateX(-50%);
    width: 150px;
    text-align: center;
    z-index: 10;
}

.pie-logo-pesada img {
    display: block;
    width: 100%;
    height: auto;
    opacity: 0.5;
}

/* =======================================================
   IMPRESIÓN
======================================================= */

.campos-cereal-portada .campana-activa-portada .operacion-campana-portada {
  width: max-content;
  max-width: 100%;
  justify-self: center;
}

@media (max-width: 575.98px) {
  .campos-cereal-portada .campana-activa-portada .operacion-campana-portada {
    justify-self: start;
  }
}

@media print {

    @page {
        size: A4;
        /* Sin margen del navegador para evitar fecha, título, URL y paginación. */
        margin: 0;
    }

    body {
        background: white !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    body * {
        visibility: hidden !important;
    }

    .comprobante-pesada,
    .comprobante-pesada * {
        visibility: visible !important;
    }

    .comprobante-pesada {
        position: fixed !important;
        left: 0 !important;
        top: 0 !important;

        width: 100% !important;
        max-width: 100% !important;
        height: 297mm !important;

        margin: 0 !important;
        padding: 10mm 12mm 20mm !important;
        box-sizing: border-box !important;

        box-shadow: none !important;
        border: none !important;
        background: white !important;
    }

    .btn-imprimir {
        display: none !important;
        visibility: hidden !important;
    }

    .encabezado-comprobante {
        min-height: 120px !important;
        margin-bottom: 25px !important;
    }

    .logo-comprobante {
        max-width: 300px !important;
        margin-top: 80px !important;
    }

    .titulo-comprobante {
        margin-top: -170px !important;
    }

    .linea-comprobante {
        height: 3px !important;
        background: #2f7d32 !important;
        margin-top: 20px !important;
        margin-bottom: 60px !important;
    }

    .bloque-firma {
        /* Separa las firmas de la tabla sin desplazarlas a una segunda hoja. */
        margin-top: 150px !important;
        display: flex !important;
        justify-content: space-between !important;
        break-inside: avoid !important;
        page-break-inside: avoid !important;
    }

    .linea-firma {
        width: 260px !important;
        border-top: 1px solid #333 !important;
        text-align: center !important;
        padding-top: 2px !important;
        font-size: 12px !important;
    }

    .pie-logo-pesada {
        display: block !important;
        visibility: visible !important;
        position: absolute !important;
        left: 50% !important;
        bottom: 12mm !important;
        transform: translateX(-50%) !important;
        width: 180px !important;
        text-align: center !important;
        z-index: 10 !important;
    }

    .pie-logo-pesada img {
        display: block !important;
        width: 100% !important;
        height: auto !important;
        opacity: 0.5 !important;
    }
}

.imagen-bascula {
    max-width: 420px;
    max-height: 280px;
    width: 95%;
    opacity: 0.85
}

/* Color Entrada/Salida/interno en la tabla Historial de Movimientos */
.badge-entrada {
    background: #d1f7d6;
    color: #146c2e;
}
.badge-salida {
    background: #ffe0b3;
    color: #b35a00;
}
.badge-interno {
    background: #e5e5e5;
    color: #555;
}

/* Tabla campos portada*/
.tarjeta-campo-cereal {
    border: 1px solid #e2e4df;
    border-radius: 10px;
    padding: 14px;
    background: #fff;
    height: 100%;
    box-shadow: 0 3px 12px rgba(0, 0, 0, 0.09);
}

.nombre-campo-cereal {
    margin: 2px 0 14px;
    padding: 0;
    background: transparent;
    color: #315d22;
    text-align: center;
    font-family: inherit;
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1.2;
}

.nombre-campo-cereal::before,
.nombre-campo-cereal::after {
    content: none;
}

.nombre-silo-bolsa {
    font-size: 0.9rem;
    font-weight: 600;
    color: #555;
}

.bloque-campo-cereal {
    border-top: 1px solid #eee;
    margin: 0 5px;
    padding: 12px 0;
    text-align: center;
}

.foto-campo-cereal + .bloque-campo-cereal {
    border-top: 0;
    padding-top: 14px;
}
.hectareas-campo {
    text-align: center;
    color: #666;
    margin: 8px 0 12px 0;
    font-size: 0.9rem;
}
.img-campo-cereal {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/*Página de campos*/
.foto-campo-cereal-detalle {
  width: 100%;
  height: 275px;
  overflow: hidden;
  border: 0;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f2f3ef;
}
.img-campo-cereal-detalle {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/*Portada: */
.foto-campo-cereal {
  height: 185px;
  overflow: hidden;
  border: 0;
  margin: 0;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f2f3ef;
}
.img-campo-cereal {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.info-campo-linea {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 64px;
    padding: 10px 0;
    border-bottom: 1px solid #e4e7e1;
}
.info-campo-linea small,
.info-campo-linea strong {
    display: block;
}
.info-campo-linea small {
    margin-bottom: 2px;
    color: #5f665b;
}
.info-campo-linea strong {
    color: #222;
    font-size: 1rem;
}
.contenido-silos-bolsa-campo {
    flex: 1 1 auto;
    min-width: 0;
}
.info-campo-linea-silos {
    align-items: flex-start;
}
.info-campo-linea-silos .icono-info-campo {
    transform: translateY(-5px);
}
.silos-bolsa-campo-detalle.cantidad-silos-3,
.silos-bolsa-campo-detalle.cantidad-silos-4 {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 16px;
}
.silos-bolsa-campo-detalle .silo-bolsa-campo-resumen {
    min-width: 0;
    padding: 5px 0;
}
.silos-bolsa-campo-detalle .silo-bolsa-campo-texto strong {
    font-size: 0.92rem;
    line-height: 1.2;
}
.silos-bolsa-campo-detalle .silo-bolsa-campo-texto div,
.silos-bolsa-campo-detalle .silo-bolsa-campo-texto span {
    font-size: 0.82rem;
}
.ficha-campo-cereal {
    border: 1px solid #e5e7e2;
    border-radius: 12px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}
.ficha-campo-cereal .card-body {
    padding: 22px;
}
.titulo-ficha-campo {
    display: flex;
    align-items: center;
    padding-left: 24px;
    margin: 0 0 18px;
    font-size: clamp(1.25rem, 2vw, 1.55rem);
    font-weight: 500;
    line-height: 1.4;
    color: #304f3c;
}
.selector-campo-detalle {
    width: auto;
    max-width: 100%;
}
.info-campo-linea .accion-principal-campo {
    margin-left: auto;
    flex-shrink: 0;
}
.panel-info-campo > .info-campo-linea:last-child {
    border-bottom: 0;
}
.icono-info-campo {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #eef4eb;
    color: #47713b;
}
.icono-info-campo {
    width: 34px;
    height: 34px;
    font-size: 1rem;
}
.icono-silo-bolsa {
    display: block;
    width: 25px;
    height: 22px;
    object-fit: contain;
}
.titulo-panel-campo {
    margin: 0;
    padding-bottom: 10px;
    border-bottom: 1px solid #d9ddd5;
    color: #47713b;
    font-size: 1rem;
    font-weight: 700;
}
.panel-analisis-suelo .titulo-panel-campo + p {
    margin-top: 14px;
}
.panel-info-campo,
.panel-analisis-suelo {
    padding-top: 2px;
}
.panel-analisis-suelo {
    padding-left: 28px;
    border-left: 1px solid #dfe2dc;
}
.panel-analisis-suelo .boton-pdf-suelo,
.panel-analisis-suelo .boton-historico-suelo {
    display: block;
    width: 100%;
    margin-top: 10px;
}
.accion-principal-campo .btn {
    min-width: 120px;
}
@media (max-width: 991.98px) {
    .panel-analisis-suelo {
        padding-left: calc(var(--bs-gutter-x) * .5);
        border-left: 0;
    }
}
@media (max-width: 575.98px) {
    .silos-bolsa-campo-detalle.cantidad-silos-3,
    .silos-bolsa-campo-detalle.cantidad-silos-4 {
        grid-template-columns: minmax(0, 1fr);
    }
}
@media (max-width: 575.98px) {
    .ficha-campo-cereal .card-body {
        padding: 15px;
    }
    .foto-campo-cereal-detalle {
        height: 220px;
    }
}
.acciones-campo {
    margin-top: 22px;
}
.col-historico-fecha {
  width: 115px;
  white-space: nowrap;
}

/*Tabla histórico ciclos campos*/
.col-historico-ciclo {
  width: 190px;
}
.col-historico-avance {
  width: 250px;
}

/* Resalta el avance resumido de una operación cerrada antes de su objetivo. */
.avance-cierre-forzado {
  background-color: #fff3a3;
  border-radius: 3px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  padding: 2px 4px;
}
.col-historico-accion {
  width: 50px;
}

/*Campañas*/
.col-historico-accion{
    width:70px;
    white-space:nowrap;
    text-align:center;
}

.col-historico-accion a,
.col-historico-accion button{
    display:inline-block;
    vertical-align:middle;
}

.btn-desplegar-avance{
    text-decoration:none;
}

.btn-desplegar-avance i{
    transition:transform .20s ease;
}

.icono-accion {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    font-size: 1.05rem;
    line-height: 1;
    transition: transform 0.15s ease, opacity 0.15s ease;
}

.icono-accion:hover {
    transform: scale(1.22);
    opacity: 0.85;
}

.icono-editar {
    color: #000;
}

.icono-eliminar {
    color: #000;
}

/*Línea gris que separa la campaña actual de la tabla con el histórico*/
.separador-campanas {
    border: 0;
    border-top: 1px solid #b8b8b8;
    margin: 2.5rem 0;
    opacity: 1;
}
/*Tipo de grano campaña en portada*/
.tipo-grano-campana {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    font-size: 1rem;
    color: #6c757d;
    margin-top: -10px;
    margin-bottom: 10px;
}
.cabecera-campanas-portada {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    padding: 0;
    margin-bottom: 8px;
    font-weight: 700;
}
.titulo-campanas-portada {
    font-size: 1rem;
    font-weight: 700;
}

.campos-cereal-portada .cabecera-campanas-portada .btn {
    padding: 4px 10px;
    font-size: 0.78rem;
    line-height: 1.2;
}

.campos-cereal-portada .bloque-campo-cereal:last-child {
    padding-top: 11px;
    padding-bottom: 2px;
    font-size: 0.9rem;
}

.campos-cereal-portada .bloque-campo-cereal:last-child strong {
    color: #263515;
}

.campos-cereal-portada .tipo-grano-campana {
    font-size: 0.9rem;
}

/* Compacta la información de cada campaña activa en la portada. */
.campana-activa-portada {
    border: 1px solid #dee2e6;
    border-radius: 6px;
    margin: 5px 0;
    padding: 8px;
}

.campana-activa-portada > .d-flex {
    margin-bottom: 4px !important;
}

.contenido-campana-portada {
    display: grid;
    grid-template-columns: max-content max-content;
    justify-content: center;
    gap: 28px;
    align-items: center;
    width: 100%;
    margin: 0 auto;
}

.contenido-campana-portada .tipo-grano-campana {
    margin: 0;
    justify-content: center;
}

.operacion-campana-portada {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-width: 0;
    text-align: center;
    white-space: nowrap;
}

.operacion-campana-portada .mt-1 {
    margin-top: 0 !important;
}

@media (max-width: 575.98px) {
    .contenido-campana-portada {
        grid-template-columns: minmax(0, 1fr);
        gap: 6px;
    }

    .operacion-campana-portada {
        flex-wrap: wrap;
        gap: 3px 8px;
        white-space: normal;
    }

    .campana-activa-portada {
        padding: 9px 10px;
    }

    .contenido-campana-portada .tipo-grano-campana,
    .operacion-campana-portada {
        width: 100%;
        max-width: 100%;
    }

    .operacion-campana-portada .small {
        overflow-wrap: anywhere;
    }
}

/* Distribuye nombre, grano y estado en la cabecera de cada campaña activa. */
.cabecera-campana-activa {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    margin-bottom: 8px;
}

.cabecera-campana-activa .card-title {
    margin-bottom: 0 !important;
}

.cabecera-campana-activa .tipo-grano-detalle-campana {
    display: flex;
    gap: 4px;
    align-items: center;
    justify-self: center;
    white-space: nowrap;
}

.cabecera-campana-activa > .badge {
    justify-self: end;
}

.observacion-campana-activa {
    overflow-wrap: anywhere;
}

/* Resumen horizontal de las campañas activas en el detalle del campo. */
.resumen-campana-activa {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
    grid-template-areas: "datos identidad" "acciones acciones";
    gap: 12px;
    align-items: center;
}

.identidad-campana-activa,
.datos-campana-activa {
    min-width: 0;
}

.identidad-campana-activa {
    grid-area: identidad;
    text-align: center;
    overflow-wrap: anywhere;
}

.datos-campana-activa {
    grid-area: datos;
    overflow-wrap: anywhere;
}

.datos-campana-activa .text-muted {
    white-space: normal;
}

.identidad-campana-activa .tipo-grano-detalle-campana {
    justify-content: center;
}

.acciones-campana-activa {
    grid-area: acciones;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 8px;
    justify-self: stretch;
    min-width: 0;
}

.acciones-campana-activa .btn {
    max-width: 100%;
    white-space: normal;
}

.acciones-campana-activa > form {
    display: flex;
    width: auto;
    margin: 0;
}

.acciones-campana-activa .btn-outline-danger {
    --bs-btn-color: #a13f49;
    --bs-btn-border-color: #b65f68;
    --bs-btn-hover-color: #832f38;
    --bs-btn-hover-bg: #e9c3c7;
    --bs-btn-hover-border-color: #a84b56;
    --bs-btn-active-color: var(--bs-btn-hover-color);
    --bs-btn-active-bg: var(--bs-btn-hover-bg);
    --bs-btn-active-border-color: var(--bs-btn-hover-border-color);
    --bs-btn-disabled-color: var(--bs-btn-color);
    --bs-btn-disabled-border-color: var(--bs-btn-border-color);
    --bs-btn-focus-shadow-rgb: 161, 63, 73;
}

@media (max-width: 767.98px) {
    .resumen-campana-activa {
        grid-template-columns: 1fr;
        grid-template-areas:
            "identidad"
            "datos"
            "acciones";
        gap: 12px;
    }

    .acciones-campana-activa {
        flex-direction: row;
        flex-wrap: wrap;
        justify-self: start;
    }
}

@media (max-width: 767.98px) {
    .foto-campo-cereal {
        height: 160px;
    }

    .tarjeta-campo-cereal {
        padding: 12px;
    }
}




.logo-ganzi {
    width: 180px;
    opacity: 0.35;
}

.marca-ganzi {
    margin-top: 60px;
}

/* Tarjetas de resumen de los subproductos de la Planta Expeller. */
.tarjetas-subproductos-expeller {
    margin-bottom: 3rem;
}

.tarjeta-subproducto {
    height: 100%;
    padding: 18px;
    border: 1px solid #d8dde2;
    border-top: 3px solid;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.06);
}

.tarjeta-subproducto-expeller {
    border-top-color: #397523;
}

.tarjeta-subproducto-aceite {
    border-top-color: #e3a400;
}

.tarjeta-subproducto-borra {
    border-top-color: #94500b;
}

.tarjeta-subproducto h3 {
    margin: 0 0 16px;
    text-align: center;
    text-transform: uppercase;
    font-size: 1.2rem;
    font-weight: 700;
}

.tarjeta-subproducto-expeller h3,
.dato-stock-expeller strong {
    color: #397523;
}

.tarjeta-subproducto-aceite h3,
.dato-stock-aceite strong {
    color: #e3a400;
}

.tarjeta-subproducto-borra h3,
.dato-stock-borra strong {
    color: #94500b;
}

.contenido-subproducto {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(115px, 1fr);
    gap: 16px;
    align-items: center;
}

.imagen-subproducto {
    height: 270px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.imagen-subproducto img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.tarjeta-subproducto-expeller .imagen-subproducto img {
    transform: scale(1.25);
}

.datos-subproducto {
    text-align: center;
}

.dato-subproducto {
    padding: 16px 4px;
    border-bottom: 1px solid #e1e5e8;
}

.dato-subproducto:last-child {
    border-bottom: 0;
}

.dato-subproducto span,
.dato-subproducto strong {
    display: block;
}

.dato-subproducto span {
    margin-bottom: 6px;
    font-size: 0.9rem;
}

.dato-subproducto strong {
    font-size: 1.35rem;
}

@media (max-width: 1199px) {
    .contenido-subproducto {
        grid-template-columns: 1fr;
    }

    .imagen-subproducto {
        height: 220px;
    }
}

/* Silos bolsa instalados dentro de la Planta de Silos en la portada. */
.seccion-silos-bolsa-planta {
    margin-top: 1.75rem;
    margin-bottom: 2.5rem !important;
}

.titulo-silos-bolsa-planta {
    margin-bottom: 1.25rem;
    font-size: 1.55rem;
    font-weight: 700;
}

.silos-bolsa-planta-portada {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 12px;
}

.tarjeta-silo-bolsa-planta {
    display: flex;
    flex: 0 0 178px;
    width: 178px;
    min-height: 78px;
    align-items: center;
    gap: 9px;
    padding: 8px 10px;
    border: 1px solid #d8dde2;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.07);
}

.tarjeta-silo-bolsa-planta h5 {
    margin: 0;
    color: #343a40;
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1.1;
}

.visual-silo-bolsa-planta {
    display: flex;
    flex: 0 0 58px;
    width: 58px;
    height: 58px;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-radius: 50%;
    background: #eef3e8;
}

.visual-silo-bolsa-planta img {
    width: 54px;
    height: 44px;
    object-fit: contain;
}

.datos-silo-bolsa-planta {
    display: flex;
    min-width: 0;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    gap: 7px;
    text-align: left;
}

.datos-silo-bolsa-planta p {
    margin: 0;
    color: #54853b;
    font-size: 0.78rem;
    line-height: 1;
    white-space: nowrap;
}

.datos-silo-bolsa-planta strong {
    color: #111;
    font-size: 0.82rem;
    line-height: 1;
    white-space: nowrap;
}

.mensaje-sin-silos-bolsa-planta {
    max-width: 720px;
    margin: 0 auto;
    padding: 18px 24px;
    border: 1px solid #d8dde2;
    border-radius: 10px;
    background: #f8f9fa;
    color: #5f666d;
    text-align: center;
}

/* Contador del producto obtenido en la Planta de maíz partido. */
.tarjeta-stock-maiz-partido {
    display: flex;
    flex: 0 0 245px;
    width: 245px;
    min-height: 78px;
    align-items: center;
    gap: 9px;
    padding: 8px 10px;
    border: 1px solid #d8dde2;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
    margin-left: 52px;
}

.visual-stock-maiz-partido {
    display: flex;
    flex: 0 0 58px;
    width: 58px;
    height: 58px;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-radius: 50%;
    background: #fff6dc;
}

.visual-stock-maiz-partido img {
    width: 54px;
    height: 54px;
    object-fit: contain;
}

.datos-stock-maiz-partido {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    flex: 1;
    gap: 9px;
    text-align: left;
}

.titulo-stock-maiz-partido {
    display: flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}

.titulo-stock-maiz-partido span:first-child {
    color: #343a40;
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1.1;
}

.titulo-stock-maiz-partido span:last-child {
    font-size: 0.9rem;
}

.separador-stock-maiz-partido {
    width: 100%;
    border-top: 1px solid #ddd7c9;
}

.datos-stock-maiz-partido strong {
    color: #111;
    font-size: 0.88rem;
    line-height: 1;
    white-space: nowrap;
}

.datos-stock-maiz-partido strong span {
    color: #6c757d;
    font-size: 0.72rem;
    font-weight: 500;
}

@media (max-width: 575.98px) {
    .tarjeta-stock-maiz-partido {
        margin-left: 0;
    }
}
.columna-edicion-finanzas {
  width: 44px;
  min-width: 44px;
}

/* Panel principal de Finanzas */
.tarjeta-resumen-finanzas {
    border-color: #e2e6e4;
    border-radius: 9px;
}

.tarjeta-resumen-finanzas .card-body {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 16px 18px;
}

.icono-resumen-finanzas,
.icono-seccion-finanzas {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    border-radius: 8px;
    font-size: 1.15rem;
    font-weight: 700;
}

.icono-ingresos-finanzas {
    color: #198754;
    background: #e7f5ed;
}

.icono-costos-finanzas {
    color: #d95050;
    background: #fdeaea;
}

.icono-resultado-finanzas {
    color: #287fc2;
    background: #e7f2fb;
}

.etiqueta-resumen-finanzas {
    color: #59616a;
    font-size: .86rem;
    font-weight: 600;
}

.importe-resumen-finanzas {
    margin-top: 2px;
    color: #171b1f;
    font-size: 1.18rem;
    font-weight: 700;
}

.tarjeta-resumen-finanzas small {
    color: #737b82;
    font-size: .72rem;
}

.cabecera-seccion-finanzas {
    min-height: 58px;
    padding: 10px 14px;
    border: 1px solid #e1e5e3;
    border-radius: 9px;
    background: #fff;
    box-shadow: 0 2px 8px rgba(30, 55, 40, .05);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    cursor: pointer;
}

.titulo-seccion-finanzas,
.acciones-seccion-finanzas {
    display: flex;
    align-items: center;
    gap: 9px;
}

.flecha-seccion-finanzas {
    color: #687078;
    font-size: 1.45rem;
    line-height: 1;
    transition: transform .15s ease;
}

.cabecera-seccion-finanzas[aria-expanded="true"] .flecha-seccion-finanzas {
    transform: rotate(90deg);
}

.icono-seccion-finanzas {
    width: 31px;
    height: 31px;
    font-size: .95rem;
}

#bloqueFinanzasIngresos,
#bloqueFinanzasCostos {
    margin-bottom: 1rem;
}

@media (max-width: 767px) {
    .cabecera-seccion-finanzas {
        align-items: flex-start;
        flex-direction: column;
    }

    .acciones-seccion-finanzas {
        width: 100%;
        flex-wrap: wrap;
    }
}

/* Gestión de inventario */
.categorias-inventario {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: stretch;
    justify-content: center;
}

.tarjeta-categoria-inventario {
    flex: 0 1 calc((100% - 60px) / 6);
    min-width: 180px;
    max-width: none;
    min-height: 82px;
    padding: 10px 12px;
    border: 1px solid #dfe4e1;
    border-radius: 9px;
    background: #fff;
    box-shadow: 0 2px 8px rgba(30, 55, 40, .05);
    color: #20272c;
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 10px;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.tarjeta-categoria-inventario:hover,
.tarjeta-categoria-inventario.activa {
    color: #1b7548;
    border-color: #198754;
    box-shadow: 0 3px 10px rgba(25, 135, 84, .10);
}

.tarjeta-categoria-inventario img {
    width: 48px;
    height: 48px;
    object-fit: contain;
    flex: 0 0 48px;
}

.tarjeta-categoria-inventario > span {
    min-width: 0;
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

.tarjeta-categoria-inventario strong {
    font-size: .84rem;
    overflow-wrap: anywhere;
}

.tarjeta-categoria-inventario > span > span {
    white-space: nowrap;
    margin-top: 5px;
    font-size: .78rem;
    color: #59616a;
}

.tarjeta-categoria-inventario b {
    margin-right: 3px;
    color: #101418;
    font-size: 1.05rem;
}

.aviso-inventario {
    color: #246a4a;
    background: #f0f8f4;
    border-color: #d9eee3;
}

.tarjeta-inventario,
.tarjeta-historial-inventario {
    border-color: #e2e6e4;
    border-radius: 10px;
}

.titulo-filtro-inventario {
    color: #278456;
    font-weight: 500;
}

.tabla-inventario th,
.tabla-inventario td {
    padding-top: .72rem;
    padding-bottom: .72rem;
}

.emoji-articulo-inventario {
    display: inline-block;
    width: 38px;
    margin-right: 8px;
    text-align: center;
    font-size: 1.55rem;
    vertical-align: middle;
}

.emoji-articulo-inventario img {
    width: 30px;
    height: 30px;
    object-fit: contain;
    vertical-align: middle;
}

.boton-historial-inventario {
    width: 100%;
    padding: 15px 20px;
    border: 0;
    background: #fff;
    color: #273039;
    text-align: left;
    font-size: 1.2rem;
    border-radius: 10px;
}

.flecha-historial-inventario {
    display: inline-block;
    margin-right: 10px;
    color: #6b747c;
    font-size: 1.55rem;
    line-height: .8;
    transition: transform .15s ease;
}

.boton-historial-inventario[aria-expanded="true"] .flecha-historial-inventario {
    transform: rotate(90deg);
}

@media (max-width: 767px) {
    .tarjeta-categoria-inventario {
        flex-basis: calc(50% - 6px);
        max-width: none;
    }
}

.boton-editar-finanzas {
  border: 0;
  background: transparent;
  padding: 0;
}

.columna-fecha-movimiento {
  min-width: 165px;
  white-space: nowrap;
}

.table-responsive > .tabla-historial-movimientos .columna-origen-movimiento {
  width: 9%;
  max-width: 9rem;
  white-space: normal;
  overflow-wrap: break-word;
}

/* Mantiene visibles la cabecera y las acciones de los modales con formulario.
   Solo el cuerpo central se desplaza cuando supera la altura de la pantalla. */
.modal-dialog-scrollable .modal-content > form {
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 3.5rem);
  min-height: 0;
}

.modal-dialog-scrollable .modal-content > form > .modal-body {
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* Nueva distribución general de la planta en la portada. */
.distribucion-planta-portada {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 180px;
  gap: 22px;
  align-items: stretch;
}

.contenido-principal-planta {
  min-width: 0;
}

.silos-portada.silos-principales-portada {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.silos-principales-portada > div .tarjeta-silo {
  width: calc(100% - 8px);
  margin-right: auto;
  margin-left: auto;
}

/* Plantas de procesamiento situadas debajo de los cuatro silos. */
.plantas-procesamiento-portada {
  display: grid;
  grid-template-columns: minmax(0, 2.35fr) minmax(280px, 0.9fr);
  gap: 60px;
  align-items: start;
  margin-top: 28px;
}

.plantas-procesamiento-portada h3 {
  margin: 0 0 12px;
  font-size: 1.55rem;
  font-weight: 700;
  text-align: center;
}

.tarjeta-planta-procesamiento {
  box-sizing: border-box;
  min-width: 0;
  height: 280px;
  min-height: 280px;
  border: 1px solid #d8dde2;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
}

.tarjeta-planta-expeller-portada {
  display: grid;
  grid-template-columns: minmax(350px, 1.65fr) repeat(2, minmax(135px, 1fr));
  gap: 12px;
  height: 280px;
  min-height: 280px;
  padding: 15px 16px 0;
  align-items: stretch;
}

.boton-nuevo-movimiento-portada {
  margin-top: 40px;
}

.resumen-expeller-portada,
.subproducto-expeller-portada {
  min-width: 0;
  text-align: center;
}

/* El silo conserva su tamaño y sus datos se muestran a su derecha. */
.resumen-expeller-portada {
  display: grid;
  grid-template-columns: 180px minmax(150px, 1fr);
  grid-template-rows: auto 1fr;
  align-items: center;
  column-gap: 0px;
}

.resumen-expeller-portada > h5 {
  grid-column: 1 / -1;
}

.resumen-expeller-portada h5,
.subproducto-expeller-portada h5,
.resumen-maiz-partido-portada h5 {
  margin: 0 0 8px;
  font-size: 1.25rem;
  font-weight: 700;
}

.resumen-expeller-portada .silo-visual-expeller {
  grid-column: 1;
  grid-row: 2;
  height: 240px;
  margin: 0 auto;
  transform: translateY(-8px) scaleY(0.94);
  transform-origin: top center;
}

/* Ajusta exclusivamente la máscara de llenado al alto compacto de la portada. */
.resumen-expeller-portada .silo-grano-expeller {
  top: 28px;
  height: 160px;
}

.resumen-expeller-portada .info-expeller-portada {
  grid-column: 2;
  grid-row: 2;
  align-self: center;
  margin-top: 0;
  transform: translate(-30px, -10px);
  font-size: 0.88rem;
  line-height: 1.15;
}

.resumen-expeller-portada .info-expeller-portada p {
  margin: 4px 0;
  white-space: nowrap;
}

.subproducto-expeller-portada {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  padding-top: 2px;
}

/* Equilibra visualmente la separación entre Expeller, Aceite y Borra. */
.tarjeta-planta-expeller-portada > .subproducto-expeller-portada:nth-child(2) {
  transform: translateX(-20px);
}

.subproducto-expeller-portada img {
  width: 100%;
  max-width: 190px;
  height: 220px;
  object-fit: contain;
  margin-top: -12px;
}

.subproducto-expeller-portada p,
.resumen-maiz-partido-portada p {
  margin: -2px 0 0;
  white-space: nowrap;
  transform: translateY(-7px);
}

.subproducto-expeller-portada p {
  font-size: 1rem;
}

.resumen-maiz-partido-portada p {
  font-size: 1rem;
}

.resumen-maiz-partido-portada {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 15px 18px;
}

.resumen-maiz-partido-portada img {
  width: 100%;
  max-width: 205px;
  height: 220px;
  object-fit: contain;
  margin-top: -12px;
}
.resumen-maiz-partido-portada img,
.resumen-maiz-partido-portada p {
  position: relative;
  top: 9px;
}

/* Columna lateral preparada para una cantidad variable de silos bolsa. */
.distribucion-planta-portada > .seccion-silos-bolsa-planta {
  position: relative;
  align-self: stretch;
  min-height: 0;
  margin: 0 !important;
  min-width: 0;
}

.silos-bolsa-lateral-portada {
  position: absolute;
  inset: 0 0 15px;
  display: grid;
  grid-template-rows: repeat(8, minmax(0, 1fr));
  gap: 6px;
  height: auto;
}

.silos-bolsa-lateral-portada .tarjeta-silo-bolsa-planta {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 3px 7px;
  gap: 5px;
}

.silos-bolsa-lateral-portada .tarjeta-silo-bolsa-vacia {
  border-style: dashed;
  background: #fafafa;
  box-shadow: none;
  color: #8a8f94;
}

.silos-bolsa-lateral-portada .tarjeta-silo-bolsa-vacia img {
  opacity: 0.35;
}

.silos-bolsa-lateral-portada .tarjeta-silo-bolsa-vacia .tipo-grano-silo {
  min-height: 0.86rem;
}

.silos-bolsa-lateral-portada .visual-silo-bolsa-planta {
  flex-basis: 44px;
  width: 44px;
  height: 44px;
}

.silos-bolsa-lateral-portada .visual-silo-bolsa-planta img {
  width: 42px;
  height: 34px;
}

.silos-bolsa-lateral-portada .datos-silo-bolsa-planta {
  gap: 2px;
}

.silos-bolsa-lateral-portada .datos-silo-bolsa-planta h5 {
  max-width: 98px;
  overflow: hidden;
  font-size: 0.78rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.silos-bolsa-lateral-portada .datos-silo-bolsa-planta p,
.silos-bolsa-lateral-portada .datos-silo-bolsa-planta strong {
  font-size: 0.72rem;
}

.silos-bolsa-lateral-portada .datos-silo-bolsa-planta p.tipo-grano-silo {
  gap: 3px;
  font-size: 0.68rem;
}

/* Conserva un cierre visual antes del pie tras la última fila de campos. */
.campos-cereal-portada {
  margin-bottom: 24px;
}

/* El precio de las pesadas se mantiene legible en una sola línea. */
.tabla-responsive-pesadas th:last-child,
.tabla-responsive-pesadas td:last-child {
  min-width: 130px;
  white-space: nowrap;
}

.distribucion-planta-portada .mensaje-sin-silos-bolsa-planta {
  padding: 14px 10px;
  font-size: 0.82rem;
}

@media (max-width: 1199.98px) {
  .distribucion-planta-portada {
    grid-template-columns: 1fr;
  }

  .distribucion-planta-portada > .seccion-silos-bolsa-planta {
    position: static;
    min-height: 0;
    margin-top: 0;
  }

  .silos-bolsa-lateral-portada {
    position: static;
    inset: auto;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
    height: auto;
  }

  .silos-bolsa-lateral-portada .tarjeta-silo-bolsa-planta {
    width: 178px;
  }

  .silos-bolsa-lateral-portada .tarjeta-silo-bolsa-vacia {
    display: flex;
  }
}

@media (max-width: 991.98px) {
  .silos-portada.silos-principales-portada {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .plantas-procesamiento-portada {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 767.98px) {
  .tarjeta-planta-expeller-portada {
    min-height: 250px;
    height: auto;
    grid-template-columns: 1fr;
  }

  .subproducto-expeller-portada img {
    height: 180px;
  }
}

@media (max-width: 575.98px) {
  .silos-portada.silos-principales-portada {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(245px, 82vw);
    grid-template-columns: none;
    justify-content: start;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: inline mandatory;
    padding: 2px 2px 10px;
  }

  .silos-portada.silos-principales-portada > div {
    scroll-snap-align: center;
  }
}

/* ================================================================ */
/* BASE RESPONSIVE Y COMPATIBILIDAD CON SAFARI MÓVIL                */
/* ================================================================ */

html {
  max-width: 100%;
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  max-width: 100%;
  overflow-x: hidden;
}

/* Mantiene el pie al final de la ventana en las pantallas con poco contenido. */
html {
  min-height: 100%;
}

body:not(.pagina-login) {
  display: flex;
  min-height: 100vh;
  min-height: 100dvh;
  flex-direction: column;
}

body:not(.pagina-login) > .pie {
  flex: 0 0 auto;
  margin-top: auto;
  /* Reserva espacio dejando visible el fondo comun, sin franja blanca. */
  border-top: 24px solid transparent;
  background-clip: padding-box;
}

/* Documentos y acciones financieras se leen como un único grupo horizontal. */
.tabla-responsive-finanzas th:last-child,
.tabla-responsive-finanzas td:last-child,
#bloqueFinanzasCostos table th:last-child,
#bloqueFinanzasCostos table td:last-child {
  min-width: 300px;
  white-space: nowrap !important;
}

.tabla-responsive-finanzas td:last-child br,
#bloqueFinanzasCostos table td:last-child br {
  display: none;
}

.tabla-responsive-finanzas td:last-child > a,
.tabla-responsive-finanzas td:last-child > span,
.tabla-responsive-finanzas td:last-child > button,
.tabla-responsive-finanzas td:last-child > form,
#bloqueFinanzasCostos table td:last-child > a,
#bloqueFinanzasCostos table td:last-child > span,
#bloqueFinanzasCostos table td:last-child > button,
#bloqueFinanzasCostos table td:last-child > form {
  margin-right: 0.35rem;
}

/* La tabla de Sueldos ocupa el ancho disponible sin forzar desplazamiento.
   Empleado y sueldo fijo ganan espacio a costa de la columna Total. */
.tabla-responsive-finanzas .tabla-sueldos-finanzas {
  width: 100%;
  min-width: 0 !important;
  table-layout: auto;
}

.tabla-responsive-finanzas .tabla-sueldos-finanzas th:nth-child(3),
.tabla-responsive-finanzas .tabla-sueldos-finanzas td:nth-child(3) {
  width: 13%;
  white-space: nowrap !important;
}

.tabla-responsive-finanzas .tabla-sueldos-finanzas th:nth-child(4),
.tabla-responsive-finanzas .tabla-sueldos-finanzas td:nth-child(4) {
  width: 10%;
  white-space: nowrap !important;
}

.tabla-responsive-finanzas .tabla-sueldos-finanzas th:nth-child(11),
.tabla-responsive-finanzas .tabla-sueldos-finanzas td:nth-child(11) {
  width: 8%;
  min-width: 0;
  white-space: nowrap !important;
}

/* La tabla de ventas de grano aprovecha todo el ancho sin reservar 300 px
   para las acciones. Los dos importes cobrados mantienen su título en línea. */
.tabla-responsive-finanzas .tabla-ventas-grano-finanzas {
  width: 100%;
  min-width: 0 !important;
  table-layout: auto;
}

.tabla-responsive-finanzas .tabla-ventas-grano-finanzas th:nth-child(8),
.tabla-responsive-finanzas .tabla-ventas-grano-finanzas td:nth-child(8),
.tabla-responsive-finanzas .tabla-ventas-grano-finanzas th:nth-child(9),
.tabla-responsive-finanzas .tabla-ventas-grano-finanzas td:nth-child(9) {
  width: 9%;
  white-space: nowrap !important;
}

.tabla-responsive-finanzas .tabla-ventas-grano-finanzas th:last-child,
.tabla-responsive-finanzas .tabla-ventas-grano-finanzas td:last-child {
  width: 18%;
  min-width: 0;
  white-space: nowrap !important;
}

/* Mismo reparto para las ventas de derivados, adaptando la posición de las
   columnas cobradas y de documentos a la estructura de esta tabla. */
.tabla-responsive-finanzas .tabla-ventas-derivados-finanzas {
  width: 100%;
  min-width: 0 !important;
  table-layout: auto;
}

.tabla-responsive-finanzas .tabla-ventas-derivados-finanzas th:nth-child(7),
.tabla-responsive-finanzas .tabla-ventas-derivados-finanzas td:nth-child(7),
.tabla-responsive-finanzas .tabla-ventas-derivados-finanzas th:nth-child(8),
.tabla-responsive-finanzas .tabla-ventas-derivados-finanzas td:nth-child(8) {
  width: 9%;
  white-space: nowrap !important;
}

.tabla-responsive-finanzas .tabla-ventas-derivados-finanzas th:last-child,
.tabla-responsive-finanzas .tabla-ventas-derivados-finanzas td:last-child {
  width: 18%;
  min-width: 0;
  white-space: nowrap !important;
}

.tabla-responsive-finanzas .tabla-costos-flete {
  width: 100%;
  min-width: 0 !important;
  table-layout: fixed !important;
}

.contenedor-tabla-costos-flete {
  overflow-x: hidden !important;
}

.tabla-responsive-finanzas .tabla-costos-flete th,
.tabla-responsive-finanzas .tabla-costos-flete td {
  vertical-align: middle;
  text-align: center;
}

.tabla-responsive-finanzas .tabla-costos-flete thead th {
  white-space: nowrap !important;
}

.desplazamiento-expeller-portada {
  min-width: 0;
}

.tabla-costos-flete .ctg-flete-coincidente {
  background-color: #fff3cd;
  border-radius: 0.25rem;
  color: #664d03;
  font-weight: 700;
}

.honorarios-servicios-finanzas {
  margin-top: 0.75rem;
  padding-left: 1.75rem;
}

.honorarios-servicios-finanzas .honorario-subseccion {
  border-left: 4px solid #858d96;
  margin-left: 0;
  padding-left: 0.6rem;
}

.honorarios-servicios-finanzas .honorario-subseccion > summary {
  background-color: #eceff1 !important;
  border: 1px solid #b8bec5 !important;
  color: #343a40;
  font-size: 0.92rem;
  padding-left: 1rem !important;
}

@media (max-width: 767.98px) {
  .honorarios-servicios-finanzas {
    padding-left: 0.65rem;
  }

  .honorarios-servicios-finanzas .honorario-subseccion {
    padding-left: 0.35rem;
  }
}

.tabla-responsive-finanzas .tabla-honorarios-personalizada {
  width: 100%;
  min-width: 0 !important;
  table-layout: auto;
}

.tabla-responsive-finanzas .tabla-honorarios-personalizada th {
  text-align: center;
  white-space: nowrap;
}

.tabla-responsive-finanzas .tabla-honorarios-personalizada th:last-child,
.tabla-responsive-finanzas .tabla-honorarios-personalizada td:last-child {
  width: 18%;
  min-width: 0;
}

.tabla-responsive-finanzas .tabla-costo-personalizado,
.tabla-responsive-finanzas .tabla-labor-contratada {
  width: 100%;
  min-width: 0 !important;
  table-layout: auto;
}

.tabla-responsive-finanzas .tabla-costo-personalizado th,
.tabla-responsive-finanzas .tabla-labor-contratada th {
  text-align: center;
  white-space: nowrap;
}

/* Presentación homogénea de los datos breves en las tablas de costos.
   Los nombres y descripciones conservan su alineación natural. */
.tabla-responsive-finanzas .tabla-costo-personalizado td:nth-child(2),
.tabla-responsive-finanzas .tabla-costo-personalizado td:nth-last-child(3),
.tabla-responsive-finanzas .tabla-costo-personalizado td:nth-last-child(2),
.tabla-responsive-finanzas .tabla-costo-personalizado[data-nombre-exportacion="costos_insumos"] td:nth-child(6),
.tabla-responsive-finanzas .tabla-costo-personalizado[data-nombre-exportacion="costos_maquinaria"] td:nth-child(6) {
  text-align: center;
  white-space: nowrap;
}

.tabla-responsive-finanzas .tabla-costo-personalizado th:nth-last-child(3),
.tabla-responsive-finanzas .tabla-costo-personalizado td:nth-last-child(3) {
  white-space: nowrap;
}

.tabla-responsive-finanzas .tabla-costo-personalizado th:last-child,
.tabla-responsive-finanzas .tabla-costo-personalizado td:last-child,
.tabla-responsive-finanzas .tabla-labor-contratada th:last-child,
.tabla-responsive-finanzas .tabla-labor-contratada td:last-child {
  min-width: 0;
}

.tabla-responsive-finanzas .tabla-costos-flete th:last-child,
.tabla-responsive-finanzas .tabla-costos-flete td:last-child { min-width: 0; }

.pagina-login,
.contenedor-login {
  min-height: 100dvh;
}

img,
svg,
video,
canvas {
  max-width: 100%;
}

.table-responsive {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-inline: contain;
}

@media print {
  .tabla-responsive-automatica {
    overflow: visible !important;
  }
}

@supports (-webkit-touch-callout: none) {
  input,
  select,
  textarea {
    border-radius: 6px;
  }
}

@media (max-width: 991.98px) {
  .cabecera_top {
    padding-top: max(6px, env(safe-area-inset-top));
    padding-right: max(8px, env(safe-area-inset-right));
    padding-bottom: 6px;
    padding-left: max(8px, env(safe-area-inset-left));
  }

  .cabecera_top > .container {
    max-width: 100%;
    padding: 0;
  }

  .cabecera_top .row {
    flex-wrap: nowrap;
  }

  img.imgCabecera {
    width: auto;
    height: 76px;
    max-width: 180px;
    padding: 0;
    object-fit: contain;
  }

  .datos-usuario {
    gap: 2px;
    margin-left: auto;
  }

  .boton-logout,
  .btn-menu {
    display: inline-flex;
    min-width: 44px;
    min-height: 44px;
    align-items: center;
    justify-content: center;
  }

  .btn-menu {
    padding: 0 6px;
    font-size: 30px;
    line-height: 1;
  }

  .menu-mobile {
    position: relative;
    z-index: 1050;
    padding: 0 max(12px, env(safe-area-inset-right)) 10px max(12px, env(safe-area-inset-left));
    border-bottom: 1px solid #d8dde2;
    box-shadow: 0 5px 12px rgba(0, 0, 0, 0.08);
  }

  .menu-mobile a {
    min-height: 44px;
    display: flex;
    align-items: center;
    font-weight: 600;
  }

  .contenedor-portada,
  main.container,
  body > .container {
    width: 100%;
    max-width: 100%;
  }

  .modal-dialog {
    max-width: calc(100% - 20px);
    margin: 10px auto;
  }

  .modal-dialog-scrollable,
  .modal-dialog-scrollable .modal-content,
  .modal-dialog-scrollable .modal-content > form {
    max-height: calc(100dvh - 20px);
  }

  .modal-header,
  .modal-body,
  .modal-footer {
    padding-left: 14px;
    padding-right: 14px;
  }

  .modal-footer {
    padding-bottom: max(12px, env(safe-area-inset-bottom));
  }

  .plantas-procesamiento-portada {
    gap: 24px;
  }
}

@media (max-width: 767.98px) {
  * {
    -webkit-tap-highlight-color: rgba(25, 135, 84, 0.16);
  }

  input,
  select,
  textarea,
  .form-control,
  .form-select {
    min-height: 44px;
    font-size: 16px;
  }

  textarea.form-control {
    min-height: 88px;
  }

  .btn:not(.btn-sm),
  button[type="submit"]:not(.boton-logout) {
    min-height: 44px;
  }

  h1,
  h2,
  .titulo-planta-silos {
    overflow-wrap: anywhere;
  }

  .container,
  .container-fluid {
    padding-right: 12px;
    padding-left: 12px;
  }

  .mt-5 {
    margin-top: 2rem !important;
  }

  .tarjeta-planta-expeller-portada {
    display: flex;
    gap: 18px;
    height: 330px;
    padding: 12px 10px 8px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .tarjeta-planta-expeller-portada::-webkit-scrollbar {
    display: none;
  }

  .tarjeta-planta-expeller-portada > * {
    flex: 0 0 auto;
    min-width: 0;
  }

  .resumen-expeller-portada {
    width: 310px;
    grid-template-columns: 138px 172px;
    column-gap: 0;
    padding: 0;
  }

  .resumen-expeller-portada .silo-visual-expeller {
    transform: translateY(-2px) scale(0.76);
    transform-origin: center center;
  }

  .resumen-expeller-portada .info-expeller-portada {
    transform: translate(-3px, -4px);
    font-size: 0.82rem;
  }

  .tarjeta-planta-expeller-portada > .subproducto-expeller-portada:nth-child(2) {
    transform: none;
  }

  .subproducto-expeller-portada img {
    width: 235px;
    max-width: 235px;
    height: 235px;
    margin-top: -4px;
  }

  .subproducto-expeller-portada {
    width: 245px;
  }

  .tarjeta-planta-procesamiento {
    height: auto;
    min-height: 0;
  }

  .silos-bolsa-lateral-portada {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: none;
    grid-auto-rows: minmax(56px, auto);
    gap: 6px;
  }

  .silos-bolsa-lateral-portada .tarjeta-silo-bolsa-planta {
    width: 100%;
    min-width: 0;
  }

  .pie {
    padding-right: max(12px, env(safe-area-inset-right));
    padding-bottom: max(20px, env(safe-area-inset-bottom));
    padding-left: max(12px, env(safe-area-inset-left));
  }

  /* Pesadas: en una pantalla estrecha prima la lectura y la entrada de datos. */
  .pagina-pesadas .card-body {
    padding: 16px 12px;
  }

  .cabecera-nueva-pesada {
    row-gap: 8px;
  }

  .cabecera-nueva-pesada > div,
  .cabecera-nueva-pesada .text-end {
    width: 50%;
    text-align: left !important;
  }

  .cabecera-nueva-pesada .text-end {
    text-align: right !important;
  }

  .formulario-nueva-pesada > .row,
  .fila-carga-pesada {
    row-gap: 12px;
  }

  .fila-formulario-pesada > [class*="col-"] {
    width: 50%;
  }

  .fila-carga-pesada > [class*="col-"] {
    width: 50%;
  }

  .fila-carga-pesada > .col-md-4 {
    width: 100%;
  }

  .panel-imagen-pesada {
    align-items: stretch !important;
    gap: 12px;
    margin-top: 2px;
  }

  .panel-imagen-pesada .imagen-bascula {
    width: auto;
    max-width: 230px;
    max-height: 145px;
  }

  .panel-imagen-pesada .btn {
    width: 100%;
  }

  /* Finanzas: resúmenes y acciones legibles sin botones comprimidos. */
  .resumen-finanzas .row {
    row-gap: 10px;
  }

  .resumen-finanzas .col-md-4 {
    width: 100%;
  }

  .tarjeta-resumen-finanzas .card-body {
    padding: 12px 14px;
  }

  .acciones-seccion-finanzas .btn {
    flex: 1 1 190px;
  }

  .bloque-finanzas .card-body {
    padding: 14px 10px;
  }

  /* Stock: el título conserva la jerarquía y las acciones no desbordan. */
  .gestion-inventario > .d-flex.justify-content-end {
    justify-content: flex-start !important;
    margin-top: 1rem !important;
  }

  .gestion-inventario > .d-flex.justify-content-end .btn {
    flex: 1 1 190px;
  }

  .tarjeta-categoria-inventario {
    min-width: 0;
    padding: 9px;
  }

  .tarjeta-categoria-inventario img {
    width: 40px;
    height: 40px;
    flex-basis: 40px;
  }

  /* Campos: secciones apiladas y acciones accesibles con el pulgar. */
  .titulo-ficha-campo {
    font-size: 1.3rem;
  }

  .panel-analisis-suelo {
    margin-top: 4px;
  }

  .acciones-campana-activa,
  .acciones-campo {
    flex-wrap: wrap;
  }

  .identidad-campana-activa {
    transform: none;
    text-align: left;
  }

  .identidad-campana-activa .tipo-grano-detalle-campana {
    justify-content: flex-start;
  }

  /* En móvil cada tabla conserva un ancho legible y se desplaza dentro de sí. */
  .table-responsive {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
  }

  .table-responsive > table.table {
    width: max-content;
    min-width: 100%;
    margin-bottom: 0;
  }

  .table-responsive > table.table > thead > tr > th,
  .table-responsive > table.table > tbody > tr > td,
  .table-responsive > table.table > tfoot > tr > th,
  .table-responsive > table.table > tfoot > tr > td {
    white-space: nowrap;
  }

  .table-responsive > table.table .text-wrap {
    white-space: normal;
  }

  /* Vista previa de Pesadas: el A4 se ajusta a pantalla sin afectar la impresión. */
  .comprobante-pesada {
    width: calc(100% - 16px);
    min-height: 0;
    margin: 10px auto;
    padding: 24px 16px;
  }

  .encabezado-comprobante {
    min-height: 0;
    margin-bottom: 24px;
  }

  .logo-comprobante {
    max-width: 190px;
    margin-top: 10px;
  }

  .titulo-comprobante {
    margin-top: 18px;
  }
}

@media (max-width: 575.98px) {
  img.imgCabecera {
    height: 64px;
    max-width: 140px;
  }

  .contenedor-login {
    align-items: flex-start;
    padding: max(18px, env(safe-area-inset-top)) 12px max(18px, env(safe-area-inset-bottom));
  }

  .tarjeta-login {
    padding: 24px 18px;
  }

  .cabecera_top .col-auto {
    padding-right: 2px;
    padding-left: 2px;
  }

  .modal-dialog {
    width: calc(100% - 12px);
    max-width: none;
    margin: 6px auto;
  }

  .modal-content {
    max-height: calc(100dvh - 12px);
    border-radius: 10px;
  }

  .modal-body {
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  .modal-footer {
    gap: 8px;
  }

  .modal-footer > * {
    margin: 0;
  }

  .plantas-procesamiento-portada h3 {
    font-size: 1.25rem;
  }

  .resumen-expeller-portada h5,
  .subproducto-expeller-portada h5,
  .resumen-maiz-partido-portada h5 {
    font-size: 1rem;
  }

  .silos-bolsa-lateral-portada .datos-silo-bolsa-planta h5 {
    max-width: 100%;
  }

  .fila-carga-pesada > [class*="col-"] {
    width: 100%;
  }

  .fila-formulario-pesada > [class*="col-"] {
    width: 100%;
  }

  .panel-imagen-pesada .imagen-bascula {
    max-width: 200px;
    max-height: 125px;
  }

  .categorias-inventario {
    gap: 8px;
  }

  .tarjeta-categoria-inventario {
    flex-basis: calc(50% - 4px);
    min-height: 76px;
  }

  .tarjeta-categoria-inventario strong {
    font-size: .78rem;
  }

  .tarjeta-categoria-inventario > span > span {
    white-space: normal;
  }

  /* Confirmaciones manuales heredadas: comparación vertical en iPhone. */
  .modal-ajuste {
    align-items: flex-start;
    overflow-y: auto;
    padding: 8px 6px max(8px, env(safe-area-inset-bottom));
  }

  .modal-ajuste-contenido {
    width: 100%;
    max-width: 100%;
    padding: 16px 12px;
    border-radius: 10px;
  }

  .comparacion-ajuste {
    flex-direction: column;
    gap: 10px;
    margin: 16px 0;
  }

  .bloque-ajuste {
    width: 100%;
  }
}
/* ================================================================ */
/* CORRECCIONES MÃ“VILES VERIFICADAS EN DISPOSITIVOS REALES          */
/* ================================================================ */

@media (max-width: 991.98px) {
  .menu-mobile.activo {
    display: flex !important;
    position: relative;
    z-index: 2000;
    width: 100%;
    background: #fff;
  }
}

@media (max-width: 767.98px) {
  /* La Planta Expeller se desplaza como una composiciÃ³n continua. */
  .plantas-procesamiento-portada {
    display: block;
  }

  .bloque-planta-expeller-portada {
    width: 100%;
    max-width: 100%;
    margin-bottom: 28px;
    overflow: visible;
  }

  /* Un único viewport desplazable evita el conflicto de scroll anidado de Safari iOS. */
  .desplazamiento-expeller-portada {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;
    scrollbar-width: none;
  }

  .desplazamiento-expeller-portada::-webkit-scrollbar {
    display: none;
  }

  .bloque-planta-expeller-portada > h3 {
    width: 100%;
  }

  .tarjeta-planta-expeller-portada {
    display: grid;
    grid-template-columns: 350px 190px 190px;
    gap: 12px;
    width: 760px;
    min-width: 760px;
    height: 280px;
    min-height: 280px;
    padding: 15px 16px 0;
    overflow: visible;
  }

  .tarjeta-planta-expeller-portada > * {
    min-width: 0;
  }

  .resumen-expeller-portada {
    width: auto;
    grid-template-columns: 180px 170px;
    padding: 0;
  }

  .resumen-expeller-portada .silo-visual-expeller {
    transform: translateY(-8px) scaleY(0.94);
    transform-origin: top center;
  }

  .resumen-expeller-portada .info-expeller-portada {
    transform: translate(-30px, -10px);
    font-size: 0.88rem;
  }

  .tarjeta-planta-expeller-portada > .subproducto-expeller-portada:nth-child(2) {
    transform: translateX(-20px);
  }

  .subproducto-expeller-portada {
    width: auto;
  }

  .subproducto-expeller-portada img {
    width: 100%;
    max-width: 190px;
    height: 220px;
    margin-top: -12px;
  }

  .bloque-planta-maiz-portada {
    width: 100%;
  }

  .campana-activa-portada {
    min-width: 0;
    overflow: hidden;
  }

  .campana-activa-portada > .d-flex {
    gap: 8px;
  }

  .campana-activa-portada > .d-flex > strong {
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .contenido-campana-portada {
    grid-template-columns: minmax(0, 1fr);
    justify-content: stretch;
    gap: 5px;
  }

  .contenido-campana-portada .tipo-grano-campana,
  .operacion-campana-portada {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }

  .operacion-campana-portada {
    flex-wrap: wrap;
    white-space: normal;
  }

  .operacion-campana-portada .small {
    max-width: 100%;
    overflow-wrap: anywhere;
  }

  /* Las tablas conservan columnas legibles y se recorren lateralmente. */
  .table-responsive > table.table {
    width: 100%;
    min-width: 860px;
    table-layout: auto;
  }

  .table-responsive > table.table th,
  .table-responsive > table.table td {
    white-space: nowrap;
  }

  .table-responsive > table.table td:last-child,
  .table-responsive > table.table th:last-child {
    white-space: normal;
  }
}

/* Correcciones finales para pantallas estrechas (deben prevalecer sobre reglas anteriores). */
@media (max-width: 767.98px) {
  .pie {
    margin-top: 12px;
    padding: 8px max(12px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
  }

  .pie .container {
    padding-top: 0;
    padding-bottom: 0;
  }

  img.imgPie {
    display: block;
    width: auto;
    height: 50px;
    margin: 0 auto;
  }

  .modal-dialog {
    margin: 8px;
    max-height: calc(100dvh - 16px);
  }

  .modal-content,
  .modal-content > form {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-height: 0;
    max-height: calc(100dvh - 16px);
  }

  .modal-content > form > .modal-header,
  .modal-content > form > .modal-footer {
    flex: 0 0 auto;
  }

  .modal-content > .modal-body,
  .modal-content > form > .modal-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  .modal-footer {
    position: static;
    flex: 0 0 auto;
    flex-wrap: wrap;
  }

  .modal-footer .btn {
    flex: 1 1 auto;
  }

  input[type="checkbox"].form-check-input {
    width: 1.15rem !important;
    min-width: 1.15rem !important;
    height: 1.15rem !important;
    min-height: 1.15rem !important;
    padding: 0 !important;
    aspect-ratio: 1 / 1;
  }

  .tarjeta-planta-expeller-portada {
    grid-template-columns: 335px 190px 185px;
    width: 760px;
    min-width: 760px;
    padding-right: 10px;
    padding-left: 8px;
    overflow: hidden;
  }

  .resumen-expeller-portada {
    grid-template-columns: 170px 165px;
  }

  .resumen-expeller-portada .info-expeller-portada {
    transform: translate(-20px, -10px);
  }

  .tarjeta-planta-expeller-portada > .subproducto-expeller-portada:nth-child(2) {
    transform: translateX(-12px);
  }

  .subproducto-expeller-portada img {
    max-width: 180px;
  }

  .pagina-pesadas textarea[name="observaciones"] {
    min-height: 118px;
  }

  .pie-logo-pesada {
    display: none;
  }

  .comprobante-pesada .btn-imprimir {
    position: relative;
    z-index: 20;
  }
}

/* Ajustes móviles finales de tablas y portada. */
@media (max-width: 767.98px) {
  /* Las reglas de escritorio de estas tablas anulan el ancho intrínseco común.
     En móvil se desplazan dentro de la tarjeta en lugar de comprimir columnas. */
  .tabla-responsive-finanzas .tabla-ventas-grano-finanzas,
  .tabla-responsive-finanzas .tabla-ventas-derivados-finanzas,
  .tabla-responsive-finanzas .tabla-sueldos-finanzas {
    width: max-content;
    min-width: 100% !important;
    table-layout: auto;
  }

  /* En escritorio las tablas de Costos se ajustan a la tarjeta. En móvil
     conservan columnas legibles y el desplazamiento queda dentro de cada tabla. */
  #bloqueFinanzasCostos .table-responsive,
  #bloqueFinanzasCostos .tabla-responsive-finanzas,
  #bloqueFinanzasCostos .contenedor-tabla-costos-flete {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto !important;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }

  #bloqueFinanzasCostos .tabla-costos-flete {
    width: 1050px !important;
    min-width: 1050px !important;
    table-layout: fixed !important;
  }

  #bloqueFinanzasCostos .tabla-honorarios-personalizada,
  #bloqueFinanzasCostos .tabla-costo-personalizado,
  #bloqueFinanzasCostos .tabla-labor-contratada {
    width: max-content !important;
    min-width: 900px !important;
    table-layout: auto !important;
  }

  #bloqueFinanzasCostos .tabla-costos-flete th,
  #bloqueFinanzasCostos .tabla-costos-flete td,
  #bloqueFinanzasCostos .tabla-honorarios-personalizada th,
  #bloqueFinanzasCostos .tabla-honorarios-personalizada td,
  #bloqueFinanzasCostos .tabla-costo-personalizado th,
  #bloqueFinanzasCostos .tabla-costo-personalizado td,
  #bloqueFinanzasCostos .tabla-labor-contratada th,
  #bloqueFinanzasCostos .tabla-labor-contratada td {
    white-space: nowrap !important;
  }

  /* En móvil los nombres y textos descriptivos pueden ocupar varias líneas.
     Fechas, cantidades, precios e importes conservan la lectura en una sola línea. */
  #bloqueFinanzasCostos .tabla-costos-flete th:nth-child(3),
  #bloqueFinanzasCostos .tabla-costos-flete td:nth-child(3),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_insumos"] th:nth-child(4),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_insumos"] td:nth-child(4),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_insumos"] th:nth-child(5),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_insumos"] td:nth-child(5),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_maquinaria"] th:nth-child(4),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_maquinaria"] td:nth-child(4),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_maquinaria"] th:nth-child(5),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_maquinaria"] td:nth-child(5),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_imprevistos"] th:nth-child(3),
  #bloqueFinanzasCostos .tabla-costo-personalizado[data-nombre-exportacion="costos_imprevistos"] td:nth-child(3),
  #bloqueFinanzasCostos .tabla-honorarios-personalizada[data-nombre-exportacion="honorarios_contador"] th:nth-child(2),
  #bloqueFinanzasCostos .tabla-honorarios-personalizada[data-nombre-exportacion="honorarios_contador"] td:nth-child(2),
  #bloqueFinanzasCostos .tabla-honorarios-personalizada[data-nombre-exportacion="honorarios_ingeniero_agronomo"] th:nth-child(2),
  #bloqueFinanzasCostos .tabla-honorarios-personalizada[data-nombre-exportacion="honorarios_ingeniero_agronomo"] td:nth-child(2),
  #bloqueFinanzasCostos .tabla-honorarios-personalizada[data-nombre-exportacion="honorarios_ingeniero_mecanico"] th:nth-child(2),
  #bloqueFinanzasCostos .tabla-honorarios-personalizada[data-nombre-exportacion="honorarios_ingeniero_mecanico"] td:nth-child(2),
  #bloqueFinanzasCostos .tabla-honorarios-personalizada[data-nombre-exportacion="honorarios_ingeniero_mecanico"] th:nth-child(3),
  #bloqueFinanzasCostos .tabla-honorarios-personalizada[data-nombre-exportacion="honorarios_ingeniero_mecanico"] td:nth-child(3),
  #bloqueFinanzasCostos .tabla-labor-contratada th:nth-child(2),
  #bloqueFinanzasCostos .tabla-labor-contratada td:nth-child(2),
  #bloqueFinanzasCostos .tabla-labor-contratada th:nth-child(3),
  #bloqueFinanzasCostos .tabla-labor-contratada td:nth-child(3),
  #bloqueFinanzasCostos .tabla-labor-contratada th:nth-child(4),
  #bloqueFinanzasCostos .tabla-labor-contratada td:nth-child(4),
  #bloqueFinanzasCostos .tabla-labor-contratada th:nth-child(5),
  #bloqueFinanzasCostos .tabla-labor-contratada td:nth-child(5) {
    overflow-wrap: break-word;
    white-space: normal !important;
  }

  .tabla-ventas-grano-finanzas th:nth-child(3),
  .tabla-ventas-grano-finanzas td:nth-child(3),
  .tabla-ventas-grano-finanzas th:nth-child(11),
  .tabla-ventas-grano-finanzas td:nth-child(11),
  .tabla-ventas-derivados-finanzas th:nth-child(3),
  .tabla-ventas-derivados-finanzas td:nth-child(3),
  .tabla-ventas-derivados-finanzas th:nth-child(5),
  .tabla-ventas-derivados-finanzas td:nth-child(5),
  .tabla-ventas-derivados-finanzas th:nth-child(10),
  .tabla-ventas-derivados-finanzas td:nth-child(10) {
    min-width: 12rem;
    max-width: 22rem;
    overflow-wrap: break-word;
    white-space: normal !important;
  }

  .tabla-ventas-grano-finanzas th:nth-child(n+5):nth-child(-n+9),
  .tabla-ventas-grano-finanzas td:nth-child(n+5):nth-child(-n+9),
  .tabla-ventas-derivados-finanzas th:nth-child(n+6):nth-child(-n+8),
  .tabla-ventas-derivados-finanzas td:nth-child(n+6):nth-child(-n+8) {
    white-space: nowrap !important;
  }

  /* Acerca únicamente el dibujo del silo al borde izquierdo; el relleno lo acompaña. */
  .resumen-expeller-portada .silo-visual-expeller {
    transform: translate(-20px, -8px) scaleY(0.94);
  }

  /* Evita que el nombre del grano y su emoji desborden las tarjetas laterales. */
  .silos-bolsa-lateral-portada .datos-silo-bolsa-planta p.tipo-grano-silo {
    max-width: 100%;
    gap: 3px;
    font-size: 0.68rem;
    white-space: nowrap;
  }

  .silos-bolsa-lateral-portada .datos-silo-bolsa-planta p.tipo-grano-silo > span {
    font-size: inherit;
  }
}

@media print {
  body:not(.pagina-login) {
    display: block;
    min-height: 0;
  }
}

/* Estándar único de botones verdes. Mantener colores y estados en este bloque.
   btn-success = Tipo 1; btn-outline-success / boton-volver = Tipo 2.
   btn-verde-3 modifica el contorno para la navegación con relleno al pasar. */
:root {
  --verde-1-fondo: #52765f;
  --verde-1-hover: #446653;
  --verde-1-texto: #f4f8f5;
  --verde-2-fondo: #fff;
  --verde-2-texto: #446653;
  --verde-2-borde: #b7cbbf;
  --verde-2-hover: #f4f8f5;
  --verde-2-texto-hover: #315c46;
  --verde-2-borde-hover: #91ae9c;
  --verde-3-texto: #486b35;
  --verde-3-borde: #78935e;
  --verde-3-hover: #58752f;
}

.btn-success,
.btn-verde-1 {
  --bs-btn-color: var(--verde-1-texto);
  --bs-btn-bg: var(--verde-1-fondo);
  --bs-btn-border-color: var(--verde-1-fondo);
  --bs-btn-hover-color: var(--verde-1-texto);
  --bs-btn-hover-bg: var(--verde-1-hover);
  --bs-btn-hover-border-color: var(--verde-1-hover);
}

.btn-outline-success,
.btn-verde-2,
.boton-volver {
  --bs-btn-color: var(--verde-2-texto);
  --bs-btn-bg: var(--verde-2-fondo);
  --bs-btn-border-color: var(--verde-2-borde);
  --bs-btn-hover-color: var(--verde-2-texto-hover);
  --bs-btn-hover-bg: var(--verde-2-hover);
  --bs-btn-hover-border-color: var(--verde-2-borde-hover);
}

.btn-verde-3 {
  --bs-btn-color: var(--verde-3-texto);
  --bs-btn-bg: var(--verde-2-fondo);
  --bs-btn-border-color: var(--verde-3-borde);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--verde-3-hover);
  --bs-btn-hover-border-color: var(--verde-3-hover);
}

:is(.btn-success, .btn-outline-success, .btn-verde-1, .btn-verde-2, .btn-verde-3, .boton-volver) {
  --bs-btn-active-color: var(--bs-btn-hover-color);
  --bs-btn-active-bg: var(--bs-btn-hover-bg);
  --bs-btn-active-border-color: var(--bs-btn-hover-border-color);
  --bs-btn-disabled-color: var(--bs-btn-color);
  --bs-btn-disabled-bg: var(--bs-btn-bg);
  --bs-btn-disabled-border-color: var(--bs-btn-border-color);
  --bs-btn-focus-shadow-rgb: 82, 118, 95;
  color: var(--bs-btn-color);
  background-color: var(--bs-btn-bg);
  border-color: var(--bs-btn-border-color);
  border-radius: 6px;
  box-shadow: none;
}

:is(.btn-success, .btn-outline-success, .btn-verde-1, .btn-verde-2, .btn-verde-3, .boton-volver):not(:disabled):not(.disabled):is(:hover, :focus-visible, :active, .active),
.btn-check:checked + :is(.btn-success, .btn-outline-success, .btn-verde-1, .btn-verde-2, .btn-verde-3) {
  color: var(--bs-btn-hover-color);
  background-color: var(--bs-btn-hover-bg);
  border-color: var(--bs-btn-hover-border-color);
}

:is(.btn-success, .btn-outline-success, .btn-verde-1, .btn-verde-2, .btn-verde-3, .boton-volver):focus-visible {
  outline: 2px solid var(--bs-btn-border-color);
  outline-offset: 3px;
  box-shadow: 0 0 0 3px rgb(82 118 95 / 18%);
}

:is(.btn-success, .btn-outline-success, .btn-verde-1, .btn-verde-2, .btn-verde-3, .boton-volver):is(:disabled, .disabled) {
  color: var(--bs-btn-color);
  background-color: var(--bs-btn-bg);
  border-color: var(--bs-btn-border-color);
  opacity: .65;
  pointer-events: none;
}

/* Limpieza de filtros: mismo gris oscuro en todas las pantallas. */
.btn.btn-limpiar {
  color: #fff;
  background-color: #6c757d;
  border-color: #6c757d;
}

.btn.btn-limpiar:is(:hover, :focus-visible, :active, .active) {
  color: #fff;
  background-color: #5c636a;
  border-color: #565e64;
}

.btn.btn-limpiar:focus-visible {
  box-shadow: 0 0 0 3px rgb(108 117 125 / 30%);
}

.modulo-ajustes .bloque-ajuste-sistema {
  border: 1px solid var(--finanzas-borde);
  border-radius: 12px;
  padding: 16px;
  background: #fff;
}
.modulo-ajustes #bloquePropietariosCampos > div > h4 { display: none; }
.modulo-ajustes [data-nuevo-propietario] { margin-left: auto; }
.modulo-stock .cabecera-stock,
.modulo-stock .boton-historial-inventario { font-size: 1.15rem; }
.modulo-stock .titulo-filtro-inventario { color: var(--finanzas-texto); }
.modulo-stock .boton-historial-inventario {
  padding: 16px;
  background: var(--finanzas-cabecera);
  color: var(--finanzas-texto);
  border-radius: 12px;
}
.modulo-stock .boton-historial-inventario[aria-expanded="true"] {
  border-bottom: 1px solid var(--finanzas-borde);
  border-radius: 12px 12px 0 0;
}
.modulo-stock .paginacion-stock .btn {
  --bs-btn-color: #58616a;
  --bs-btn-bg: #fff;
  --bs-btn-border-color: #c8cfd6;
  --bs-btn-hover-color: #3e464e;
  --bs-btn-hover-bg: #f1f3f5;
  --bs-btn-hover-border-color: #aeb6bf;
}
.paginacion-stock > .row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.paginacion-stock > .row > div { width: auto; padding: 0; }

/* Pesadas comparte las cabeceras y tablas neutras de Finanzas. */
.modulo-pesadas .cabecera-pesadas,
.modulo-stock .cabecera-stock {
  margin: -16px -16px 16px;
  padding: 16px;
  background: var(--finanzas-cabecera);
  color: var(--finanzas-texto);
  border-bottom: 1px solid var(--finanzas-borde);
  border-radius: 12px 12px 0 0;
}
.modulo-pesadas .cabecera-pesadas,
.modulo-pesadas .cabecera-pesadas h4,
.modulo-pesadas .cabecera-pesadas h5 { font-size: 1.15rem; }
.modulo-pesadas .cabecera-pesadas > div { padding: 0; }
.modulo-pesadas .boton-volver {
  --bs-btn-color: #58616a;
  --bs-btn-bg: #fafbfc;
  --bs-btn-border-color: #d9dee3;
  --bs-btn-hover-color: #3e464e;
  --bs-btn-hover-bg: #f1f3f5;
  --bs-btn-hover-border-color: #c8cfd6;
}
.modulo-pesadas .boton-volver:focus-visible {
  box-shadow: 0 0 0 3px rgb(108 117 125 / 18%);
}

/* Finanzas comparte la estructura de Campos con una paleta neutra. */
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) {
  --finanzas-borde: #dedfe1;
  --finanzas-cabecera: #f3f4f5;
  --finanzas-total: #eceef0;
  --finanzas-texto: #454b52;
}
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) .card,
.modulo-finanzas .evolucion-finanzas {
  border: 1px solid var(--finanzas-borde);
  border-radius: 12px;
  box-shadow: none !important;
  background: #fff;
}
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) .card-body { padding: 16px; }
.modulo-finanzas .filtro-finanzas {
  border: 0;
  border-radius: 0;
}
.modulo-finanzas .filtro-finanzas > .card-body { padding: 0 0 8px; }
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) .table {
  --bs-table-hover-bg: #f7f8f9;
  border-color: #e8e9eb;
  text-align: center;
  vertical-align: middle;
}
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) .table > :not(caption) > * { border-width: 0; }
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) .table > :not(caption) > * > * {
  border-width: 0 0 1px;
  border-color: #e8e9eb;
  padding: 10px 8px;
}
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) .table > thead > tr > th {
  background: #f6f7f8;
  color: var(--finanzas-texto);
  border-bottom: 2px solid var(--finanzas-borde);
}
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) .table > tbody > tr:hover > td { background-color: #f7f8f9; }
:is(.modulo-finanzas, .modulo-pesadas, .modulo-ajustes, .modulo-stock) .table > tfoot > tr > * {
  background: var(--finanzas-total);
  color: #343a40;
  padding: 12px 8px;
}
.modulo-finanzas .evolucion-finanzas { padding: 16px; }
.modulo-finanzas .evolucion-cabecera {
  margin: -16px -16px 0;
  padding: 16px;
  border-bottom: 1px solid var(--finanzas-borde);
  border-radius: 12px 12px 0 0;
  background: var(--finanzas-cabecera);
}
.modulo-finanzas .evolucion-cabecera h3,
.modulo-finanzas .cabecera-contenido-finanzas h3 {
  font-size: 1.15rem;
  color: var(--finanzas-texto);
}
.modulo-finanzas .evolucion-cabecera p { margin-bottom: 0; }
.modulo-finanzas .cabecera-contenido-finanzas {
  padding: 16px;
  background: var(--finanzas-cabecera);
  border: 1px solid var(--finanzas-borde);
  border-radius: 12px;
}
.modulo-finanzas .indicador-alquiler.valorizado { background: #eef3fb; color: #304d78; border-color: #dbe4f2; }
.modulo-finanzas .indicador-alquiler.pagado { background: #edf7f3; color: #167761; border-color: #d5eade; }
.modulo-finanzas .indicador-alquiler.pendiente { background: #fcf2ed; color: #a45c35; border-color: #efdfd4; }
.alert.alert-info,
#panelCampanasCampo .alert-info {
  background: #edf7fd;
  color: #365d73;
  border-color: #cfe6f3;
}
.paginacion-ajustes { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; margin-top: 16px; }
.paginacion-ajustes[hidden] { display: none; }
.paginacion-ajustes > :first-child { justify-self: start; }
.paginacion-ajustes > :last-child { justify-self: end; }
.modulo-finanzas .btn-filtrar-finanzas {
  --bs-btn-color: #42484e;
  --bs-btn-bg: #e2e5e8;
  --bs-btn-border-color: #c8cdd2;
  --bs-btn-hover-color: #30363c;
  --bs-btn-hover-bg: #d3d8dd;
  --bs-btn-hover-border-color: #b7bec5;
}
.modulo-finanzas .btn-filtrar-finanzas:focus-visible {
  box-shadow: 0 0 0 3px rgb(114 121 129 / 18%);
}
.modulo-finanzas .filtros-costo-personalizado,
.modulo-finanzas .filtros-categoria-costos,
.modulo-finanzas .filtros-labor-contratada,
.modulo-finanzas .honorario-subseccion > .row {
  border: 0 !important;
  padding: 8px 0 !important;
}
.modulo-finanzas .honorarios-servicios-finanzas { padding-left: 0; }
.modulo-finanzas .honorario-subseccion { border-left: 0; padding-left: 0; }
.modulo-finanzas .honorario-subseccion > summary {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
  font-size: 1rem;
  font-weight: 400 !important;
  cursor: pointer;
}
.modulo-finanzas #bloqueFinanzasAlquileres > h3 {
  margin-bottom: 12px;
  font-size: 1.15rem;
  color: var(--finanzas-texto);
}
.filtros-alquileres { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(220px, 1fr); gap: 12px; align-items: end; }
.filtros-alquileres > label, .filtros-alquileres > div { width: auto; margin: 0; }
@media (min-width: 768px) { .filtros-alquileres [data-bs-target="#modalNuevoContratoAlquiler"] { transform: translateY(-32px); } }
@media (max-width: 767px) { .filtros-alquileres { grid-template-columns: minmax(0, 1fr); } }
.modulo-finanzas details.card > summary {
  background: var(--finanzas-cabecera);
  color: var(--finanzas-texto);
  margin: -16px;
  padding: 16px;
  border-radius: 12px;
}
.modulo-finanzas details.card[open] > summary {
  margin-bottom: 0;
  border-bottom: 1px solid var(--finanzas-borde);
  border-radius: 12px 12px 0 0;
}

.evolucion-ayuda-fila { display: flex; justify-content: flex-end; margin-bottom: 4px; }
.evolucion-ayuda { position: relative; }
.evolucion-ayuda-boton { display: block; width: 16px; height: 16px; padding: 0; border: 0; border-radius: 50%; background: #727981; color: #fff; font: bold italic 13px/16px Georgia, serif; cursor: help; }
.evolucion-ayuda-boton:focus-visible { outline: 2px solid #727981; outline-offset: 3px; }
.evolucion-ayuda-texto { position: absolute; right: 24px; top: 0; z-index: 5; width: 420px; max-width: calc(100vw - 85px); padding: 14px 16px; background: #fff; color: #454b52; border: 1px solid #dedfe1; border-radius: 8px; box-shadow: 0 4px 14px rgb(0 0 0 / 10%); font-size: .85rem; line-height: 1.5; }
.ayuda-alquiler { display: inline-block; margin-left: 8px; vertical-align: middle; }
.ayuda-alquiler .evolucion-ayuda-texto { left: 24px; right: auto; top: 50%; transform: translateY(-50%); font-weight: 400; }
.titulo-importes-periodo { font-size: 1rem; margin-top: 12px; margin-bottom: 8px; cursor: pointer; }
[data-evolucion="paginacion"][hidden] { display: none !important; }
[data-evolucion="estado"]:empty { display: none; }

/* Jerarquia de la portada: todo el almacenamiento y procesamiento pertenece a Los Zorros. */
.contenedor-portada .conjunto-planta-portada h5,
.contenedor-portada .silos-bolsa-lateral-portada .datos-silo-bolsa-planta h5 {
  font-weight: 500;
}

.contenedor-portada .titulo-planta-silos,
.contenedor-portada .plantas-procesamiento-portada h3,
.contenedor-portada .titulo-campos-portada {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 0 0 16px;
  color: #365542;
  font-size: 1.15rem;
  font-weight: 500;
  line-height: 1.4;
  text-align: center;
  letter-spacing: 0;
}
.contenedor-portada .titulo-planta-silos::before,
.contenedor-portada .titulo-planta-silos::after,
.contenedor-portada .plantas-procesamiento-portada h3::before,
.contenedor-portada .plantas-procesamiento-portada h3::after,
.contenedor-portada .titulo-campos-portada::before,
.contenedor-portada .titulo-campos-portada::after {
  content: '';
  flex: 1 0 20px;
  height: 1px;
  background: #dce5df;
}
.contenedor-portada .titulo-planta-silos,
.contenedor-portada .titulo-campos-portada {
  margin-bottom: 24px;
  font-size: clamp(1.25rem, 2vw, 1.55rem);
  font-weight: 500;
  color: #304f3c;
}
.contenedor-portada .titulo-planta-silos {
  margin-top: 22px;
}
.contenedor-portada .titulo-planta-silos::before,
.contenedor-portada .titulo-planta-silos::after,
.contenedor-portada .titulo-campos-portada::before,
.contenedor-portada .titulo-campos-portada::after {
  height: 2px;
  background: #b7cbbb;
}

/* Silo de base plana: coordenadas proporcionales al PNG de 520 x 690. */
.fondo-aplicacion {
  background-color: #fafbf9;
  background-image:
    linear-gradient(to bottom, #fafbf9 10%, rgb(250 251 249 / 98%) 38%, rgb(250 251 249 / 95%) 100%),
    url('../img/silosNocheHorizontal.png');
  background-size: 100% 100%, 100% auto;
  background-position: center, center bottom;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-blend-mode: normal, luminosity;
}
@media (max-width: 767.98px) {
  .fondo-aplicacion {
    background-attachment: scroll;
    background-position: center top;
    background-size: 100% 420px, auto 420px;
    background-image:
      linear-gradient(to bottom, rgb(250 251 249 / 97%), rgb(250 251 249 / 95%) 65%, #fafbf9),
      url('../img/silosNocheHorizontal.png');
  }
}

.silos-principales-portada .silo-visual-base-v3 {
  width: min(100%, 188px);
  height: auto;
  aspect-ratio: 520 / 690;
  margin: 8px auto 10px;
  isolation: isolate;
}
.silo-visual-base-v3 .silo-grano {
  left: 13.1%;
  top: 28.3%;
  width: 69.8%;
  height: 62%;
  clip-path: inset(0 round 0 0 9% 9% / 0 0 2% 2%);
  opacity: .88;
  mix-blend-mode: multiply;
}
.silo-visual-texturizado .silo-grano.verde { --grano-color: #36b962; --grano-sombra: #166334; }
.silo-visual-texturizado .silo-grano.amarillo { --grano-color: #edc044; --grano-sombra: #a87519; }
.silo-visual-texturizado .silo-grano.rojo { --grano-color: #e65a56; --grano-sombra: #922c31; }
.silo-visual-texturizado .silo-grano::after {
  height: clamp(0%, var(--llenado), 100%);
  border-radius: 50% 50% 8% 8% / 7px 7px 3px 3px;
  background:
    linear-gradient(90deg, rgb(0 0 0 / 23%), transparent 24%, rgb(255 255 255 / 18%) 40%, transparent 65%, rgb(0 0 0 / 28%)),
    url('../img/silos/textura_grano.svg'),
    linear-gradient(var(--grano-color), var(--grano-sombra));
  background-size: 100% 100%, 40px 40px, 100% 100%;
  box-shadow: inset 0 3px 2px rgb(255 255 255 / 35%);
}

/* Expeller v3: cuerpo rectangular y tolva, sin colorear patas ni filtro lateral. */
.resumen-expeller-portada .silo-visual-expeller-v3 {
  width: 160px;
  height: auto;
  aspect-ratio: 1080 / 1457;
  transform: translate(5px, -8px);
  isolation: isolate;
}
.silo-visual-expeller-v3 .silo-img-expeller {
  transform: none;
}
.resumen-expeller-portada .silo-visual-expeller-v3 .silo-grano {
  left: 14.5%;
  top: 11.6%;
  width: 56.5%;
  height: 71.3%;
  clip-path: polygon(0 0, 100% 0, 100% 69%, 55% 100%, 45% 100%, 0 69%);
  opacity: .88;
  mix-blend-mode: multiply;
}
.resumen-expeller-portada .info-expeller-portada {
  transform: translate(-12px, -10px);
}
