:root {
  --verde: #2f6b3a; --verde-2: #3f8a4c; --verde-claro: #e8f3e4;
  --fundo: #f5f6f3; --card: #fff; --borda: #dfe3da; --texto: #1f2a1f; --fraco: #667066;
  --baixo: #c0392b; --baixo-bg: #fdecea; --ok: #2e7d32; --ok-bg: #e8f5e9; --alto: #b36b00; --alto-bg: #fff4e0;
  --azul: #1f5d8c; --raio: 8px;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 14px; color: var(--texto);
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--fundo); }
a { color: var(--verde); }
h1 { font-size: 22px; margin: 0 0 4px; } h2 { font-size: 17px; margin: 0 0 10px; } h3 { font-size: 15px; margin: 0; }
.sub { color: var(--fraco); margin: 0 0 18px; }

/* Layout */
#layout { display: grid; grid-template-columns: 220px 1fr; min-height: 100vh; background: linear-gradient(to right, #1e3a24 220px, var(--fundo) 220px); }
aside { background: #1e3a24; color: #dfe9dc; display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; }
/* computador: el menú de la izquierda se desliza (barra de rolamiento) cuando no entra en la pantalla — así se llega a «Salir» sin achicar el zoom */
@media (min-width: 901px) {
  aside { overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #5d8a64 #17301c; }
  aside > * { flex-shrink: 0; }
  aside::-webkit-scrollbar { width: 9px; } aside::-webkit-scrollbar-track { background: #17301c; }
  aside::-webkit-scrollbar-thumb { background: #5d8a64; border-radius: 6px; } aside::-webkit-scrollbar-thumb:hover { background: #7fae86; }
}
.marca { display: flex; gap: 10px; align-items: center; padding: 18px 16px; }
.marca small { display: block; color: #9fb59b; font-size: 12px; }
.logo { background: var(--verde-2); color: #fff; font-weight: 800; border-radius: 8px; padding: 8px 7px; font-size: 13px; }
aside nav { display: flex; flex-direction: column; padding: 8px; gap: 2px; }
aside nav a { color: #dfe9dc; text-decoration: none; padding: 9px 12px; border-radius: 6px; }
aside nav a:hover { background: #2a4d31; } aside nav a.ativo { background: var(--verde-2); color: #fff; }
.usuario { margin-top: auto; padding: 14px 16px; font-size: 12px; color: #9fb59b; display: flex; flex-direction: column; gap: 4px; word-break: break-all; }
main { padding: 24px 28px 60px; min-width: 0; }

/* Componentes */
.btn { background: var(--verde); color: #fff; border: 0; border-radius: 6px; padding: 8px 14px; font: inherit; font-weight: 600; cursor: pointer; text-decoration: none; display: inline-flex; gap: 6px; align-items: center; white-space: nowrap; }
.btn:hover { background: var(--verde-2); } .btn:disabled { opacity: .5; cursor: default; }
.btn.sec { background: #fff; color: var(--verde); border: 1px solid var(--borda); }
.btn.sec:hover { background: var(--verde-claro); }
.btn.perigo { background: var(--baixo); } .btn.azul { background: var(--azul); }
.btn.peq { padding: 4px 10px; font-size: 13px; }
.lnk { background: none; border: 0; color: inherit; text-decoration: underline; cursor: pointer; padding: 0; font: inherit; text-align: left; }
.barra { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 16px; }
.barra .espaco { flex: 1; }
.card { background: var(--card); border: 1px solid var(--borda); border-radius: var(--raio); padding: 16px; margin-bottom: 16px; }
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; margin-bottom: 18px; }
.kpi { background: var(--card); border: 1px solid var(--borda); border-radius: var(--raio); padding: 14px 16px; }
.kpi b { display: block; font-size: 24px; margin-top: 4px; } .kpi span { color: var(--fraco); font-size: 12px; }
input, select, textarea { font: inherit; padding: 7px 9px; border: 1px solid #c9cfc3; border-radius: 6px; background: #fff; color: inherit; }
input:focus, select:focus, textarea:focus { outline: 2px solid #9cc79f; border-color: var(--verde-2); }
label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--fraco); }
.form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.form-grid .inteiro { grid-column: 1 / -1; }
textarea.json { width: 100%; min-height: 420px; font-family: ui-monospace, Consolas, monospace; font-size: 12.5px; }

/* Tabelas */
.tabela-wrap { overflow: auto; border: 1px solid var(--borda); border-radius: var(--raio); background: #fff; }
table { border-collapse: collapse; width: 100%; }
th, td { padding: 6px 9px; border-bottom: 1px solid #edf0ea; text-align: left; white-space: nowrap; }
th { background: #f0f3ed; font-size: 12px; color: #4b564b; position: sticky; top: 0; z-index: 1; }
td.n, th.n { text-align: right; font-variant-numeric: tabular-nums; }
tr:hover td { background: #fafcf8; }
tfoot td { font-weight: 700; background: #f7f9f5; }
tr.clicavel { cursor: pointer; }
.grupo-cab th { text-align: center; background: #e5ece0; }
td input.dose { width: 74px; text-align: right; padding: 4px 6px; }
td input.dose.alterada { background: #fff8d6; border-color: #e0c75a; }
td.sug { color: var(--fraco); font-size: 12.5px; }

/* Status / metas */
.tag { display: inline-block; font-size: 11.5px; padding: 2px 8px; border-radius: 99px; font-weight: 600; }
.tag.emitida { background: var(--ok-bg); color: var(--ok); } .tag.rascunho { background: var(--alto-bg); color: var(--alto); }
.tag.sem { background: #eef0ec; color: var(--fraco); } .tag.cancelada { background: #eee; color: #888; text-decoration: line-through; }
.tag.alto { background: #fff1e0; color: #a35200; }
.baixo { color: var(--baixo); font-weight: 600; } .alto { color: var(--alto); font-weight: 600; } .ok { color: var(--ok); }
td.baixo { background: var(--baixo-bg); } td.alto { background: var(--alto-bg); }
.alerta { background: var(--alto-bg); border: 1px solid #f0d49b; color: #7a4a00; padding: 10px 12px; border-radius: 6px; margin-bottom: 12px; }
.erro-box { background: var(--baixo-bg); border: 1px solid #f3b8b0; padding: 16px; border-radius: 8px; }
.info { background: var(--verde-claro); border: 1px solid #cfe3c8; padding: 10px 12px; border-radius: 6px; margin-bottom: 12px; }
.carregando { padding: 40px; text-align: center; color: var(--fraco); }
.vazio { padding: 30px; text-align: center; color: var(--fraco); }
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { border: 1px solid var(--borda); border-radius: 99px; padding: 4px 11px; background: #fff; text-decoration: none; color: var(--texto); font-size: 13px; }
.chip:hover { border-color: var(--verde-2); } .chip.ativo { background: var(--verde); color: #fff; border-color: var(--verde); }

/* Recomendação */
.rec-grid { display: grid; grid-template-columns: 230px 1fr; gap: 16px; align-items: start; }
.lista-talhoes { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); overflow: hidden; position: sticky; top: 12px; }
.lista-talhoes a { display: flex; justify-content: space-between; align-items: center; gap: 6px; padding: 9px 12px; border-bottom: 1px solid #eef1eb; text-decoration: none; color: var(--texto); }
.lista-talhoes a.ativo { background: var(--verde-claro); font-weight: 600; }
.lista-talhoes small { color: var(--fraco); }
.params { display: flex; gap: 12px; flex-wrap: wrap; align-items: end; }
.params label { min-width: 110px; } .params input { width: 110px; }
.params input[type=checkbox], .params input[type=radio] { width: auto; }
.params fieldset label { min-width: 0; }
.chip-bal { display: inline-flex; gap: 4px; align-items: baseline; padding: 2px 8px; border-radius: 10px; font-size: 13px; white-space: nowrap; }
.chip-bal.sobra { background: #e3f1e0; color: #1e4d27; } .chip-bal.falta { background: #fbe3e1; color: #8a1c12; } .chip-bal.constr { background: #fdf0d8; color: #7a5a12; }

/* Gráficos */
.graficos { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
.grafico { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: 12px; }
.grafico h3 { margin-bottom: 6px; } .grafico svg { width: 100%; height: auto; display: block; }
.barra-meta { height: 10px; background: #eef0ec; border-radius: 99px; overflow: hidden; display: flex; }
.barra-meta i { display: block; height: 100%; }

/* Modal / toast */
.modal-fundo { position: fixed; inset: 0; background: rgba(20, 30, 20, .45); display: grid; place-items: center; z-index: 2000; padding: 16px; }
.modal { background: #fff; border-radius: 10px; width: min(620px, 100%); max-width: 100%; min-width: 0; max-height: 90vh; display: flex; flex-direction: column; }
.modal header, .modal footer { padding: 14px 18px; display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.modal footer { justify-content: flex-end; border-top: 1px solid var(--borda); }
.modal header { border-bottom: 1px solid var(--borda); }
.modal .x { background: none; border: 0; font-size: 22px; cursor: pointer; color: var(--fraco); }
.modal-corpo { padding: 16px 18px; overflow: auto; }
#toasts { position: fixed; right: 16px; bottom: 16px; display: flex; flex-direction: column; gap: 8px; z-index: 2100; }
.toast { background: #1e3a24; color: #fff; padding: 10px 14px; border-radius: 6px; box-shadow: 0 4px 14px rgba(0,0,0,.2); max-width: 420px; }
.toast.erro { background: var(--baixo); }

/* Login */
.login { min-height: 100vh; display: grid; place-items: center; background: linear-gradient(135deg, #1e3a24, #3f8a4c); }
.login form { background: #fff; padding: 30px; border-radius: 12px; width: min(360px, 92vw); display: flex; flex-direction: column; gap: 14px; }

@media (max-width: 900px) {
  #layout { grid-template-columns: 1fr; grid-template-rows: auto 1fr; background: var(--fundo); } aside { position: static; height: auto; }
  aside nav { flex-direction: row; flex-wrap: wrap; } .usuario { display: none; }
  .rec-grid { grid-template-columns: 1fr; } .lista-talhoes { position: static; }
  main { padding: 16px; }
}

/* Tabela da recomendação no formato da planilha */
.planilha table { font-size: 12.5px; }
.planilha th { white-space: normal; text-align: center; vertical-align: bottom; min-width: 58px; line-height: 1.2; }
.planilha td { padding: 3px 6px; }
.planilha th.ed { background: #d8ecd2; }
.planilha td.ed { background: #f1f8ee; }
.planilha th.final, .planilha td.final { background: #b9dca9 !important; }
.planilha th.alvo { background: #bfe0b4; }
.planilha .sub-cab th { background: #eef3ea; font-weight: 600; font-size: 11.5px; }
.planilha .grupo-cab th { font-size: 11.5px; }
.planilha td.cinza { color: #8a948a; }
.planilha td.vermelho, .planilha td.vermelho input { background: #f8c9c2 !important; color: #8f1d10; font-weight: 700; }
.planilha td.aviso input { background: #ffe7b8; }
.planilha td.k-baixo { background: #e53935; color: #fff; font-weight: 700; }
.planilha td.k-medio { background: #fdd835; font-weight: 700; }
.planilha td.k-alto { background: #43a047; color: #fff; font-weight: 700; }
.planilha input.dose { width: 66px; }
.planilha input.cab { width: 58px; padding: 2px 4px; text-align: center; font-size: 12px; margin-top: 3px; }
.planilha select.cab { font-size: 12px; padding: 2px 4px; }
.planilha .fixa { position: sticky; left: 0; z-index: 2; background: #fff; min-width: 70px; }
.planilha .fixa2 { position: sticky; left: 70px; z-index: 2; background: #fff; }
.planilha thead .fixa, .planilha thead .fixa2 { background: #f0f3ed; z-index: 3; }
.planilha tfoot .fixa, .planilha tfoot .fixa2 { background: #f7f9f5; }
.tabela-wrap.planilha { max-height: calc(100vh - 140px); }
details.alerta summary { cursor: pointer; font-weight: 600; }

/* Pestañas de la recomendación */
.abas { display: flex; gap: 4px; flex-wrap: wrap; margin: 4px 0 0; border-bottom: 2px solid var(--verde); }
.aba { background: #e7ede3; border: 1px solid var(--borda); border-bottom: 0; border-radius: 8px 8px 0 0; padding: 9px 16px; font: inherit; font-weight: 600; color: #3b4a3b; cursor: pointer; }
.aba:hover { background: #d8ecd2; }
.aba.ativa { background: var(--verde); color: #fff; border-color: var(--verde); }
.abas + .tabela-wrap { border-top-left-radius: 0; border-top-right-radius: 0; }
/* Columnas angostas para Análisis / Muestra / Lote */
.planilha th.fixa, .planilha td.fixa { min-width: 0; width: 58px; max-width: 58px; padding-left: 4px; padding-right: 4px; font-size: 11.5px; }
.planilha th.fixa2, .planilha td.fixa2 { left: 58px; min-width: 0; width: 34px; max-width: 34px; padding-left: 2px; padding-right: 4px; }
.planilha th.lote, .planilha td.lote { min-width: 0; width: 48px; max-width: 70px; overflow: hidden; text-overflow: ellipsis; font-size: 11.5px; }
.planilha tfoot td.fixa { white-space: normal; font-size: 11px; }

/* Encabezado fijo arriba y columnas Análisis / Muestra / Lote fijas a la izquierda (en todas las pestañas) */
.planilha thead th { position: sticky; z-index: 3; }
.planilha thead th.fixa, .planilha thead th.fixa2, .planilha thead th.lote { z-index: 6; }
.planilha th.lote, .planilha td.lote { position: sticky; left: 92px; width: 72px; min-width: 72px; max-width: 72px; background: #fff; z-index: 2; box-shadow: 2px 0 0 #cfd8c8; }
.planilha thead th.lote { background: #f0f3ed; }
.planilha tfoot td.lote { background: #f7f9f5; }
.planilha td.fixa, .planilha td.fixa2 { z-index: 2; }
.planilha tbody tr:hover td.fixa, .planilha tbody tr:hover td.fixa2, .planilha tbody tr:hover td.lote { background: #fafcf8; }
.planilha thead th.fixa-g { left: 0; z-index: 6; background: #e5ece0; }

/* Recomendación: lotes arriba (en fila) y tabla a todo el ancho */
.rec-topo { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.rec-topo a { display: inline-flex; gap: 8px; align-items: center; padding: 6px 12px; border: 1px solid var(--borda); border-radius: 8px; background: #fff; text-decoration: none; color: var(--texto); font-size: 13px; }
.rec-topo a:hover { border-color: var(--verde-2); }
.rec-topo a.f-pend { background: #fff1de; border-color: #f0c38a; }
.rec-topo a.f-emit { background: #e4f3e0; border-color: #8cc585; }
.rec-topo a.f-entregue { background: #e0ebf9; border-color: #86aee0; }
.rec-topo a .tag { background: rgba(255,255,255,.7); color: inherit; }
.rec-topo a.ativo { box-shadow: 0 0 0 2px #1e3a24; border-color: #1e3a24; font-weight: 600; }
.rec-leyenda { display: flex; gap: 12px; margin: 0 0 6px; font-size: 12px; color: var(--fraco); }
.rec-leyenda span::before { content: ''; display: inline-block; width: 11px; height: 11px; border-radius: 3px; margin-right: 5px; vertical-align: -1px; border: 1px solid; }
.rec-leyenda .f-pend::before { background: #fff1de; border-color: #f0c38a; }
.rec-leyenda .f-emit::before { background: #e4f3e0; border-color: #8cc585; }
.rec-leyenda .f-entregue::before { background: #e0ebf9; border-color: #86aee0; }
.rec-topo small { color: var(--fraco); }
.rec-topo .tag { font-size: 10.5px; padding: 1px 6px; }
#painel-talhao .card { padding: 12px 14px; margin-bottom: 10px; }
#painel-talhao .info, #painel-talhao .alerta { margin-bottom: 6px; padding: 7px 10px; }

/* logos */
.marca-img { display: block; margin: 14px 12px 6px; background: #fff; border-radius: 10px; padding: 8px 10px; }
.marca-img img { display: block; width: 100%; height: auto; }
.marca-lider { margin: auto auto 4px; width: 110px; background: #fff; border-radius: 10px; padding: 8px; }
.marca-lider img { display: block; width: 100%; height: auto; }
.login-logos { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.login-logos img:first-child { height: 92px; } .login-logos img:last-child { height: 62px; }
.login-tit { text-align: center; color: #667066; font-size: 13px; margin-top: -4px; }
.marca-lider + .usuario { margin-top: 0; }
@media (max-width: 900px) { .marca-lider { display: none; } .marca-img { width: 180px; } }
/* ventas / grupos */
.kpi small { display: block; color: #667066; font-size: 12px; margin-top: 4px; font-weight: 400; }
.tag.grupo-sistema360 { background: #e3f1dc; color: #2f6b3a; border: 1px solid #b9dcac; }
.tag.grupo-mapeo { background: #e3ecf8; color: #24508f; border: 1px solid #b7cbe8; }
.marca-chk { border: 1px solid #e3b9b2; background: #fbe9e6; color: #a02a1c; border-radius: 5px; padding: 1px 8px; cursor: pointer; font-weight: 700; }
.marca-chk.on { border-color: #b9dcac; background: #e3f1dc; color: #2f6b3a; }
.marca-ok { color: #2f6b3a; font-weight: 700; } .marca-no { color: #a02a1c; font-weight: 700; }
table.vendas td.c, table.vendas th.c { text-align: center; }
table.vendas .tag { margin: 1px 0; display: inline-block; }
.chk-linha { display: flex; gap: 18px; flex-wrap: wrap; }
.chk-linha label { flex-direction: row !important; align-items: center; gap: 6px; }
.dos-col-painel { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 1100px) { .dos-col-painel { grid-template-columns: 1fr; } }
.kpi small b { display: inline; font-size: inherit; margin: 0; }
.dos-col-painel > .card { min-width: 0; overflow-x: auto; }
table.vendas td.pend { white-space: normal; min-width: 170px; }
table.hist td { vertical-align: top; }
table.hist .mismo { margin-top: 4px; font-size: 12px; background: #fff7e0; border: 1px solid #f0d890; border-radius: 6px; padding: 4px 6px; }
details.info summary { cursor: pointer; }
table.hist select.faz { max-width: 230px; } table.hist .nome-cli { width: 100%; }
table.hist tr:has(.inc:not(:checked)) td:not(:first-child) { opacity: .45; }
.barra-grupo { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: 8px 12px; margin-bottom: 10px; font-size: 13px; }
select.g-linha { padding: 2px 6px; font-size: 12px; border-radius: 12px; }
select.g-linha.grupo-sistema360 { background: #e3f1dc; color: #2f6b3a; border-color: #b9dcac; }
select.g-linha.grupo-mapeo { background: #e3ecf8; color: #24508f; border-color: #b7cbe8; }
[hidden] { display: none !important; }
.modal.larga { width: min(1000px, 100%); }
/* Facturación */
.leyenda-fat { display: flex; gap: 14px; font-size: 12px; color: var(--fraco); margin-top: 4px; }
.leyenda-fat i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: -1px; }
.fat-bar.clic { cursor: pointer; } .fat-bar:hover path, .fat-bar:hover rect[fill^="#"] { filter: brightness(1.12); }
.fat-bar.sel text { fill: var(--verde); }

/* Colectas (muestreador) y seguimiento */
.prog { height: 8px; background: #e6e9e3; border-radius: 99px; overflow: hidden; }
.prog i { display: block; height: 100%; background: #2e7d32; border-radius: 99px; }
.prog.grande { height: 14px; margin-bottom: 8px; } .prog.mini { height: 6px; width: 110px; margin-bottom: 2px; }
.col-resumo .col-info { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 8px; color: var(--fraco); }
.col-resumo .instr { margin-top: 10px; padding: 10px 12px; background: #fffbe8; border: 1px solid #f0e2a8; border-radius: 6px; white-space: pre-wrap; }
.acoes-col { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.lote-col .lote-cab { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 8px; margin-bottom: 10px; }
.lote-col .lote-cab .sub { margin: 2px 0 0; display: inline-block; }
.pontos { display: grid; grid-template-columns: repeat(auto-fill, minmax(46px, 1fr)); gap: 6px; }
.pt { height: 42px; border: 2px solid #c9cfc4; background: #fff; border-radius: 8px; font-weight: 700; font-size: 15px; color: #445; cursor: pointer; touch-action: manipulation; }
.pt.ok { background: #2e7d32; border-color: #2e7d32; color: #fff; }
.obs-lote { margin-top: 10px; display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--fraco); }
.salvar-col { position: sticky; bottom: 0; display: flex; align-items: center; gap: 12px; justify-content: space-between; padding: 12px 16px;
  background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); box-shadow: 0 -2px 10px rgba(0,0,0,.06); margin-top: 10px; z-index: 5; }
.salvar-col.ativo { background: #fff4e0; border-color: #e0a040; }
.filtros-campo { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; margin: 12px 0; }
.filtros-campo input[type=search] { flex: 1 1 260px; padding: 10px; font-size: 15px; }
.filtros-campo label { flex-direction: row; align-items: center; gap: 6px; display: flex; }
.lista-campo { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.item-campo { display: block; text-decoration: none; color: inherit; margin: 0; }
.item-campo:hover { border-color: var(--verde-2); }
.item-campo .ic-top { display: flex; justify-content: space-between; gap: 8px; align-items: flex-start; font-size: 15px; }
.item-campo .ic-nums { display: flex; gap: 14px; margin-top: 6px; font-size: 13px; }
.item-campo .ic-pie { margin: 8px 0 0; font-size: 12px; }
.etapas { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; margin: 12px 0; }
.etapa { border: 1px solid var(--borda); background: #fff; border-radius: var(--raio); padding: 10px 12px; text-align: left; cursor: pointer; border-left-width: 5px; }
.etapa span { display: block; font-size: 12px; color: var(--fraco); } .etapa b { font-size: 22px; }
.etapa.sel { outline: 2px solid var(--verde-2); }
.e-ndvi { border-left-color: #2a7f62; } .tag.e-ndvi { background: #e3f4ec; color: #1d6b50; }
.e-perim { border-left-color: #b26a00; } .tag.e-perim { background: #fff1db; color: #8a5200; }
.e-colectar { border-left-color: #c0392b; } .e-parcial { border-left-color: #e0a040; } .e-enviar { border-left-color: #8e6bbf; }
.e-lab { border-left-color: #1f5d8c; } .e-recom { border-left-color: #b36b00; } .e-entregar { border-left-color: #3f8a4c; } .e-ok { border-left-color: #2e7d32; }
.tag.e-colectar { background: #fdecea; color: #c0392b; } .tag.e-parcial { background: #fff4e0; color: #9a5d00; } .tag.e-enviar { background: #f1ebf8; color: #6a4a99; }
tr.sub-envio td { background: #faf7fd; border-top: 0; font-size: .92em; } tr.sub-envio { cursor: pointer; }
.tag.e-lab { background: #e3ecf8; color: #1f5d8c; } .tag.e-recom { background: #fff4e0; color: #b36b00; } .tag.e-entregar { background: #e8f3e4; color: #2f6b3a; }
.tag.e-ok { background: var(--ok-bg); color: var(--ok); }
.e-facturar { border-left-color: #a0522d; } .tag.e-facturar { background: #fbeee6; color: #8a4520; }
.barra.filtros { gap: 8px; flex-wrap: wrap; }
table.seguimento td { vertical-align: middle; } table.seguimento small.sub { margin: 0; }
table.usuarios input, table.usuarios select { width: 100%; }
.aviso-novo { background: #fff4e0; border-color: #e0a040; }
ol.passos li { margin: 4px 0; }
@media (max-width: 900px) {
  #layout.campo aside { flex-direction: row; flex-wrap: wrap; align-items: center; min-height: 0; padding: 6px 8px; gap: 4px; }
  #layout.campo aside nav { padding: 0; }
  #layout.campo aside .usuario { display: flex; flex-direction: row; justify-content: space-between; align-items: center; margin: 0; padding: 4px 8px; width: 100%; }
  #layout.campo .marca-img { width: 110px; margin: 0; }
  .lista-campo { grid-template-columns: 1fr; }
  .pontos { grid-template-columns: repeat(auto-fill, minmax(52px, 1fr)); } .pt { height: 48px; font-size: 16px; }
}
.lote-cab .espaco { flex: 1; }
.subir-arq { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 4px 0 12px; padding: 10px; background: var(--verde-claro); border-radius: var(--raio); }
h3.arq-tipo { font-size: 13px; color: var(--fraco); margin: 10px 0 4px; text-transform: uppercase; letter-spacing: .03em; }
ul.arquivos { list-style: none; margin: 0; padding: 0; }
ul.arquivos li { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; padding: 6px 0; border-bottom: 1px solid var(--borda); }
ul.arquivos li .sub { margin: 0; font-size: 12px; }
.arq-baixar { font-weight: 600; text-align: left; }
#rec-pend .tabela-wrap { max-height: 380px; overflow: auto; }
input.v-linha { padding: 3px 6px; font-size: 12.5px; width: 150px; border: 1px solid transparent; background: transparent; } input.v-linha:hover, input.v-linha:focus { border-color: var(--borda); background: #fff; }
/* Perímetros */
.perim-grid { display: grid; grid-template-columns: 1fr 300px; gap: 14px; align-items: start; }
.mapa { height: 72vh; min-height: 420px; border-radius: var(--raio); border: 1px solid var(--borda); background: #cfd8cc; position: relative; z-index: 0; isolation: isolate; }
/* controles del mapa más grandes (dedo en el celular) */
.mapa .leaflet-control-zoom, .mapa .leaflet-draw, .mapa .leaflet-control-layers { zoom: 1.1; }
.mapa .leaflet-draw-actions a { font-size: 13px !important; font-weight: 600; }
.mapa .leaflet-draw-tooltip { font-size: 13px; }
.mapa .leaflet-tooltip { font-size: 13px; }
.mapa .leaflet-control-layers label { font-size: 13px; }
.mapa .rot-perim { background: rgba(0,0,0,.55); color: #fff; border: 0; box-shadow: none; font-weight: 700; font-size: 13px; }
.mapa .rot-perim::before { display: none; }
.perim-lista ul { list-style: none; margin: 0; padding: 0; } .perim-lista li { padding: 6px 0; border-bottom: 1px solid var(--borda); display: flex; flex-wrap: wrap; gap: 2px 8px; }
.perim-lista li .sub { margin: 0; font-size: 12px; flex-basis: 100%; }
@media (max-width: 900px) { .perim-grid { grid-template-columns: 1fr; } .mapa { height: 62vh; } }
.docs-pend { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: -4px 0 12px; }
.doc-btn { border: 1px solid var(--borda); background: #fff; border-radius: 99px; padding: 4px 12px; cursor: pointer; font-size: 13px; color: var(--fraco); }
.doc-btn.tem { border-color: #e3b9b2; color: #a02a1c; background: #fdf3f1; } .doc-btn.sel { outline: 2px solid var(--verde-2); }
.doc-btn b { margin-left: 4px; }
.etapa, .doc-btn { text-decoration: none; color: inherit; } a.doc-btn.tem { color: #a02a1c; }
.perim-todos { text-transform: none; letter-spacing: 0; font-weight: 400; }
.ndvi-barra { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: center; background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: 8px 12px; margin-bottom: 10px; font-size: 13px; }
.ndvi-barra label { display: flex; flex-direction: row; align-items: center; gap: 6px; }
.ndvi-leg { display: inline-grid; grid-template-columns: auto auto; column-gap: 60px; } .ndvi-leg i { grid-column: 1 / 3; height: 8px; width: 140px; border-radius: 4px; background: linear-gradient(90deg, #a50026, #f46d43, #fee08b, #a6d96a, #1a9850, #006837); }
.ndvi-leg small { color: var(--fraco); font-size: 11px; }
.ndvi-datas { flex-basis: 100%; display: flex; flex-direction: column; gap: 4px; }
#ndvi-lista { display: flex; flex-wrap: wrap; gap: 6px; }
.ndvi-dia { border: 1px solid var(--borda); border-radius: 99px; padding: 3px 10px; background: #fff; cursor: pointer; font-size: 12.5px; }
.ndvi-dia.limpo { border-color: #9fd09f; background: #eef8ee; } .ndvi-dia.medio { border-color: #e8cf8a; background: #fff8e6; } .ndvi-dia.nublado { color: var(--fraco); }
.ndvi-dia.sel { outline: 2px solid var(--verde-2); font-weight: 700; }
.e-imprimir { border-left-color: #6a8fb3; } .tag.e-imprimir { background: #e8f0f8; color: #3b6591; }
table.comis tr.sel td { background: var(--verde-claro); } table.com-cfg input, table.com-cfg select { width: 100%; }
.marca-chk.parcial { border-color: #e8cf8a; background: #fff8e6; color: #9a5d00; }
tr.aberto td { background: var(--verde-claro); }
tr.cli-det > td { background: #fafbf8; padding: 8px 12px 14px; }
.cli-det-box { display: flex; flex-wrap: wrap; gap: 14px 28px; align-items: flex-start; }
@media (max-width: 900px) { .cli-det-box { position: sticky; left: 0; max-width: calc(100vw - 48px); } }
.cli-faz { min-width: 320px; } table.mini { margin-top: 4px; font-size: 13px; } table.mini th, table.mini td { padding: 3px 8px; }
.tag.atraso { background: #fdecea; color: #c0392b; border: 1px solid #f1b8b0; }
.alerta-entrega.vencida { border-left: 5px solid #c0392b; } .alerta-entrega h2 { font-size: 16px; } .alerta-entrega .chips { display: flex; flex-wrap: wrap; gap: 6px; } .alerta-entrega a.tag { text-decoration: none; font-size: 12.5px; padding: 4px 10px; }

/* pantalla redibujándose después de un cambio: queda en el mismo lugar, un poco atenuada */
.recarregando { opacity: .55; pointer-events: none; transition: opacity .15s; }
.recarregando-quase { pointer-events: none; }

/* contrato Sistema 360 · cronograma de colectas */
.ct-tab td, .ct-tab th { white-space: nowrap; }
.ct-tab .ct-atual { background: #f3f8f1; }
.ct-tab tr.ct-faz td { background: #f5f6f3; font-weight: 700; font-size: 12.5px; color: var(--fraco); }
.ct-tab tfoot td { background: #fafbf8; font-size: 12.5px; }
.ct-cel { border: 1px solid var(--borda); border-radius: 6px; min-width: 54px; padding: 3px 6px; font: inherit; font-weight: 700; font-size: 12.5px; cursor: pointer; line-height: 1.15; }
.ct-cel small { display: block; font-weight: 400; font-size: 11px; opacity: .8; }
.ct-cel.g5 { background: #2f6b3a; color: #fff; border-color: #2f6b3a; }
.ct-cel.g10 { background: #9fcf8f; color: #163d1d; border-color: #7fb470; }
.ct-cel.gr { background: #e3efe0; color: #2f6b3a; border-color: #c6dcc0; }
.ct-cel.g0 { background: #fff; color: #b3b8b0; }
.ct-cel.mini { display: inline-block; min-width: 0; padding: 0 6px; cursor: default; }
.ct-cel:disabled { opacity: .5; }
.ct-feito { font-size: 11px; color: var(--ok); font-weight: 600; margin-top: 2px; }
.ct-prio { display: inline-block; min-width: 34px; padding: 1px 6px; border-radius: 99px; font-weight: 700; font-size: 12px;
  background: color-mix(in srgb, #c0392b calc(var(--p) * 1%), #e8f5e9); color: #1f2a1f; }
.ct-terco { display: inline-block; width: 22px; height: 22px; line-height: 22px; border-radius: 50%; text-align: center; font-weight: 800; font-size: 12px; color: #fff; }
.ct-terco.t0 { background: #1f5d8c; } .ct-terco.t1 { background: #b36b00; } .ct-terco.t2 { background: #7b4fa0; }
.ct-sug { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.ct-sug > div { border: 1px solid var(--borda); border-radius: 8px; padding: 8px 10px; }
.ct-sug ul { margin: 6px 0 0; padding-left: 18px; max-height: 220px; overflow: auto; font-size: 13px; }
@media (max-width: 700px) { .ct-sug { grid-template-columns: 1fr; } }
.ct-cel.feito { box-shadow: inset 0 0 0 2px #1f5d8c; }
.ct-feito.col { color: var(--azul); } .ct-feito.parc { color: var(--alto); }
.ct-tab.modo-col .ct-cel { cursor: copy; }
.ct-modo { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: center; }
.ct-modo label { flex-direction: row; gap: 6px; align-items: center; color: inherit; }

/* panel Biosollo */
.bio-tab td { vertical-align: middle; }
.bio-tab tr.bio-ok td { background: #f6faf4; }
.bio-tab td:nth-child(2) { max-width: 240px; }
.bio-tab td:last-child { min-width: 250px; }
.etapa small.etapa-lab { display: block; font-size: 11.5px; color: var(--azul); margin-top: 2px; }
.pt { position: relative; }
.pt .pt-env { position: absolute; top: 3px; right: 3px; width: 7px; height: 7px; border-radius: 50%; background: var(--azul); }
.salvar-col .quem-col { flex-direction: row; gap: 6px; align-items: center; font-size: 13px; margin-left: auto; margin-right: 8px; }
/* mapa de los puntos de la colecta */
.pt-mk { background: #fff; border: 4px solid #111; border-radius: 50%; color: #111; font: 800 17px/30px system-ui, sans-serif; text-align: center; box-shadow: 0 0 0 2px #fff, 0 2px 6px rgba(0,0,0,.6); box-sizing: border-box; }   /* muestra: blanco, borde grueso, número grande */
.pt-mk.ok { background: #2e9e44; border-color: #0d4a1a; color: #fff; }
.pt-mk.env { background: #1a73e8; border-color: #0b3d8c; color: #fff; }
.lote-mk { background: rgba(0,0,0,.55); color: #fff; font: 600 12px system-ui, sans-serif; padding: 2px 6px; border-radius: 4px; white-space: nowrap; transform: translate(-50%, -150%); }
.lote-cab .btn.peq { margin: 2px 0; }
/* Seguimiento: fila desplegada con los lotes */
tr.det-row > td { background: #f7faf6; padding: 8px 12px 14px; }
tr.det-row table { background: #fff; }
tr.aberta > td { background: #eef5ec; }
.det-lotes .prog.mini { display: inline-block; width: 90px; vertical-align: middle; margin-right: 6px; }
.det-lotes { position: sticky; left: 12px; }

/* secciones que abren y cierran con un clic en el título */
.dobra-cab { cursor: pointer; user-select: none; }
.dobra-cab .seta, details.dobra > summary .seta { display: inline-block; transition: transform .15s; color: var(--fraco); font-size: .85em; width: 1em; }
.dobra-cab.aberto .seta, details.dobra[open] > summary .seta { transform: rotate(90deg); }
.dobra-cab:hover h2 { color: var(--verde, #2f6b3a); }
details.dobra { border: 1px solid var(--borda); border-radius: 8px; margin: 8px 0; background: #fff; }
details.dobra > summary { list-style: none; cursor: pointer; padding: 10px 12px; display: flex; align-items: center; gap: 8px; font-weight: 700; }
details.dobra > summary::-webkit-details-marker { display: none; }
details.dobra > summary .cont { font-weight: 400; color: var(--fraco); font-size: 13px; }
details.dobra > summary .anos-res { margin-left: auto; font-weight: 400; font-size: 12px; color: var(--fraco); }
details.dobra > .dobra-corpo { padding: 0 12px 10px; }
details.dobra.ano { border: 0; border-top: 1px solid var(--borda); border-radius: 0; margin: 0; }
details.dobra.ano > summary { padding: 8px 2px; font-size: 14px; }
details.dobra.ano > .dobra-corpo { padding: 0 2px 8px 22px; }
details.dobra .subir-arq { margin: 0 0 8px; }
.subir-arq .arq-zafra { flex-direction: row; align-items: center; gap: 6px; }
/* tipo de archivo: botones para clic (en vez de lista desplegable) */
.arq-tipos { display: flex; flex-wrap: wrap; gap: 6px; }
.chip-tipo { flex-direction: row; cursor: pointer; }
.chip-tipo input { position: absolute; opacity: 0; pointer-events: none; }
.chip-tipo span { display: inline-block; padding: 5px 12px; border: 1px solid var(--borda); border-radius: 999px; background: #fff; color: var(--texto); font-size: 13px; }
.chip-tipo:hover span { border-color: var(--verde-2); }
.chip-tipo input:checked + span { background: var(--verde); border-color: var(--verde); color: #fff; font-weight: 600; }
.chip-tipo input:focus-visible + span { outline: 2px solid var(--verde-2); outline-offset: 2px; }
/* filtro por grupo en botones (Clientes) */
.seg { display: inline-flex; border: 1px solid var(--borda); border-radius: var(--raio); overflow: hidden; background: #fff; }
.seg button { font: inherit; font-size: 14px; border: 0; border-right: 1px solid var(--borda); background: #fff; color: var(--texto); padding: 8px 14px; cursor: pointer; }
.seg button:last-child { border-right: 0; }
.seg button small { color: var(--fraco); font-size: 12px; margin-left: 2px; }
.seg button:hover { background: var(--verde-claro); }
.seg button.on { background: var(--verde); color: #fff; font-weight: 600; }
.seg button.on small { color: #e8f3e4; }
.g-para.g-sistema360:not(:disabled) { border-color: var(--verde); }
/* archivos por lote */
.tag.lote-arq { background: var(--verde-claro); color: var(--verde); font-weight: 700; }
.arq-match { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: 8px 10px; max-height: 360px; overflow: auto; }
.arq-match-cab { font-size: 13px; margin-bottom: 6px; }
.arq-match td.arq-nome { font-size: 12.5px; word-break: break-all; }
.arq-match select { min-width: 180px; }
.arq-match select.falta { border-color: var(--alto); background: var(--alto-bg); }
.arq-match .st { font-size: 12px; white-space: nowrap; }
.arq-match .st.ok { color: var(--ok); } .arq-match .st.aviso { color: var(--alto); }
/* botones de tipo arriba de cada carpeta de Archivos (filtran la lista) */
.arq-filtro { margin: 0 0 8px; }
.arq-filtro button.chip-tipo { font: inherit; background: none; border: 0; padding: 0; }
.arq-filtro button.chip-tipo small { color: var(--fraco); margin-left: 3px; }
.arq-filtro button.chip-tipo.on span { background: var(--verde); border-color: var(--verde); color: #fff; font-weight: 600; }
.arq-filtro button.chip-tipo.on small { color: #e8f3e4; }
.barra-uso { display: inline-block; vertical-align: middle; width: 140px; height: 8px; background: var(--borda); border-radius: 4px; overflow: hidden; margin: 0 4px; }
.barra-uso span { display: block; height: 100%; background: var(--verde); }
/* aplicación: productos y máquina */
.arq-aplic { margin: 0 0 8px; display: flex; flex-direction: column; gap: 6px; }
.arq-aplic button.chip-tipo { font: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
.arq-aplic button.chip-tipo small { color: var(--fraco); margin-left: 3px; }
.arq-aplic button.chip-tipo.on span { background: var(--verde); border-color: var(--verde); color: #fff; font-weight: 600; }
.arq-aplic button.chip-tipo.on small { color: #e8f3e4; }
.arq-maq { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 13px; }
.arq-maq .maq-dica { margin: 0; }
.tag.prod-arq { background: var(--alto-bg); color: var(--alto); font-weight: 700; }
.tag.arq-prod-ed { border: 0; cursor: pointer; font-family: inherit; font-size: inherit; } .tag.arq-prod-ed.sem { background: #fde8e5; color: var(--baixo); }

/* ===== celular: menú fijo arriba, en una sola línea que se desliza con el dedo ===== */
@media (max-width: 900px) {
  #layout, #layout.campo { display: block; background: var(--fundo); }
  aside, #layout.campo aside {
    position: sticky; top: 0; z-index: 1500; height: auto; min-height: 0;
    flex-direction: row; flex-wrap: nowrap; align-items: center; gap: 6px; padding: 6px 8px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
  }
  .marca-img, #layout.campo .marca-img { width: auto; margin: 0; padding: 3px 6px; flex: none; border-radius: 6px; }
  .marca-img img { height: 30px; width: auto; }
  aside nav, #layout.campo aside nav {
    flex-direction: row; flex-wrap: nowrap; overflow-x: auto; padding: 0; gap: 2px; flex: 1; min-width: 0;
    scrollbar-width: none; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
  }
  aside nav::-webkit-scrollbar { display: none; }
  aside nav a { white-space: nowrap; padding: 8px 10px; font-size: 14px; flex: none; }
  aside .usuario, #layout.campo aside .usuario { display: flex; flex-direction: row; align-items: center; margin: 0; padding: 0 2px; width: auto; flex: none; }
  aside .usuario span { display: none; }
  aside .usuario .lnk { color: #dfe9dc; font-size: 13px; }
  main { padding: 12px 12px 60px; }
  .barra { flex-wrap: wrap; }
}
/* seguimiento del vendedor: solo para ver */
table.so-ver .sel, table.so-ver #sel-todos { display: none; }
table.so-ver span.marca-chk { cursor: default; display: inline-block; }
/* celular, administrador / gestor: arriba logo y Salir; abajo el menú a lo ancho de toda la pantalla */
@media (max-width: 900px) {
  #layout:not(.campo) aside { flex-wrap: wrap; row-gap: 4px; padding: 6px 8px 4px; }
  #layout:not(.campo) aside .usuario { margin-left: auto; }
  #layout:not(.campo) aside .usuario span { display: inline; color: #9fb59b; font-size: 12px; margin-right: 8px; max-width: 45vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #layout:not(.campo) aside nav { order: 3; flex: 1 1 100%; }
  #layout:not(.campo) aside nav a { padding: 9px 12px; font-size: 15px; }
}
.maq-lista { display: flex; flex-direction: column; gap: 6px; }
.maq-op { flex-direction: row; align-items: flex-start; gap: 10px; padding: 8px 10px; border: 1px solid var(--borda); border-radius: 8px; cursor: pointer; color: var(--texto); }
.maq-op:has(input:checked) { border-color: var(--verde); background: var(--verde-claro); }
.maq-op input { margin-top: 3px; }
.maq-op small { display: block; color: var(--fraco); font-size: 12px; }
.rot-campo { display: block; font-size: 13px; color: var(--fraco); margin-bottom: 4px; }
.grupo-op .chip-tipo span { padding: 7px 16px; font-size: 14px; }
.filtros-campo .seg { margin-top: 6px; }
.arq-pasta-bt { cursor: pointer; }
.arq-match tr.nao-inc td { opacity: .45; }
.arq-match tr.nao-inc td:first-child { opacity: 1; }
.arq-drop { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 12px; border: 2px dashed #b9dcac; border-radius: 8px; background: #fff; font-size: 13px; color: var(--fraco); }
.arq-drop.sobre { border-color: var(--verde); background: var(--verde-claro); }
ul.arquivos li.sep-epoca { border-bottom: 0; padding: 10px 0 2px; color: var(--verde); font-size: 13px; text-transform: uppercase; letter-spacing: .03em; gap: 12px; }
ul.arquivos li.sep-epoca .lnk { text-transform: none; letter-spacing: 0; }
.epoca-op .chip-tipo span { padding: 5px 12px; }
.maq-destino { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; }
.arq-sel-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 4px 0 6px; font-size: 13px; }
.arq-sel-bar label { flex-direction: row; align-items: center; gap: 6px; color: var(--texto); }
ul.arquivos li .arq-chk { margin: 0 2px 0 0; align-self: center; }
/* ventana flotante (cargar perímetro): se ve el mapa, se arrastra y se achica */
.modal-fundo.flutuante { background: transparent; pointer-events: none; place-items: start end; padding: 70px 16px 16px; }
.modal-fundo.flutuante .modal { pointer-events: auto; box-shadow: 0 8px 30px rgba(0,0,0,.35); width: min(620px, 96vw); max-height: 80vh; }
.modal-fundo.flutuante .modal header { cursor: move; touch-action: none; background: #f5f7f2; border-radius: 10px 10px 0 0; }
.modal header .min { background: none; border: 1px solid var(--borda); border-radius: 6px; width: 30px; height: 28px; cursor: pointer; margin-left: auto; margin-right: 6px; }
.modal.minimizada .modal-corpo, .modal.minimizada footer { display: none; }
.geo-unir { flex-direction: row; align-items: flex-start; gap: 8px; margin: 4px 0 8px; padding: 8px 10px; background: var(--verde-claro); border-radius: 8px; color: var(--texto); }
.geo-todos { font-size: 13px; margin: 0 0 8px; display: flex; gap: 8px; align-items: center; }
.p-unir-bar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 0 0 8px; }
.perim-lista li .p-sel { margin-right: 6px; }
.geo-num { background: rgba(255,255,255,.9); border: 0; border-radius: 10px; font-size: 13px; padding: 1px 7px; box-shadow: 0 1px 3px rgba(0,0,0,.3); }
.geo-num::before { display: none; }
.geo-n { display: inline-block; min-width: 22px; text-align: center; border-radius: 10px; color: #fff; font-weight: 700; font-size: 12px; padding: 1px 6px; }
#geo-prev tr.geo-dest td { background: #fff7d6; }
.p-todos { flex-direction: row; align-items: center; gap: 4px; font-size: 13px; color: var(--texto); }
.tag-aviso{color:#b85c00;font-weight:700;cursor:help}
/* Recomendaciones: fila que abre la lista de lotes */
.rec-lista tr.rec-fila { cursor: pointer; }
.rec-lista tr.rec-fila:hover td { background: #f3f7f1; }
.rec-seta { display: inline-block; color: #5d7a62; transition: transform .15s; }
.rec-lista tr.rec-fila.aberta .rec-seta { transform: rotate(90deg); }
.rec-lista tr.rec-fila.aberta td { background: #eef5ec; }
.rec-lista tr.rec-det > td { background: #fafcf9; padding: 10px 14px 14px 34px; }
.rec-lotes .rl-tab { width: 100%; border-collapse: collapse; }
.rec-lotes .rl-tab td { padding: 5px 8px; border-bottom: 1px solid #e7ece5; }
.rec-lotes .rl-off td { opacity: .55; }
.rec-lotes .rl-faz td { background: #eef3ec; padding: 7px 8px; border-top: 2px solid #d5dfd1; }
.rec-lotes .rl-faz .btn { margin-left: 4px; }
/* recomendación: la fila que se está editando queda resaltada entera */
.planilha tbody tr:focus-within td, .planilha tbody tr.linha-sel td { box-shadow: inset 0 0 0 999px rgba(255, 205, 40, .38); }
.planilha tbody tr:focus-within td:first-child, .planilha tbody tr.linha-sel td:first-child { border-left: 4px solid #e0a800; }
.planilha tbody tr:focus-within input, .planilha tbody tr.linha-sel input { background: #fffbe6; }

/* Seguimiento por lote (script 71): paso SMS, marcas parciales y etapas secundarias */
.e-sms { border-left-color: #7b5ea7; } .tag.e-sms { background: #f0eaf8; color: #5d4389; }
.tag.mini { font-size: .72em; opacity: .9; margin-top: 2px; display: inline-block; }
table.lotes-rec tr.rec-pend td { background: #fff8ec; }
table.lotes-rec tr.tanda td { background: #f3f6f9; border-top: 2px solid #d5dde5; }
/* ficha del cliente: una fila por lote debajo de la venta */
table.vendas tr.sub-lote td { background: #fafbf8; font-size: .92em; padding-top: 3px; padding-bottom: 3px; }
table.vendas tr.sub-lote td.sub-lote-nome { padding-left: 28px; }
table.vendas tr.sub-lote.tanda-ini td { border-top: 1px dashed #cfd8c8; }
table.vendas tr.sub-lote[hidden] { display: none; }
/* Seguimiento: nombres de los lotes que faltan en cada paso (script 73) */
small.lotes-falta { display: block; white-space: normal; max-width: 220px; margin: 1px 0 3px; color: #8a5a00; font-size: 11px; line-height: 1.25; }
/* subir PDF Carpeta en el Seguimiento: archivo sin lote reconocido */
table.doc-lotes tr.falta-lote td { background: #fff4e0; }
table.doc-lotes tr.novo-lote td { background: #eef7e8; }
table.doc-lotes select { width: auto; }
/* vendedor: sin la columna del SMS (paso interno) */
table.so-ver .col-sms { display: none; }
table.so-ver button.marca-chk { cursor: pointer; }
/* Seguimiento: el nombre del cliente abre su ficha */
a.lnk-cli { color: inherit; text-decoration: none; } a.lnk-cli:hover { text-decoration: underline; }
/* época de los mapas de aplicación / telemetría (se elige después de subir) */
select.tag-sel { width: auto; font-size: 12px; padding: 1px 4px; margin: 0 2px; border-radius: 10px; border: 1px solid #b9d3b4; background: #eef7ea; color: #1e4d2b; font-weight: 600; }
select.tag-sel.sem, .tag.indef { background: #fff4d6; border-color: #e6c46a; color: #7a5a00; }

/* Seguimiento: Pendiente de NDVI (script 100) */
details.alerta-ndvi { border-left: 6px solid #2a7f62; background: #f3fbf7; }
details.alerta-ndvi > summary { cursor: pointer; list-style: none; }
details.alerta-ndvi > summary::-webkit-details-marker { display: none; }
details.alerta-ndvi > summary::before { content: '▸ '; color: #2a7f62; } details.alerta-ndvi[open] > summary::before { content: '▾ '; }
a.aba { text-decoration: none; display: inline-block; }

/* superficie del año (Panel, Seguimiento) y del cliente */
.sup-faixa { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; margin: 0 0 12px; }
.sup-bloco { background: var(--card); border: 1px solid var(--borda); border-left: 5px solid #8a968a; border-radius: var(--raio); padding: 10px 14px; }
.sup-bloco span { color: var(--fraco); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; font-weight: 700; }
.sup-bloco b { display: block; font-size: 24px; margin: 2px 0; } .sup-bloco small { color: #667066; font-size: 12px; }
.sup-bloco.sup-tot { border-left-color: #1f4d29; background: #f3f8f1; } .sup-bloco.sup-sistema360 { border-left-color: #2f8f46; } .sup-bloco.sup-mapeo { border-left-color: #e0a100; }
.sup-barra { display: block; height: 5px; background: #e4e8e1; border-radius: 3px; margin-top: 6px; overflow: hidden; } .sup-barra i { display: block; height: 100%; background: #2f8f46; }
.sup-mapeo .sup-barra i { background: #e0a100; } .sup-tot .sup-barra i { background: #1f4d29; }
.cli-ha { display: inline-block; vertical-align: middle; margin-left: 10px; font-size: 15px; font-weight: 700; color: #1f4d29; background: #e6efe6; border: 1px solid #b9cfb9; border-radius: 999px; padding: 2px 12px; }
.cli-ha small { font-weight: 500; color: #4a5a4a; }
.ct-cel small.ct-pman { color: #b35c00; font-weight: 700; } .ct-cel.g5 small.ct-pman { color: #ffd27a; }
.ct-cel small.ct-pts { cursor: text; border-bottom: 1px dashed currentColor; } .ct-cel small.ct-pts:hover { background: rgba(255,255,255,.35); border-radius: 3px; }
/* colecta estratificada (perfil del suelo) */
.perfil-aviso { background: #f3ecfa; border: 1px solid #cdb6e6; border-left: 4px solid #7b4fa0; border-radius: 6px; padding: 6px 10px; margin: 4px 0 8px; font-size: 13px; color: #3d2456; }
.pt.pt-perf { box-shadow: 0 0 0 2px #7b4fa0; position: relative; } .pt .pt-pf { position: absolute; top: -8px; right: -6px; font-size: 10px; font-style: normal; }
.tag.perfil { background: #f3ecfa; color: #4b2a6b; border: 1px solid #cdb6e6; }
.ct-cel .ct-pf { display: block; font-size: 9px; color: #7b4fa0; font-weight: 700; line-height: 1.1; } .ct-cel.g5 .ct-pf { color: #e9d6ff; }
.ct-cel .ct-pf.pend { color: #b35c00; } .ct-cel.g5 .ct-pf.pend { color: #ffd27a; } .tag.perfil.pend { background: #fff3dc; color: #7a4a00; border-color: #e7c37a; }
.p-forma-bar { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); z-index: 1000; background: #fff; border: 2px solid #ff6a00; border-radius: 8px; padding: 6px 10px; font-size: 13px; max-width: 92%; box-shadow: 0 2px 10px rgba(0,0,0,.25); display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
/* edición de vértices del perímetro: cuadraditos chicos (en pantalla táctil Leaflet los hace de 20 px) */
.leaflet-editing-icon { width: 11px !important; height: 11px !important; margin-left: -5.5px !important; margin-top: -5.5px !important; border-radius: 2px; }
.leaflet-editing-icon.leaflet-edit-move { width: 16px !important; height: 16px !important; margin-left: -8px !important; margin-top: -8px !important; }
.p-modos a { font-size: 16px; line-height: 30px; text-align: center; text-decoration: none; }
.ct-pf-rank { background: #f8f4fc; border: 1px solid #d9c8ea; border-radius: 8px; padding: 8px 10px; margin: 0 0 10px; } .ct-pf-rank table td, .ct-pf-rank table th { padding: 3px 6px; font-size: 13px; }
.ct-tab tr.ct-tot-lab td { border-top: 2px solid #7b4fa0; background: #f3ecfa; }
.ct-tab tr.ct-cobro td { background: #fff8ec; } .ct-tab tr.ct-cobro + tr:not(.ct-cobro) td { border-top: 2px solid #e0a100; }

/* punto del cliente (armar zonas) */
.leaflet-marker-icon.pc-pin{background:none;border:none;font-size:22px;line-height:26px;text-align:center;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6))}

/* colecta en el campo (script 117): estado y botones Iniciar / Pausar / Retomar / Finalizar */
.col-estado { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 8px 10px; border-radius: 8px; margin: 0 0 8px; background: #f3f4f2; border: 1px solid #d6dbd3; font-size: 14px; }
.col-estado.iniciada { background: #e8f6e3; border-color: #7fb487; }
.col-estado.pausada { background: #fff6dd; border-color: #e0b84a; }
.col-estado.finalizada { background: #e8f0fb; border-color: #8fb0e0; }
.col-estado .btn { font-size: 15px; padding: 8px 14px; }

/* colecta: mapa + lista (pendientes / colectados). Tablet acostado (Armor Pad): mapa a la izquierda, lista a la derecha */
#mapa-pts { height: 440px; border-radius: 8px; }
.cc-lado { margin-top: 8px; }
.cc-tit { font-size: 14px; margin: 10px 0 4px; padding: 4px 8px; border-radius: 6px; }
.cc-tit.ok { background: #e8f6e3; color: #1e5a26; } .cc-tit.pend { background: #fff3dd; color: #7a4f00; }
.cc-feitos { display: flex; flex-wrap: wrap; gap: 4px; }
.cc-chip { border: 0; background: #2e9e44; color: #fff; font: 700 13px system-ui, sans-serif; border-radius: 14px; padding: 4px 10px; cursor: pointer; }
.cc-pend { display: flex; flex-direction: column; gap: 4px; }
.cc-row { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; border: 1px solid #e3e6e0; background: #fff; border-radius: 8px; padding: 8px 10px; cursor: pointer; font: inherit; }
.cc-row:active { background: #eef5ff; }
.cc-n { min-width: 34px; height: 34px; border-radius: 50%; border: 2px solid #2e6b34; display: inline-flex; align-items: center; justify-content: center; font-size: 15px; }
.cc-info { flex: 1; display: flex; flex-direction: column; gap: 2px; font-size: 13px; }
.cc-sub { display: block; height: 6px; background: #e6e9e3; border-radius: 3px; overflow: hidden; } .cc-sub i { display: block; height: 100%; background: #1a73e8; }
.cc-d { font-weight: 700; color: #1a73e8; white-space: nowrap; }
@media (orientation: landscape) and (min-width: 880px) {
  .col-campo { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 12px; align-items: start; }
  .cc-mapa { position: sticky; top: 8px; }
  #mapa-pts { height: calc(100vh - 40px); min-height: 420px; }
  .cc-lado { margin-top: 0; max-height: calc(100vh - 40px); overflow: auto; padding-right: 2px; }
  .cc-lado .col-estado .btn { font-size: 16px; padding: 10px 14px; }
}
.cc-quem { display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: 13px; margin: 0 0 6px; }
.cc-quem span { display: inline-flex; align-items: center; gap: 5px; } .cc-quem i { width: 18px; height: 6px; border-radius: 3px; display: inline-block; }
.cc-centro { display: block; width: 34px; height: 34px; line-height: 32px; text-align: center; font-size: 22px; background: #fff; color: #1d3a20 !important; text-decoration: none; cursor: pointer; }

/* colecta en curso: pantalla completa (solo mapa + panel, sin menús) */
.cc-volver { display: inline-flex; }   /* siempre: colectando muestra los menús; si no, vuelve a la pantalla de donde vino */
body.modo-coleta { overflow: hidden; }
body.modo-coleta #mapa-col { position: fixed; inset: 0; z-index: 1800; margin: 0; border-radius: 0; padding: 8px; overflow: auto; background: #fff; }
body.modo-coleta .cc-volver { display: inline-flex; }
body.modo-coleta #mapa-pts { height: 62vh; }
@media (orientation: landscape) and (min-width: 880px) {
  body.modo-coleta .col-campo { height: calc(100vh - 16px); }
  body.modo-coleta #mapa-pts { height: calc(100vh - 16px); }
  body.modo-coleta .cc-lado { max-height: calc(100vh - 16px); }
}
/* colecta en el campo: nombre del lote grande arriba del panel */
.cc-lote { margin: 0 0 8px; padding: 6px 10px; border-left: 6px solid #2e7d32; background: #eef6ee; border-radius: 6px; }
.cc-lote b { display: block; font-size: 30px; line-height: 1.1; font-weight: 800; color: #111; word-break: break-word; }
.cc-lote small { display: block; font-size: 13px; color: #555; margin-top: 2px; }
/* vendedor en la colecta: solo mira (en vivo) */
body.col-so-ver #col-ini, body.col-so-ver #col-pausar, body.col-so-ver #col-fim, body.col-so-ver #col-cancel,
body.col-so-ver .salvar-col, body.col-so-ver [data-todos], body.col-so-ver #envio-lab, body.col-so-ver #prep-off,
body.col-so-ver label:has(#auto-mk), body.col-so-ver #gps { display: none !important; }
body.col-so-ver .pt, body.col-so-ver [data-obs] { pointer-events: none; }
/* colecta en vivo para el cliente (link sin usuario) */
.ver-col { display: flex; flex-direction: column; height: 100vh; background: #f4f5f2; }
.vc-cab { display: flex; align-items: center; gap: 12px; padding: 8px 14px; background: #fff; border-bottom: 1px solid #ddd; }
.vc-cab h1 { margin: 0; font-size: 20px; }
.vc-logo { height: 40px; width: auto; }
.vc-corpo { flex: 1; display: grid; grid-template-columns: 1fr 340px; min-height: 0; }
.vc-mapa, #vc-mapa { height: 100%; min-height: 300px; }
.vc-lado { overflow: auto; padding: 10px 12px; background: #fff; color: #1f2a1f; border-left: 1px solid #ddd; }
.cc-n.ok { background: #2e9e44; color: #fff; border-color: #0d4a1a; }
@media (max-width: 760px) {
  .ver-col { height: auto; }
  .vc-corpo { grid-template-columns: 1fr; }
  .vc-mapa, #vc-mapa { height: 62vh; }
  .vc-lado { border-left: 0; border-top: 1px solid #ddd; }
  .vc-cab h1 { font-size: 16px; } .vc-logo { height: 30px; }
}
/* colectas en vivo */
.tag.vv-curso { background: #e3f6e6; color: #1b6e2c; border: 1px solid #7cc58a; }
.vv-item.vv-ativo { border-left: 5px solid #2e9e44; }
/* cliente con varias ventas en la zafra: una sección por estancia dentro de la tarjeta */
.vv-sec { border-top: 1px solid #e3e6e0; padding-top: 10px; margin-top: 10px; }
.vv-sec .ic-top { margin-bottom: 6px; }
.vv-sec .ic-top b { font-size: 15px; }
.vv-sec.vv-ativo { border-left: 4px solid #2e9e44; padding-left: 8px; }
.vv-agora { font-size: 18px; margin: 4px 0 8px; }
.vv-agora b { font-size: 20px; }
.vv-abas { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin: 0 0 10px; }
.vv-abas button { border: 1px solid #c9d3c6; background: #fff; border-radius: 20px; padding: 7px 14px; font: inherit; cursor: pointer; }
.vv-abas button.ativo { background: #2e7d32; color: #fff; border-color: #2e7d32; }
.vv-abas input { flex: 1; min-width: 200px; margin-left: auto; }
.pt-mk { display: flex; align-items: center; justify-content: center; line-height: 1; }
.pt-mk-p { border-width: 2.5px; box-shadow: 0 0 0 1.5px #fff, 0 1px 4px rgba(0,0,0,.5); }
.tam-pts a { font-size: 13px; font-weight: 700; width: 34px !important; }
.vv-lotes { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.vv-lote { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid #d5dccf; border-radius: 8px; text-decoration: none; color: inherit; background: #fafbf8; }
.vv-lote b { font-size: 16px; } .vv-lote span { color: #555; font-size: 13px; margin-left: auto; } .vv-lote i { font-style: normal; font-size: 20px; color: #2e7d32; }
.vv-lote.agora { border-color: #2e9e44; background: #e9f7ec; } .vv-lote.ok { opacity: .8; }
/* muestreador: colectas en andamiento arriba */
.and-tit { font-size: 18px; margin: 4px 0 8px; }
.and-item { border: 2px solid #e2c66d; background: #fffdf3; }
.and-item.and-curso { border-color: #2e9e44; background: #f2fbf3; }
.and-aviso { background: #fff3cd; border-radius: 6px; padding: 6px 8px; margin: 0 0 6px; font-size: 13px; }
.cc-manual { display: inline-block; margin-left: 4px; padding: 2px 8px; border-radius: 12px; background: #fff3e0; border: 1px solid #ff9800; color: #8a4b00; font-size: 12px; cursor: pointer; }
.vv-alerta { border: 2px solid #ff9800; background: #fff8ec; margin-bottom: 10px; }
.vv-man { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-top: 1px solid #f1dcb6; flex-wrap: wrap; }
.vv-man > span { flex: 1; min-width: 220px; }
.menu-badge { background: #ff9800; color: #fff; border-radius: 10px; padding: 0 6px; font-size: 11px; font-weight: 700; }
.cc-tempo { font-size: 13px; margin: 2px 0 6px; color: #2b4a2f; }
.cc-chip small { font-weight: 400; opacity: .85; }
.cc-aviso-inc { background: #fff3cd; border: 2px solid #e0a800; border-radius: 8px; padding: 8px 10px; margin: 0 0 8px; font-size: 14px; }
.btn-sinc { background: #2e9e44; color: #fff; border: 0; border-radius: 6px; padding: 6px 10px; font-weight: 700; font-size: 13px; cursor: pointer; white-space: nowrap; }
.btn-sinc:disabled { opacity: .7; cursor: wait; }
aside > .btn-sinc { margin: 6px 12px 0; padding: 9px 12px; font-size: 14px; }
@media (max-width: 900px) { aside > .btn-sinc { margin: 0; padding: 7px 10px; flex: none; } }
.pt-mk.zn-num, .pt-mk.zn-num.ok, .pt-mk.zn-num.env { background: none !important; border: 0 !important; border-radius: 0; box-shadow: none !important; filter: drop-shadow(0 1px 2px rgba(0,0,0,.45)); }
/* barra entre el mapa y el panel (ancho del panel y tamaño de la letra) */
.lado-div { display: flex; gap: 6px; justify-content: center; align-items: center; padding: 4px 0; }
.lado-div button { border: 1px solid #c9d1c6; background: #fff; color: #1d3a20; border-radius: 6px; font: 800 14px system-ui, sans-serif; min-width: 34px; height: 32px; cursor: pointer; padding: 0 6px; }
.lado-div button[data-a^="w"], .lado-div .lado-grip { display: none; }
.lado-grip { color: #7d8a78; font-size: 22px; line-height: 1; }
.cc-seguir.on { background: #1a73e8 !important; }
.vc-corpo.com-div { grid-template-columns: minmax(0, 1fr) 40px var(--lado-w, 340px); }
.vc-corpo.com-div .lado-div { flex-direction: column; justify-content: center; background: #eef1ec; border-left: 1px solid #ddd; cursor: col-resize; touch-action: none; }
.vc-corpo.com-div .lado-div button[data-a^="w"], .vc-corpo.com-div .lado-grip { display: inline-block; }
@media (orientation: landscape) and (min-width: 880px) {
  .col-campo.com-div { grid-template-columns: minmax(0, 1fr) 40px var(--lado-w, 360px); gap: 0 6px; }
  .col-campo.com-div .lado-div { flex-direction: column; align-self: stretch; background: #eef1ec; border-radius: 8px; cursor: col-resize; touch-action: none; position: sticky; top: 8px; height: calc(100vh - 40px); }
  body.modo-coleta .col-campo.com-div .lado-div { height: calc(100vh - 16px); }
  .col-campo.com-div .lado-div button[data-a^="w"], .col-campo.com-div .lado-grip { display: inline-block; }
}
@media (max-width: 760px) {
  .vc-corpo.com-div { grid-template-columns: 1fr; }
  .vc-corpo.com-div .lado-div { flex-direction: row; cursor: default; border-left: 0; border-top: 1px solid #ddd; }
  .vc-corpo.com-div .lado-div button[data-a^="w"], .vc-corpo.com-div .lado-grip { display: none; }
}
.lado-div.arr { background: #d6e8d4 !important; }
/* muestreador: pestañas Pendientes / Colectadas */
.abas-campo { display: flex; gap: 8px; margin: 0 0 12px; }
.abas-campo button { flex: 1; max-width: 260px; border: 2px solid #c9d1c6; background: #fff; color: #1d3a20; border-radius: 10px; padding: 10px 14px; font: 700 16px system-ui, sans-serif; cursor: pointer; }
.abas-campo button span { display: inline-block; min-width: 24px; margin-left: 6px; padding: 1px 7px; border-radius: 10px; background: #eef1ec; font-size: 14px; }
.abas-campo button.on { background: #2e7d32; border-color: #2e7d32; color: #fff; }
.abas-campo button.on span { background: rgba(255,255,255,.25); }
/* colecta: envío al laboratorio (arriba, después de los archivos) */
.col-lab { display: flex; align-items: center; gap: 10px 14px; flex-wrap: wrap; padding: 10px 14px; border-left: 5px solid #e0a040; background: #fffaf0; }
.col-lab.ok { border-left-color: #2e9e44; background: #f2fbf3; }
.col-lab span { flex: 1; min-width: 220px; }
body.col-so-ver .col-lab .btn { display: none; }
.rastro-fora { background: #fff3cd; border-radius: 6px; padding: 4px 8px; margin: 0 0 4px; font-size: 13px; }
.tl-prods { display: flex; flex-wrap: wrap; gap: 4px; margin: 4px 0 10px; }
.tl-prods .chip-tipo { font-size: 13px; }
/* telemetría: cambios en la máquina (dosis, mapa, ancho) */
.tl-evbox { margin-top: 12px; }
.tl-evs { max-height: 320px; overflow: auto; display: flex; flex-direction: column; gap: 4px; }
.tl-ev { border: 1px solid #e3e6e0; border-left: 4px solid #607d8b; border-radius: 6px; padding: 5px 7px; font-size: 12px; cursor: pointer; background: #fff; line-height: 1.35; }
.tl-ev:hover { background: #f4f8f2; }
.tl-ev small, .tl-evpop small { display: block; }
.tl-ev .ev-l, .tl-evpop .ev-l { border-left: 3px solid #999; padding-left: 5px; margin-top: 2px; }
.tl-ev .ev-dep, .tl-evpop .ev-dep { color: #2e7d32; margin-top: 2px; }
.tl-evmk span { display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; color: #fff; font-size: 13px; border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.5); }
.tl-evmk { background: none; border: 0; }
.tl-evmaq { border: 1px solid #e3e6e0; border-radius: 6px; background: #fafbf9; }
.tl-evmaq > summary { cursor: pointer; padding: 5px 7px; font-size: 12px; display: flex; align-items: center; gap: 6px; }
.tl-evmaq > summary i { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.tl-evmaq > .tl-ev { margin: 0 4px 4px; }

.e-labok { border-left-color: #6a1b9a; } .tag.e-labok { background: #f3e5f5; color: #6a1b9a; }
.alerta-labok { border-left: 4px solid #6a1b9a; background: #faf3fc; margin-bottom: 10px; }

/* aviso de versión nueva del sistema (abajo, se toca para recargar) */
.aviso-versao { position: fixed; left: 50%; bottom: 14px; transform: translateX(-50%); z-index: 3000; background: #1e3a24; color: #fff; border: 0; border-radius: 22px; padding: 10px 16px; font-size: 14px; box-shadow: 0 4px 14px rgba(0,0,0,.25); cursor: pointer; max-width: calc(100vw - 32px); }

/* precisión del GPS en la colecta (chip) y aviso de antena externa desconectada */
.eu-quad { background: none; border: 0; }
.eu-quad-r { width: 50px; height: 50px; transition: transform .6s ease; filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); }
.gps-chip { display: inline-block; font-size: 12.5px; padding: 3px 9px; border-radius: 12px; background: #eef3ee; color: #1e3a24; }
.gps-chip.bom { background: #e3f4e5; color: #1b6b2a; }
.gps-chip.medio { background: #fff4d6; color: #7a5a00; }
.gps-chip.ruim { background: #fde4e1; color: #a1271b; }
.gps-aviso { background: #fde4e1; color: #7d1d14; border: 2px solid #d9443a; border-radius: 8px; padding: 8px 10px; font-size: 14px; animation: gpsPisca 1.2s ease-in-out infinite alternate; }
@keyframes gpsPisca { from { border-color: #d9443a; } to { border-color: #f6b1aa; } }
/* celular / tablet, VENDEDOR: igual que el administrador — arriba logo, Sincronizar y Salir; abajo el menú a lo ancho */
@media (max-width: 900px) {
  #layout.campo[data-papel="vendedor"] aside { flex-wrap: wrap; row-gap: 4px; padding: 6px 8px 4px; }
  #layout.campo[data-papel="vendedor"] aside .usuario { margin-left: auto; }
  #layout.campo[data-papel="vendedor"] aside .usuario span { display: inline; color: #9fb59b; font-size: 12px; margin-right: 8px; max-width: 40vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #layout.campo[data-papel="vendedor"] aside nav { order: 3; flex: 1 1 100%; }
  #layout.campo[data-papel="vendedor"] aside nav a { padding: 9px 12px; font-size: 15px; }
}
.u-acoes { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }   /* Contraseña · Salir separados */
/* dibujar perímetro punto a punto (desenhopontos.js) */
.dp-vt { width: 18px; height: 18px; margin: 2px; border-radius: 50%; background: #fff; border: 3px solid #1f7a35; box-shadow: 0 1px 4px rgba(0,0,0,.5); cursor: grab; box-sizing: border-box; }
.dp-vt.prim { border-color: #0d47a1; }
.dp-vt.sel { background: #ffd600; border-color: #b26a00; transform: scale(1.25); }
.leaflet-touch .dp-vt { width: 20px; height: 20px; margin: 1px; }
.dp-meio { width: 12px; height: 12px; margin: 1px; border-radius: 50%; background: rgba(255,255,255,.85); border: 2px solid #1f7a35; cursor: copy; box-sizing: border-box; }
.dp-barra { position: absolute; left: 50%; bottom: 14px; transform: translateX(-50%); z-index: 1000; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: center;
  background: rgba(255,255,255,.96); border-radius: 10px; padding: 6px 8px; box-shadow: 0 2px 10px rgba(0,0,0,.35); max-width: calc(100% - 20px); }
.dp-barra .dp-info { font-size: 13px; color: #333; padding: 0 4px; flex: 1 1 100%; text-align: center; }
.dp-barra button { border: 1px solid #c8d2c8; background: #fff; border-radius: 6px; padding: 7px 12px; font-size: 14px; font-weight: 600; cursor: pointer; color: #1f4d29; }
.dp-barra button:disabled { opacity: .45; cursor: default; }
.dp-barra .dp-ok { background: #2f6b3a; color: #fff; border-color: #2f6b3a; }
.vo-cc td { background: #eceff1; font-weight: 600; }   /* faja al voleo: colector central */

.aviso-topo { position: fixed; top: 0; left: 0; right: 0; z-index: 3500; display: flex; gap: 10px; align-items: center; justify-content: center; flex-wrap: wrap; background: #1e3a24; color: #fff; padding: 8px 12px; font-size: 14px; box-shadow: 0 2px 10px rgba(0,0,0,.25); }
.aviso-topo .btn-sinc { font-size: 14px; padding: 7px 12px; }
/* tablet (600–900 px): el menú de arriba baja en 2 líneas en vez de correr de costado (no queda cortado «Panel») */
@media (min-width: 600px) and (max-width: 900px) {
  #layout:not(.campo) aside nav, #layout.campo[data-papel="vendedor"] aside nav { flex-wrap: wrap; overflow-x: visible; row-gap: 2px; }
  #layout:not(.campo) aside nav a, #layout.campo[data-papel="vendedor"] aside nav a { padding: 7px 10px; font-size: 14px; }
}
/* celular: el menú corre de costado, con un margen para que la primera opción no quede cortada */
@media (max-width: 599px) { aside nav { scroll-padding-inline: 12px; padding-left: 2px; } }
/* celular / tablet, VENDEDOR y CLIENTE (portal): arriba logo, Sincronizar y Salir; abajo el menú en 2 líneas (sin cortar opciones) */
@media (max-width: 900px) {
  #layout.campo[data-papel="cliente"] aside { flex-wrap: wrap; row-gap: 4px; padding: 6px 8px 4px; }
  #layout.campo[data-papel="cliente"] aside .usuario { margin-left: auto; }
  #layout.campo[data-papel="cliente"] aside .usuario span { display: inline; color: #9fb59b; font-size: 12px; margin-right: 8px; max-width: 40vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #layout.campo[data-papel="vendedor"] aside nav, #layout.campo[data-papel="cliente"] aside nav {
    order: 3; flex: 1 1 100%; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3px; overflow: visible; padding: 0;
  }
  #layout.campo[data-papel="cliente"] aside nav { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  #layout.campo[data-papel="cliente"] aside nav a { font-size: 12px; padding: 7px 2px; }
  #layout.campo[data-papel="vendedor"] aside nav a, #layout.campo[data-papel="cliente"] aside nav a {
    padding: 7px 4px; font-size: 13px; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: rgba(255,255,255,.06);
  }
  #layout.campo[data-papel="vendedor"] aside nav a[hidden], #layout.campo[data-papel="cliente"] aside nav a[hidden] { display: none; }
  #layout.campo[data-papel="vendedor"] aside nav a .m-txt, #layout.campo[data-papel="cliente"] aside nav a .m-txt { display: inline; }
}
@media (min-width: 600px) and (max-width: 900px) {
  #layout.campo[data-papel="vendedor"] aside nav { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  #layout.campo[data-papel="cliente"] aside nav { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  #layout.campo[data-papel="cliente"] aside nav a { font-size: 13px; }
}

/* celular, CLIENTE: ícono arriba y nombre abajo (entran 5 por línea sin cortar) */
@media (max-width: 599px) {
  #layout.campo[data-papel="cliente"] aside nav a { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 5px 1px; font-size: 11px; line-height: 1.15; }
  #layout.campo[data-papel="cliente"] aside nav a .m-ic { font-size: 17px; }
  #layout.campo[data-papel="cliente"] aside nav a .m-tx { max-width: 100%; overflow: hidden; text-overflow: ellipsis; font-size: 10.5px; letter-spacing: -.2px; }
}

/* futuros por mes (inicio: mercado): tabla compacta, cabe en la tarjeta del celular / tablet */
.fut-tab th, .fut-tab td { padding: 4px 5px; }

/* compra / entrada (depósito): en el celular cada producto es una tarjeta (sin barra de desplazamiento al costado) */
.cp-tab select.pd-prod { max-width: 340px; }
@media (max-width: 900px) {
  .cp-tab thead { display: none; }
  .cp-tab, .cp-tab tbody, .cp-tab tr, .cp-tab td { display: block; width: 100%; }
  .cp-tab tr.pd-it { position: relative; border: 1px solid var(--borda); border-radius: 8px; padding: 8px 34px 8px 10px; margin-bottom: 8px; }
  .cp-tab td { border: 0 !important; padding: 3px 0 !important; text-align: left !important; }
  .cp-tab td[data-l]::before { content: attr(data-l); display: block; font-size: 12px; color: var(--fraco); }
  .cp-tab td.cp-vt:empty { display: none; }
  .cp-tab td.cp-vt { font-weight: 700; }
  .cp-tab select.pd-prod { max-width: 100%; width: 100%; }
  .cp-tab .pd-x { position: absolute; top: 6px; right: 8px; }
}

/* barra de "cargando" (carregando.js): abajo, de lado a lado; no tapa los clics */
#carga-barra { position: fixed; left: 0; right: 0; bottom: 0; z-index: 2200; pointer-events: none; background: #1f4d29; color: #fff; font-size: 14px; box-shadow: 0 -2px 10px rgba(0,0,0,.25); padding-bottom: env(safe-area-inset-bottom); }
#carga-barra .cb-trilho { height: 5px; background: rgba(255,255,255,.25); overflow: hidden; }
#carga-barra .cb-fill { height: 100%; width: 4%; background: #f2c230; transition: width .4s; }
#carga-barra .cb-fill.indet { width: 35%; animation: cb-vai 1.2s ease-in-out infinite; }
@keyframes cb-vai { from { transform: translateX(-100%); } to { transform: translateX(290%); } }
#carga-barra .cb-txt { padding: 7px 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.com-carga #toasts { bottom: 52px; }

/* futuros por mes en pantalla angosta: letra y espacios menores para que entre sin barra al costado */
.fut-curto { font-size: 11px; }
.fut-curto th, .fut-curto td { padding: 3px 3px !important; white-space: nowrap; }
.fut-curto th { line-height: 1.1; vertical-align: bottom; }
.fut-mini { font-size: 10px; }
.fut-mini th, .fut-mini td { padding: 2px 2px !important; }

/* TABLAS EN FICHAS (portal: depósito): en celular / tablet cada fila es una ficha, sin arrastrar para el costado */
@media (max-width: 900px) {
  .tabela-wrap:has(> table.t-fichas) { overflow: visible; border: 0; background: transparent; }
  table.t-fichas, table.t-fichas tbody, table.t-fichas tfoot { display: block; width: 100%; }
  table.t-fichas thead { display: none; }
  table.t-fichas tr { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 2px 10px; padding: 8px 10px; margin-bottom: 8px;
    border: 1px solid var(--borda); border-radius: var(--raio); background: #fff; }
  table.t-fichas td { display: flex; flex-direction: column; align-items: flex-start; text-align: left !important; border: 0 !important; padding: 2px 0 !important; min-width: 0; overflow-wrap: anywhere; white-space: normal !important; overflow: hidden; }
  table.t-fichas td * { white-space: normal !important; max-width: 100%; }
  table.t-fichas td::before { content: attr(data-r); font-size: 11px; color: var(--sub, #6b7a68); font-weight: 400; line-height: 1.2; }
  table.t-fichas td:first-child, table.t-fichas td.tf-larga { grid-column: 1 / -1; font-size: 15px; display: block; }
  table.t-fichas td:first-child::before, table.t-fichas td.tf-larga::before, table.t-fichas td:not([data-r])::before { content: none; }
  table.t-fichas td:empty { display: none; }
}
/* portal: dentro de la lista agrupada (trabajo → aplicación → lote) la ficha no repite el título */
.pa-corpo .pa-tit { display: none !important; }
details.dobra > summary { flex-wrap: wrap; }
/* portal del cliente (celular): nunca arrastrar la página para el costado */
html:has(#layout[data-papel="cliente"]), body:has(#layout[data-papel="cliente"]) { overflow-x: clip; }

.m-svg { height: 1.2em; width: auto; vertical-align: -0.25em; display: inline-block; }
#layout.campo[data-papel="cliente"] aside nav a .m-ic .m-svg { height: 19px; vertical-align: top; margin-top: 1px; }
.mq-ic .m-svg { height: 34px; width: auto; display: block; }
.ic-sec > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; }
.ic-sec > summary::-webkit-details-marker { display: none; }
.ic-sec > summary h3 { margin: 0; flex: 1; }
.ic-sec > summary::after { content: '▾ minimizar'; font-size: 12px; color: #667066; border: 1px solid #d5ddd5; border-radius: 999px; padding: 2px 10px; white-space: nowrap; }
.ic-sec:not([open]) > summary::after { content: '▸ abrir'; }
/* dibujito de máquina al lado del texto (títulos, pestañas, listas): el mismo del menú */
.ic-in { display: inline-block; vertical-align: -0.28em; } .ic-in .m-svg { height: 1.35em; width: auto; display: block; }
/* Finanzas en el menú: $ verde claro */
.m-fin { color: #8fe08a; font-weight: 800; font-family: system-ui, sans-serif; }
#layout.campo[data-papel="cliente"] aside nav a .m-fin { font-size: 20px; line-height: 19px; }
#demo-aviso { position: fixed; left: 50%; bottom: 14px; transform: translateX(-50%); z-index: 2050; background: #2b3236; color: #fff; padding: 8px 10px 8px 14px; border-radius: 999px; font-size: 13px; box-shadow: 0 6px 18px rgba(0,0,0,.25); display: flex; gap: 10px; align-items: center; white-space: nowrap; max-width: calc(100vw - 24px); }
#demo-aviso button { background: #f2b632; color: #222; border: 0; border-radius: 999px; padding: 4px 12px; font-weight: 700; cursor: pointer; }
/* usuarios online (script 200) */
.tag.st-online { background: #e3f4e5; color: #1b6b2a; } .tag.st-inactivo { background: #fff4e0; color: #9a5d00; } .tag.st-offline { background: #eef0ec; color: #777; }

/* PORTAL (computadora): cada fila de las listas en UNA línea (lo de abajo va al lado; si no entra, se desplaza al costado).
   En celular / tablet siguen las fichas (t-fichas). */
@media (min-width: 901px) {
  #pt-x .tabela td { white-space: nowrap; padding-top: 4px; padding-bottom: 4px; }
  #pt-x .tabela td br { display: none; }
  #pt-x .tabela td br + small, #pt-x .tabela td br + span, #pt-x .tabela td br + b { margin-left: 6px !important; }
  #pt-x .tabela td > div:not(.tabela-wrap) { display: inline-block; vertical-align: middle; margin: 0 0 0 6px !important; }
  #pt-x .tabela td > div[style*="height:5px"] { width: 80px; }
  #pt-x .tabela td[colspan] { white-space: normal; }
}

/* PUNTO EXTRA (mancha): ventana para marcarla (extras.js) y marcas en la colecta */
.modal.mx-modal { width: min(980px, 100%); }
.mx-ferr { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 6px; }
.mx-ferr .btn.on { background: #ff6d00; border-color: #ff6d00; color: #fff; }
.mx-arq { cursor: pointer; }
.mx-cola { display: flex; gap: 6px; margin-bottom: 6px; }
.mx-cola input { flex: 1; min-width: 0; }
.mx-mapa { height: min(52vh, 480px); border-radius: 8px; }
.mx-info { font-size: 13px; margin: 6px 0; min-height: 18px; }
.mx-raio { flex-direction: row; flex-wrap: wrap; gap: 6px; align-items: center; font-size: 13px; }
.mx-raio input { width: 72px; padding: 3px 6px; }
.pt.pt-extra { border-color: #ff6d00; color: #e65100; font-weight: 800; }
.pt.pt-extra.ok { color: #fff; }
.ex-aviso { border-left: 4px solid #ff6d00; background: #fff4e5; padding: 8px 10px; border-radius: 6px; margin: 4px 0 8px; font-size: 14px; }
.ex-aviso .ex-it { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-top: 6px; }
button.tag.ndvi-lt { border: 1px solid #b9c7e8; background: #eef3fd; color: #1a56b0; cursor: pointer; }
button.tag.ndvi-lt:hover { background: #dce7fb; }
/* puntos de perfil (20-40…) en el mapa y en la lista de la colecta */
.zn-num .pf-badge { position: absolute; left: 50%; top: 100%; transform: translateX(-50%); margin-top: 1px; background: #7b1fa2; color: #fff; font: 700 11px system-ui, sans-serif;
  padding: 1px 6px; border-radius: 9px; white-space: nowrap; box-shadow: 0 1px 3px rgba(0,0,0,.45); pointer-events: none; }
.cc-info .pf-tag { display: inline-block; background: #f3e5f5; color: #6a1b9a; font-weight: 700; font-size: 11.5px; padding: 0 6px; border-radius: 8px; margin-right: 4px; }
.pf-campo { background: #f3e5f5; color: #4a148c; border-radius: 8px; padding: 5px 8px; margin: 6px 0 0; font-size: 13px; }
.vv-lote .pf-mini { font-style: normal; color: #6a1b9a; font-weight: 700; }
/* colecta por lote: lista de lotes */
.lotes-escolha { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.lote-escolha { display: block; color: inherit; text-decoration: none; margin: 0; border: 2px solid transparent; }
.lote-escolha:hover { border-color: var(--verde, #2e7d32); }
.lote-escolha.ok { background: #f1f8f1; } .lote-escolha .le-top { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; font-size: 17px; }
.lote-escolha .le-ir { display: inline-block; margin-top: 8px; font-weight: 700; color: var(--verde, #2e7d32); }
.lote-escolha .ic-nums { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 6px; font-size: 14px; }
.zn-num .pf-badge.feita { background: #2e7d32; }
.cc-info .pf-tag.feita { background: #e3f4e5; color: #1b6b2a; }
.perfil-aviso .pf-status { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.pf-chip { border: 1.5px solid #9c4dcc; background: #fff; color: #6a1b9a; border-radius: 14px; padding: 3px 10px; font-weight: 700; cursor: pointer; font-size: 13px; }
.pf-chip.on { background: #2e7d32; border-color: #2e7d32; color: #fff; }
#pf-wrap .pf-zona:hover { fill-opacity: .22; stroke: #fff; stroke-width: 2; }
.lote-escolha { cursor: pointer; }
.lote-escolha .le-arqs { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.lote-abas { display: flex; gap: 6px; overflow-x: auto; padding: 2px 0 8px; margin-bottom: 4px; }
.lote-aba { flex: 0 0 auto; border: 1.5px solid var(--borda, #ccd); border-radius: 18px; padding: 5px 12px; text-decoration: none; color: inherit; background: #fff; font-weight: 600; font-size: 14px; }
.lote-aba small { color: var(--fraco, #777); font-weight: 400; }
.lote-aba.on { background: var(--verde, #2e7d32); border-color: var(--verde, #2e7d32); color: #fff; } .lote-aba.on small { color: #e8f5e9; }
.lote-aba.ok:not(.on) { border-color: #2e7d32; }
body.modo-coleta .lote-abas { display: none; }
/* mapa 20-40 dentro del aviso del lote */
.pf-mapa-box { margin-top: 8px; background: #fff; border: 1px solid #cdb6e6; border-radius: 6px; padding: 6px; }
.pf-mapa-bar { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 6px; }
.pf-mapa-bar .pf-gps { font-weight: 700; color: #1565c0; font-size: 13px; }
.pf-mapa { height: 380px; border-radius: 4px; }
@media (max-width: 700px) { .pf-mapa { height: 320px; } }
.pf-mk { width: 30px; height: 30px; border-radius: 50%; border: 2.5px solid #fff; box-shadow: 0 0 0 1.5px #000; color: #fff; font: 700 13px/25px sans-serif; text-align: center; }
/* mapa 0-20 / 20-40 en el lugar del mapa de los puntos */
.cc-mapa { position: relative; }
.mapa-seg { position: absolute; top: 8px; left: 50%; transform: translateX(-50%); z-index: 1200; display: flex; background: #fff; border-radius: 18px; box-shadow: 0 1px 6px rgba(0,0,0,.35); overflow: hidden; }
.mapa-seg button { border: 0; background: #fff; padding: 7px 14px; font-weight: 700; font-size: 13px; cursor: pointer; color: #333; white-space: nowrap; }
.mapa-seg button + button { border-left: 1px solid #ddd; }
.mapa-seg button.on { background: #7b4fa0; color: #fff; }
.mapa-seg button.on[data-mseg=""] { background: #2e7d32; }
.pf-sobre { position: absolute; inset: 0; z-index: 1100; display: flex; flex-direction: column; background: #fff; border-radius: 8px; overflow: hidden; }
.pf-sobre .pf-mapa { flex: 1; height: auto; min-height: 200px; border-radius: 0; }
.pf-sobre .pf-mapa-bar { padding: 6px 8px; margin: 0; border-top: 1px solid #ddd; }
.pf-ley { font-size: 12px; color: #555; padding: 0 8px 6px; }
.pf-mk { position: relative; }
.pf-mk i { position: absolute; right: -6px; top: -6px; background: #2e7d32; color: #fff; border: 1.5px solid #fff; border-radius: 50%; width: 15px; height: 15px; font: 700 10px/12px sans-serif; font-style: normal; }
/* mapa en pantalla completa (botón ⛶) */
.cc-tela { font-size: 18px; line-height: 30px !important; text-align: center; font-weight: 700; }
.cc-mapa.cheia { background: #000; position: relative !important; top: 0 !important; }
.cc-mapa.cheia #mapa-pts { height: 100vh !important; min-height: 0; border-radius: 0; }
.cc-mapa.cheia .pf-sobre { border-radius: 0; }
/* 0-20 / estratificada al lado del nombre del lote (muestreador) */
.lote-modos { display: inline-flex; vertical-align: middle; margin-left: 8px; border-radius: 16px; overflow: hidden; border: 1.5px solid #7b4fa0; }
.lote-modos button { border: 0; background: #fff; color: #333; font: 700 14px/1 system-ui, sans-serif; padding: 7px 14px; cursor: pointer; }
.lote-modos button + button { border-left: 1.5px solid #7b4fa0; color: #6a1b9a; }
.lote-modos button.on { background: #2e7d32; color: #fff; }
.lote-modos button + button.on { background: #7b4fa0; color: #fff; }
.mx-fotos { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 6px 0 2px; }
.mx-fl { display: flex; gap: 6px; flex-wrap: wrap; }
.mx-ft { position: relative; width: 64px; height: 64px; border-radius: 6px; overflow: hidden; background: #e7ece7; }
.mx-ft img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mx-ft button { position: absolute; top: 2px; right: 2px; border: 0; border-radius: 50%; width: 20px; height: 20px; padding: 0; font-size: 11px; line-height: 20px; background: rgba(0,0,0,.6); color: #fff; cursor: pointer; }
.leaflet-tooltip.rot-vizinho { background: rgba(255,255,255,.18); color: #fff; border: 1px dashed rgba(255,255,255,.6); box-shadow: none; font-weight: 600; font-size: 11.5px; padding: 1px 5px; text-shadow: 0 0 3px #000, 0 0 2px #000; pointer-events: none; }
.leaflet-tooltip.rot-vizinho::before { display: none; }

/* ===== PLANTABILIDAD (#/plantabilidad, script 228) ===== */
:root { --pa-ok: #3e8e41; --pa-duplo: #d98a14; --pa-falha: #c8412f; --pa-planta: #2f5d31; --pa-linha: #d7ddd2;
  --pa-ok-s: #e3f1e1; --pa-duplo-s: #fbecd3; --pa-falha-s: #f8dfda; --pa-amar-s: #fbf1d2; --pa-amar: #e8b92f; }
.pa-campos { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px 12px; }
.pa-campos label, .pa-conteo label { min-width: 0; }
.pa-calc { display: block; padding: 7px 0; font-weight: 600; font-variant-numeric: tabular-nums; }
.pa-seg { display: inline-flex; border: 1px solid #cfd6c9; border-radius: 8px; overflow: hidden; width: max-content; }
.pa-seg button { border: 0; background: #fff; color: inherit; font: inherit; font-weight: 600; padding: 6px 14px; cursor: pointer; }
.pa-seg button[aria-pressed="true"] { background: #3e7b3f; color: #fff; }
.pa-seg-peq button { padding: 4px 10px; font-size: 13px; }
.pa-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin: 12px 0 8px; }
.pa-kpi { background: #fff; border: 1px solid #dde2d6; border-radius: 10px; padding: 10px 12px; display: grid; gap: 2px; align-content: start; }
.pa-kpi > span { font-size: 11.5px; text-transform: uppercase; letter-spacing: .5px; color: #5d6b5f; font-weight: 600; }
.pa-kpi > b { font-size: 22px; font-variant-numeric: tabular-nums; }
.pa-kpi small { color: #5d6b5f; }
.pa-kpi.pa-mal { border-color: var(--pa-falha); background: var(--pa-falha-s); } .pa-kpi.pa-mal > b { color: var(--pa-falha); }
.pa-kpi.pa-bien { border-color: var(--pa-ok); background: var(--pa-ok-s); } .pa-kpi.pa-bien > b { color: var(--pa-ok); }
.pa-t-otima, .pa-t-boa { color: var(--pa-ok); } .pa-t-regular { color: var(--pa-duplo); } .pa-t-ruim { color: var(--pa-falha); }
.pa-barra { display: flex; height: 9px; border-radius: 5px; overflow: hidden; background: #e6e9e2; margin-top: 4px; }
.pa-barra i { display: block; height: 100%; }
.pa-prod { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) minmax(0, 1.1fr); gap: 10px; align-items: stretch; margin: 0 0 8px;
  background: #fff; border: 1px solid #dde2d6; border-top: 4px solid var(--pa-amar); border-radius: 10px; padding: 12px; }
.pa-prod > div { display: grid; gap: 2px; align-content: start; min-width: 0; }
.pa-prod span { font-size: 11.5px; text-transform: uppercase; letter-spacing: .5px; color: #5d6b5f; font-weight: 600; }
.pa-prod b { font-size: 21px; font-variant-numeric: tabular-nums; } .pa-prod small { color: #5d6b5f; }
.pa-prod .pa-prod-seta { align-self: center; font-size: 22px; color: #5d6b5f; }
.pa-prod .pa-prod-lote { background: var(--pa-amar-s); border-radius: 8px; padding: 8px 10px; }
@media (max-width: 720px) { .pa-prod { grid-template-columns: minmax(0, 1fr); } .pa-prod .pa-prod-seta { display: none; } }
.pa-aviso { border-radius: 8px; padding: 9px 12px; background: var(--pa-amar-s); border: 1px solid var(--pa-amar); margin: 0 0 8px; }
.pa-aviso-mal { background: var(--pa-falha-s); border-color: var(--pa-falha); } .pa-aviso-bien { background: var(--pa-ok-s); border-color: var(--pa-ok); }
.pa-ponto { display: grid; gap: 8px; margin-bottom: 10px; }
.pa-ponto-top { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.pa-ponto-top .pa-pnome { width: 130px; font-weight: 700; }
.pa-conteo { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 8px; }
.pa-ponto textarea { font-family: ui-monospace, Menlo, monospace; width: 100%; }
.pa-tira-wrap { overflow-x: auto; }
.pa-tira { position: relative; width: 100%; min-width: 560px; height: 66px; }
.pa-tira-lin { position: absolute; left: 0; right: 0; top: 30px; width: 100%; height: 6px; overflow: visible; }
.pa-broto { position: absolute; top: 12px; width: 16px; height: 21px; line-height: 0; }
.pa-gap { position: absolute; top: 38px; transform: translateX(-50%); font-size: 11px; font-weight: 600; color: var(--pa-falha); }
.pa-metro { position: absolute; bottom: 0; transform: translateX(-50%); font-size: 11px; color: var(--fraco, #667); white-space: nowrap; }
.pa-metro0 { transform: none; }
.pa-nums { display: flex; gap: 6px 14px; flex-wrap: wrap; align-items: center; font-size: 13.5px; color: #5d6b5f; }
.pa-nums b { color: #1d2a1e; font-variant-numeric: tabular-nums; }
.pa-pill { font-size: 12.5px; font-weight: 600; border-radius: 999px; padding: 2px 10px; white-space: nowrap; }
.pa-otima, .pa-boa { background: var(--pa-ok-s); color: var(--pa-ok); } .pa-regular { background: var(--pa-duplo-s); color: var(--pa-duplo); }
.pa-ruim { background: var(--pa-falha-s); color: var(--pa-falha); } .pa-sem { background: #eee; color: #666; }
.pa-txt-mal { color: var(--pa-falha); } .pa-txt-bien { color: var(--pa-ok); }
.pa-leg { display: inline-flex; gap: 6px; align-items: center; font-size: 13px; color: #5d6b5f; }
.pa-leg i { display: inline-block; width: 18px; height: 6px; border-radius: 3px; margin-left: 6px; }
.pa-linha-av { cursor: pointer; } .pa-linha-av:hover td { background: #f4f7f1; }

/* ===== DEPÓSITO · Panel de la zafra y Lista de compras (portal, script 229) ===== */
:root { --dc-stock: #2f6b31; --dc-comprado: #8cc488; --dc-falta: #c8412f; --dc-falta-s: #f8dfda; --dc-sobra: #2c7fb8; --dc-sobra-s: #e0eef8; --dc-atn: #b26a00; --dc-atn-s: #fbecd3; --dc-soft: #f6f8f3; }
.dc-abas { display: flex; gap: 4px; border-bottom: 1px solid var(--borda); margin: 4px 0 12px; flex-wrap: wrap; }
.dc-abas button { border: 0; background: none; color: var(--fraco); font: inherit; font-weight: 600; font-size: 15px; padding: 8px 12px; cursor: pointer; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.dc-abas button[aria-selected="true"] { color: var(--texto); border-bottom-color: #3e7b3f; }
.dc-bar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.dc-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-bottom: 12px; }
.dc-kpi { background: var(--card); border: 1px solid var(--borda); border-radius: 10px; padding: 10px 12px; display: grid; gap: 2px; align-content: start; }
.dc-kpi > span { font-size: 11.5px; color: var(--fraco); font-weight: 600; text-transform: uppercase; letter-spacing: .5px; }
.dc-kpi > b { font-size: 22px; font-variant-numeric: tabular-nums; } .dc-kpi > small { color: var(--fraco); font-size: 12.5px; }
.dc-kpi.mal > b { color: var(--dc-falta); } .dc-kpi.atn > b { color: var(--dc-atn); } .dc-kpi.bien > b { color: var(--dc-stock); }
.dc-anel { height: 7px; border-radius: 4px; background: var(--dc-falta-s); overflow: hidden; margin-top: 4px; } .dc-anel i { display: block; height: 100%; background: var(--dc-stock); }
.dc-card { background: var(--card); border: 1px solid var(--borda); border-radius: 10px; padding: 12px 14px; display: grid; gap: 10px; margin-bottom: 12px; min-width: 0; align-content: start; }
.dc-t { font-size: 17px; }
.dc-leg { display: flex; gap: 14px; flex-wrap: wrap; font-size: 13px; color: var(--fraco); }
.dc-leg i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-right: 5px; vertical-align: -1px; }
.dc-grs { display: grid; gap: 8px; }
details.dc-gr { border: 1px solid var(--borda); border-radius: 10px; background: var(--card); }
details.dc-gr > summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: 16px minmax(150px, 220px) minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 9px 12px; }
details.dc-gr > summary::-webkit-details-marker { display: none; }
.dc-seta { color: var(--fraco); transition: transform .15s; } details.dc-gr[open] .dc-seta { transform: rotate(90deg); }
.dc-gt { font-weight: 700; font-size: 16px; }
.dc-gs { font-size: 13.5px; color: var(--fraco); display: flex; gap: 4px 14px; flex-wrap: wrap; min-width: 0; }
.dc-gs b { color: var(--texto); font-variant-numeric: tabular-nums; } .dc-gs .m, .dc-gs .m b { color: var(--dc-falta); } .dc-gs .v { color: var(--dc-atn); }
.dc-mini { width: 110px; height: 8px; border-radius: 4px; background: var(--dc-falta-s); overflow: hidden; } .dc-mini i { display: block; height: 100%; background: var(--dc-stock); }
details.dc-gr[open] > summary { border-bottom: 1px solid var(--borda); }
.dc-corpo { padding: 10px 12px; display: grid; gap: 10px; }
.dc-pb { display: grid; grid-template-columns: minmax(140px, 240px) minmax(0, 1fr) minmax(120px, 180px); gap: 4px 14px; align-items: center; }
.dc-nm { font-weight: 600; min-width: 0; } .dc-nm small { display: block; font-weight: 400; color: var(--fraco); font-size: 12px; }
.dc-trilho { position: relative; height: 16px; border-radius: 4px; background: var(--dc-soft); overflow: hidden; display: flex; }
.dc-trilho i { display: block; height: 100%; } .dc-marca { position: absolute; top: -3px; bottom: -3px; width: 2px; background: var(--texto); }
.dc-st { display: grid; gap: 2px; justify-items: end; }
.dc-chip { display: inline-block; font-size: 12px; font-weight: 600; border-radius: 999px; padding: 1px 9px; white-space: nowrap; }
.dc-falta { background: var(--dc-falta-s); color: var(--dc-falta); } .dc-ok { background: var(--ok-bg); color: var(--ok); } .dc-sobra { background: var(--dc-sobra-s); color: var(--dc-sobra); } .dc-atn { background: var(--dc-atn-s); color: var(--dc-atn); }
.dc-org { font-size: 11px; font-weight: 600; border-radius: 4px; padding: 1px 6px; color: #fff; white-space: nowrap; }
.dc-org.dc-s360 { background: #3e7b3f; } .dc-org.dc-prog { background: #6b5aa6; } .dc-org.dc-manual { background: #8a6d3b; }
.dc-dos { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 12px; }
.dc-epocas { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.dc-ep { background: var(--dc-soft); border-radius: 8px; padding: 8px 10px; display: grid; gap: 4px; align-content: start; font-size: 13.5px; }
.dc-ep .q { font-size: 12px; color: var(--fraco); }
.dc-ep ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 3px; } .dc-ep li { display: flex; justify-content: space-between; gap: 8px; }
.dc-ep li b { color: var(--dc-falta); white-space: nowrap; font-variant-numeric: tabular-nums; }
.dc-orc { display: grid; grid-template-columns: 140px minmax(0, 1fr) 96px; gap: 10px; align-items: center; font-size: 13.5px; } .dc-orc .v { text-align: right; font-variant-numeric: tabular-nums; }
.dc-als { display: grid; gap: 6px; }
.dc-al { display: flex; gap: 8px; border-radius: 8px; padding: 8px 10px; font-size: 14px; border: 1px solid var(--borda); background: var(--dc-soft); }
.dc-al.venc { background: var(--dc-atn-s); border-color: #e6b062; } .dc-al.min { background: var(--dc-falta-s); border-color: #e0a79e; } .dc-al.info { background: var(--ok-bg); border-color: #9cc79e; }
.dc-tab td { vertical-align: top; } .dc-tab td.r, .dc-tab th.r { text-align: right; white-space: nowrap; }
.dc-prod { min-width: 230px; } .dc-prod > b { display: block; }
.dc-rec { font-size: 12px; color: var(--fraco); } .dc-troca { font-size: 12px; color: var(--dc-atn); font-weight: 600; }
.dc-var, .dc-vinc { display: block; width: 100%; margin-top: 4px; font-size: 13px; padding: 3px 6px; }
.dc-links { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 4px; }
.dc-n { width: 82px; text-align: right; font-variant-numeric: tabular-nums; }
.dc-venc { font-size: 12px; color: var(--dc-atn); margin-top: 2px; }
.dc-aj { background: #fbf1d2; border: 1px solid #f2c23a; border-radius: 8px; padding: 10px 12px; display: grid; gap: 8px; }
.dc-cots { background: var(--dc-soft); border: 1px solid var(--borda); border-radius: 8px; padding: 10px 12px; display: grid; gap: 8px; max-width: 900px; }
.dc-fx { display: flex; gap: 10px; flex-wrap: wrap; align-items: end; } .dc-fx label { font-size: 12px; }
.dc-res { display: grid; gap: 3px; font-size: 14px; } .dc-res .mal { color: var(--dc-falta); font-weight: 600; } .dc-res .ok { color: var(--dc-stock); font-weight: 600; }
.dc-cot { display: grid; grid-template-columns: 24px minmax(0, 1.2fr) 130px minmax(0, 1.5fr) auto; gap: 8px; align-items: center; padding: 2px 4px; }
.dc-cot.el { background: var(--ok-bg); border-radius: 6px; } .dc-cp { display: flex; gap: 6px; align-items: center; }
.dc-barata { font-size: 11.5px; font-weight: 600; color: var(--dc-stock); white-space: nowrap; }
.dc-novo { display: flex; gap: 10px; flex-wrap: wrap; align-items: end; background: var(--dc-soft); border: 1px solid var(--borda); border-radius: 8px; padding: 10px 12px; margin-bottom: 10px; }
.dc-novo label { font-size: 12px; min-width: 0; }
.dc-tot { display: flex; gap: 18px; flex-wrap: wrap; justify-content: flex-end; font-size: 14px; margin-top: 10px; } .dc-tot b { font-variant-numeric: tabular-nums; }
@media (max-width: 820px) {
  .dc-dos { grid-template-columns: minmax(0, 1fr); } .dc-pb { grid-template-columns: minmax(0, 1fr); } .dc-st { justify-items: start; }
  details.dc-gr > summary { grid-template-columns: 16px minmax(0, 1fr); } .dc-gs, .dc-mini { grid-column: 2; }
  .dc-cot { grid-template-columns: 24px minmax(0, 1fr); } .dc-cot > :nth-child(n+3) { grid-column: 2; }
}
.dc-seg { display: inline-flex; border: 1px solid var(--borda); border-radius: 8px; overflow: hidden; }
.dc-seg button { border: 0; background: var(--card); color: var(--texto); font: inherit; font-weight: 600; font-size: 13.5px; padding: 5px 12px; cursor: pointer; }
.dc-seg button[aria-pressed="true"] { background: #3e7b3f; color: #fff; }
.dc-camp { display: inline-block; margin-top: 3px; font-size: 11px; font-weight: 600; border-radius: 4px; padding: 0 6px; }
.dc-c-safra { background: #fdf3d6; color: #8a6200; } .dc-c-safrinha { background: #e6efe0; color: #3e7b3f; }
.dc-c-invierno { background: #efe7d6; color: #7a5a1e; }

/* celular / tablet: menú de arriba CERRADO; «Menú ▾» abre las opciones, el usuario, Contraseña y Salir */
.menu-tog { display: none; }
@media (max-width: 900px) {
  .menu-tog { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; flex: none; max-width: 52vw; cursor: pointer;
    background: rgba(255, 255, 255, .1); color: #fff; border: 1px solid rgba(255, 255, 255, .28); border-radius: 8px; padding: 7px 11px; font-size: 15px; font-weight: 600; font-family: inherit; }
  .menu-tog .mt-tx { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .menu-tog .mt-seta { transition: transform .2s; font-size: 13px; }
  #layout aside.aberto .menu-tog .mt-seta { transform: rotate(180deg); }
  #layout aside:not(.aberto) .usuario { display: none !important; }
  #layout:not(.campo) aside:not(.aberto) nav { display: none !important; }
  #layout aside { flex-wrap: wrap; row-gap: 6px; }
  #layout:not(.campo) aside.aberto nav { order: 3; flex: 1 1 100%; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px;
    overflow: visible; max-height: 65vh; overflow-y: auto; padding: 4px 0 0; }
  #layout:not(.campo) aside.aberto nav a { white-space: normal; padding: 11px 12px; font-size: 15px; background: rgba(255, 255, 255, .06); }
  #layout aside.aberto .usuario { order: 4; flex: 1 1 100%; width: 100%; display: flex !important; flex-direction: column; align-items: flex-start; gap: 8px;
    margin: 4px 0 2px; padding: 10px 6px 4px; border-top: 1px solid rgba(255, 255, 255, .15); }
  #layout aside.aberto .usuario span { display: block !important; max-width: none !important; color: #9fb59b; font-size: 13px; margin: 0; }
  #layout aside.aberto .u-acoes { gap: 18px; }
  #layout aside.aberto .usuario .lnk { font-size: 15px; }
}
@media (min-width: 600px) and (max-width: 900px) {
  #layout:not(.campo) aside.aberto nav { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  #layout:not(.campo) aside.aberto nav a.ativo { background: var(--verde-2); color: #fff; }
}
/* celular: «⇄ Aplic.» va adentro del menú (la barra de arriba queda en una sola línea) */
@media (max-width: 599px) {
  #layout aside:not(.aberto) > .btn-setor { display: none; }
  #layout aside.aberto > .btn-setor { order: 5; }
}

/* ficha del cliente: en celular / tablet las acciones en 2 columnas; las menos usadas en «⋯ Más opciones» */
.cli-mais { display: contents; }
.cli-mais-tog { display: none; }
@media (max-width: 900px) {
  .cli-acoes { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px !important; flex: 1 1 100% !important; width: 100%; margin-top: 8px; }
  .cli-acoes > .btn, .cli-mais > .btn { width: 100%; margin: 0; text-align: center; justify-content: center; white-space: normal; }
  .cli-acoes > #apres { grid-column: 1 / -1; }
  .cli-mais-tog { display: block; grid-column: 1 / -1; }
  .cli-mais-tog .cm-seta { display: inline-block; transition: transform .2s; }
  .cli-acoes.mais-aberto .cli-mais-tog .cm-seta { transform: rotate(180deg); }
  .cli-acoes .cli-mais { display: none; }
  .cli-acoes.mais-aberto .cli-mais { display: grid; grid-column: 1 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
}
.vc-acoes { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; align-items: center; }
@media (max-width: 900px) {
  .vc-acoes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; flex: 1 1 100%; margin-top: 8px; }
  .vc-acoes > .btn { width: 100%; margin: 0; text-align: center; justify-content: center; white-space: normal; }
  .vc-acoes > #apres { grid-column: 1 / -1; order: -1; }
}

/* menú de CUADRADITOS (ícono arriba, nombre abajo) en celular / tablet, igual al del portal del cliente.
   Administrador / gestor: dentro de «Menú ▾». Vendedor / muestreador: siempre a la vista. (El del cliente tiene sus reglas propias.) */
#layout:not([data-papel="cliente"]) aside nav.nav-ic .m-ic { margin-right: 7px; }
@media (max-width: 900px) {
  #layout:not([data-papel="cliente"]) aside nav.nav-ic {
    order: 3; flex: 1 1 100%; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px;
    overflow: visible; max-height: none; padding: 2px 0 0;
  }
  #layout:not([data-papel="cliente"]) aside nav.nav-ic a {
    position: relative; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 2px; min-width: 0;
    padding: 7px 2px 6px; border-radius: 8px; background: rgba(255, 255, 255, .06); color: #dfe9dc;
    text-align: center; white-space: normal; font-size: 11px; line-height: 1.15;
  }
  #layout:not([data-papel="cliente"]) aside nav.nav-ic a.ativo { background: var(--verde-2); color: #fff; }
  #layout:not([data-papel="cliente"]) aside nav.nav-ic a[hidden] { display: none; }
  #layout:not([data-papel="cliente"]) aside nav.nav-ic .m-ic { margin: 0; font-size: 20px; line-height: 24px; height: 24px; }
  #layout:not([data-papel="cliente"]) aside nav.nav-ic .m-tx {
    max-width: 100%; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; hyphens: auto; -webkit-hyphens: auto;
  }
  #layout:not([data-papel="cliente"]) aside nav.nav-ic .menu-badge { position: absolute; top: 2px; right: 2px; margin: 0; font-size: 9.5px; padding: 0 4px; line-height: 15px; }
  #layout:not(.campo) aside:not(.aberto) nav.nav-ic { display: none !important; }
}
@media (min-width: 600px) and (max-width: 900px) {
  #layout:not([data-papel="cliente"]) aside nav.nav-ic { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); }
  #layout:not([data-papel="cliente"]) aside nav.nav-ic a { font-size: 12.5px; padding: 8px 4px 7px; }
  #layout:not([data-papel="cliente"]) aside nav.nav-ic .m-ic { font-size: 22px; }
}
/* ícono SVG del quadriciclo (Colectas) dentro del menú */
aside nav .m-ic .m-quad { height: 17px; width: auto; vertical-align: -3px; }
@media (max-width: 900px) {
  #layout:not([data-papel="cliente"]) aside nav.nav-ic .m-ic .m-quad { height: 24px; vertical-align: top; }
}
@media (max-width: 599px) { .menu-tog { max-width: 38vw; padding: 7px 9px; } }

/* portal · telemetría separada por producto y trabajo */
.tl-portal { display: flex; flex-direction: column; gap: 8px; margin: 6px 0 2px; }
.tl-p-fam { border-left: 3px solid #2f6b3a; padding: 2px 0 2px 10px; display: flex; flex-direction: column; gap: 5px; }
.tl-p-tit { font-size: 13.5px; }
.tl-p-sub { font-size: 12.5px; color: #3c4a3e; margin: 2px 0 3px; }
.tl-p-trab + .tl-p-trab { margin-top: 2px; }
/* depósito · ya aplicado en la zafra y resumen comprado / usado / queda */
:root { --dc-usado: #6b7f3a; }
.dc-uso { font-size: 12px; color: var(--fraco); margin-top: 2px; font-weight: 400; }
.dc-uso b { color: var(--texto); }
.dc-uso .dc-chip { font-size: 11px; padding: 1px 6px; }
.dc-links .lnk { margin-right: 12px; white-space: nowrap; }
