/* ═══ BALANCA WEB MMO LOGIST ═══
   TEMAS: todas as cores vêm destas variáveis. O tema escolhido em
   "Aparência" fica em <html data-tema="...">; o tamanho da letra em
   --esc e o tipo de letra em --fonte (ver /js/prefs.js). */
:root {
  --esc: 1;
  --fonte: 'Segoe UI', system-ui, -apple-system, Roboto, Arial, sans-serif;
  --fonte-mono: Consolas, 'DejaVu Sans Mono', 'Courier New', monospace;
  color-scheme: light;
  --pri: #1a3c6e; --pri-txt: #1a3c6e; --pri2: #2a6db5; --acento: #f7b733;
  --sobre-pri: #fff; --sobre-pri-2: #cfe0f5; --sobre-acento: #222;
  --ok: #1d8f4e; --erro: #c0392b; --alerta: #b07800;
  --ok-bg: #e6f7ec; --erro-bg: #fdecea; --total-bg: #fff5db;
  --fundo: #eef1f5; --sup: #fff; --sup2: #f6f8fb; --hover: #eaf2ff;
  --texto: #222; --texto2: #666; --borda: #e2e6ec; --borda-campo: #bbb;
  --campo: #fffde7; --desat: #eee; --btn-cinza: #d5d9e0; --sobre-btn-cinza: #222;
  --rot-geral: #1a2fbb; --disp-bg: #101418; --disp-txt: #3cff6e;
  --menu-bg: #1a3c6e; --menu-txt: #ffffff; --menu-txt2: #b9cdea; --menu-hover: rgba(255,255,255,.08);
  --menu-act-bg: rgba(247,183,51,.16); --menu-act-txt: #f7b733; --menu-act-borda: rgba(247,183,51,.45);
  --btn-pri: #1a3c6e; --sobre-btn-pri: #fff; --th-bg: #1a3c6e; --th-txt: #fff;
  --topo-bg: #ffffff; --topo-txt: #1a3c6e; --card-borda: #e2e6ec; --raio: 12px;
  --sombra: 0 2px 10px rgba(16,24,40,.08);
  --am: #d97706; --am-bg: rgba(217,119,6,.1); --am-borda: rgba(217,119,6,.3);
  --gr: #1d8f4e; --gr-bg: rgba(29,143,78,.1); --gr-borda: rgba(29,143,78,.3);
  --rd: #c0392b; --rd-bg: rgba(192,57,43,.1); --rd-borda: rgba(192,57,43,.3);
  --pu: #7c3aed; --pu-bg: rgba(124,58,237,.1); --pu-borda: rgba(124,58,237,.3);
  --gy: #6b7280; --gy-bg: rgba(107,114,128,.12); --gy-borda: rgba(107,114,128,.3);
}
/* ═══ TEMA ROBUSTO — o mesmo desenho do Soft Robusto MZ (escuro com âmbar). É o padrão. ═══ */
:root[data-tema="robusto"] {
  color-scheme: dark;
  --pri: #0e1118; --pri-txt: #eef0f7; --pri2: #3b82f6; --acento: #f59e0b;
  --sobre-pri: #eef0f7; --sobre-pri-2: #8f94a9; --sobre-acento: #07090d;
  --ok: #10b981; --erro: #ef4444; --alerta: #f59e0b;
  --ok-bg: rgba(16,185,129,.1); --erro-bg: rgba(239,68,68,.1); --total-bg: rgba(245,158,11,.12);
  --fundo: #07090d; --sup: #151921; --sup2: #0e1118; --hover: rgba(255,255,255,.035);
  --texto: #eef0f7; --texto2: #8f94a9; --borda: rgba(255,255,255,.07); --borda-campo: rgba(255,255,255,.12);
  --campo: #07090d; --desat: #0e1118; --btn-cinza: #1c2230; --sobre-btn-cinza: #eef0f7;
  --rot-geral: #60a5fa; --disp-bg: #04060a; --disp-txt: #3cff6e;
  --menu-bg: #0e1118; --menu-txt: #eef0f7; --menu-txt2: #8f94a9; --menu-hover: #151921;
  --menu-act-bg: rgba(245,158,11,.1); --menu-act-txt: #f59e0b; --menu-act-borda: rgba(245,158,11,.28);
  --btn-pri: #f59e0b; --sobre-btn-pri: #07090d; --th-bg: #0e1118; --th-txt: #8f94a9;
  --topo-bg: #0e1118; --topo-txt: #eef0f7; --card-borda: rgba(255,255,255,.07); --raio: 16px;
  --sombra: 0 4px 28px rgba(0,0,0,.45);
  --am: #f59e0b; --am-bg: rgba(245,158,11,.1); --am-borda: rgba(245,158,11,.28);
  --gr: #10b981; --gr-bg: rgba(16,185,129,.1); --gr-borda: rgba(16,185,129,.28);
  --rd: #ef4444; --rd-bg: rgba(239,68,68,.1); --rd-borda: rgba(239,68,68,.28);
  --pu: #8b5cf6; --pu-bg: rgba(139,92,246,.1); --pu-borda: rgba(139,92,246,.28);
  --gy: #8f94a9; --gy-bg: rgba(143,148,169,.12); --gy-borda: rgba(143,148,169,.28);
}
:root[data-tema="escuro"] {
  color-scheme: dark;
  --pri: #1f3f6b; --pri-txt: #8ab8ff; --pri2: #4a8fe7; --acento: #f2b233;
  --sobre-pri: #fff; --sobre-pri-2: #b9cdea; --sobre-acento: #1a1a1a;
  --ok: #23a05a; --erro: #d9534f; --alerta: #e0a526;
  --ok-bg: #16301f; --erro-bg: #3a1c1b; --total-bg: #3a3218;
  --fundo: #0e131a; --sup: #18202b; --sup2: #1e2733; --hover: #26354a;
  --texto: #e5eaf1; --texto2: #9aa8ba; --borda: #2c3848; --borda-campo: #3d4b5e;
  --campo: #212b38; --desat: #151b24; --btn-cinza: #35414f; --sobre-btn-cinza: #e5eaf1;
  --rot-geral: #8fa6ff; --disp-bg: #05080c; --disp-txt: #3cff6e;
  --menu-bg: #121922; --menu-txt: #e5eaf1; --menu-txt2: #9aa8ba; --menu-hover: #1e2733;
  --menu-act-bg: rgba(138,184,255,.12); --menu-act-txt: #8ab8ff; --menu-act-borda: rgba(138,184,255,.3);
  --btn-pri: #4a8fe7; --sobre-btn-pri: #fff; --th-bg: #1a2330; --th-txt: #b9c6d8;
  --topo-bg: #121922; --topo-txt: #e5eaf1; --card-borda: #2c3848; --sombra: 0 4px 20px rgba(0,0,0,.4);
  --am: #f2b233; --am-bg: rgba(242,178,51,.12); --am-borda: rgba(242,178,51,.3);
  --gr: #23a05a; --gr-bg: rgba(35,160,90,.14); --gr-borda: rgba(35,160,90,.3);
  --rd: #e0605c; --rd-bg: rgba(224,96,92,.14); --rd-borda: rgba(224,96,92,.3);
  --pu: #a78bfa; --pu-bg: rgba(167,139,250,.14); --pu-borda: rgba(167,139,250,.3);
}
:root[data-tema="verde"] {
  --menu-bg: #1f5a3c; --btn-pri: #1f5a3c; --th-bg: #1f5a3c; --topo-txt: #1f5a3c; --menu-act-txt: #e3b341; --menu-act-borda: #e3b34166; --menu-act-bg: #e3b34122;
  --pri: #1f5a3c; --pri-txt: #1f5a3c; --pri2: #2e8b57; --acento: #e3b341;
  --sobre-pri-2: #cfe8d9; --fundo: #edf4ef; --sup2: #f4f8f5; --hover: #e3f1e8;
  --borda: #dbe6de; --campo: #fbfdf5; --rot-geral: #1f5a3c;
}
:root[data-tema="vinho"] {
  --menu-bg: #6b1f33; --btn-pri: #6b1f33; --th-bg: #6b1f33; --topo-txt: #6b1f33; --menu-act-txt: #d9a441; --menu-act-borda: #d9a44166; --menu-act-bg: #d9a44122;
  --pri: #6b1f33; --pri-txt: #6b1f33; --pri2: #a33a55; --acento: #d9a441;
  --sobre-pri-2: #f0d3db; --fundo: #f5eff1; --sup2: #faf5f6; --hover: #f6e4e9;
  --borda: #eadde1; --campo: #fffaf5; --rot-geral: #6b1f33;
}
:root[data-tema="grafite"] {
  --menu-bg: #2f3640; --btn-pri: #2f3640; --th-bg: #2f3640; --topo-txt: #2f3640; --menu-act-txt: #f39c12; --menu-act-borda: #f39c1266; --menu-act-bg: #f39c1222;
  --pri: #2f3640; --pri-txt: #2f3640; --pri2: #56606d; --acento: #f39c12;
  --sobre-pri-2: #d5d9de; --fundo: #eceef1; --sup2: #f5f6f8; --hover: #e7eaee;
  --borda: #dfe2e6; --campo: #ffffff; --rot-geral: #2f3640;
}
:root[data-tema="contraste"] {
  --pri: #000; --pri-txt: #000; --pri2: #000; --acento: #ffd400;
  --sobre-pri: #fff; --sobre-pri-2: #fff; --sobre-acento: #000;
  --ok: #006b2e; --erro: #b00000; --alerta: #7a4f00;
  --ok-bg: #fff; --erro-bg: #fff; --total-bg: #ffff99;
  --fundo: #fff; --sup: #fff; --sup2: #fff; --hover: #ffff99;
  --texto: #000; --texto2: #000; --borda: #000; --borda-campo: #000;
  --campo: #fff; --desat: #ddd; --btn-cinza: #fff; --sobre-btn-cinza: #000;
  --rot-geral: #000; --disp-bg: #000; --disp-txt: #fff;
  --menu-bg: #000; --menu-txt: #fff; --menu-txt2: #fff; --menu-hover: #222; --menu-act-bg: #ffd400; --menu-act-txt: #000; --menu-act-borda: #ffd400;
  --btn-pri: #000; --sobre-btn-pri: #fff; --th-bg: #000; --th-txt: #fff; --topo-bg: #fff; --topo-txt: #000; --card-borda: #000;
  --am: #7a4f00; --am-bg: #fff; --am-borda: #000; --gr: #006b2e; --gr-bg: #fff; --gr-borda: #000;
  --rd: #b00000; --rd-bg: #fff; --rd-borda: #000; --pu: #4b0082; --pu-bg: #fff; --pu-borda: #000; --gy: #000; --gy-bg: #fff; --gy-borda: #000;
}
:root[data-tema="contraste"] button.btn, :root[data-tema="contraste"] .painel,
:root[data-tema="contraste"] .campo input, :root[data-tema="contraste"] .campo select,
:root[data-tema="contraste"] .chip-bal { border: 2px solid #000 !important; }
:root[data-tema="contraste"] a, :root[data-tema="contraste"] button { text-decoration-thickness: 2px; }

* { box-sizing: border-box; margin: 0; padding: 0; }
input, select, textarea, button { font-family: inherit; color: inherit; }
body { font-family: var(--fonte); background: var(--fundo); color: var(--texto); font-size: calc(14px * var(--esc)); }

/* ── LOGIN ── */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--pri) 0%, var(--pri2) 60%, var(--acento) 100%); }
.login-card { background: var(--sup); padding: 36px 32px; border-radius: 14px; width: 380px; box-shadow: 0 18px 50px rgba(0,0,0,.35); }
.login-card h1 { font-size: calc(20px * var(--esc)); color: var(--pri-txt); margin-bottom: 4px; }
.login-card p { color: var(--texto2); font-size: calc(12px * var(--esc)); margin-bottom: 20px; }

/* ── LAYOUT ── */
header.topo { background: var(--pri); color: var(--sobre-pri); display: flex; align-items: center; gap: 14px; padding: 8px 16px; }
header.topo img.logo { height: 44px; background: #fff; border-radius: 6px; padding: 3px; }
header.topo .emp h1 { font-size: calc(16px * var(--esc)); }
header.topo .emp small { color: var(--sobre-pri-2); font-size: calc(11px * var(--esc)); }
header.topo .sessao { margin-left: auto; text-align: right; font-size: calc(12px * var(--esc)); }
header.topo .sessao button { margin-left: 8px; }

nav.abas { display: flex; flex-wrap: wrap; background: var(--sup); border-bottom: 2px solid var(--pri); }
nav.abas button { border: none; background: none; padding: 10px 14px; cursor: pointer; font-weight: 600;
  font-size: calc(12.5px * var(--esc)); color: var(--texto2); border-right: 1px solid var(--borda); }
nav.abas button.ativa { background: var(--pri); color: var(--sobre-pri); }
nav.abas button:hover:not(.ativa) { background: var(--hover); }

main { padding: 14px; max-width: 1500px; margin: 0 auto; }
.ecra { display: none; }
.ecra.visivel { display: block; }

/* ── COMPONENTES ── */
.painel { background: var(--sup); border-radius: 10px; padding: 16px; box-shadow: 0 2px 8px rgba(0,0,0,.08); margin-bottom: 14px; }
.painel h2 { font-size: calc(15px * var(--esc)); color: var(--pri-txt); border-bottom: 2px solid var(--acento); padding-bottom: 6px; margin-bottom: 12px; }
.grelha { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 10px 14px; }
.campo label { display: block; font-size: calc(11.5px * var(--esc)); font-weight: 700; color: var(--texto); margin-bottom: 3px; }
.campo input, .campo select, .campo textarea { width: 100%; padding: 7px 9px; border: 1px solid var(--borda-campo);
  border-radius: 6px; font-size: calc(13.5px * var(--esc)); background: var(--campo); }
.campo input:disabled, .campo select:disabled { background: var(--desat); color: var(--texto2); }
.campo input:focus, .campo select:focus { outline: 2px solid var(--pri2); background: var(--sup); }

button.btn { padding: 9px 18px; border: 1px solid transparent; border-radius: 7px; cursor: pointer; font-weight: 700; font-size: calc(13px * var(--esc)); }
.btn-azul { background: var(--btn-pri); color: var(--sobre-btn-pri); }
.btn-amarelo { background: var(--acento); color: var(--sobre-acento); }
.btn-verde { background: var(--ok); color: #fff; }
.btn-cinza { background: var(--btn-cinza); color: var(--sobre-btn-cinza); }
.btn-vermelho { background: var(--erro); color: #fff; }
button.btn:hover { filter: brightness(1.1); }
.linha-botoes { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 14px; }

/* ── PAINEL DE PESO (Peso Geral / Inicial / Produto) ── */
.painel-peso { background: var(--sup); border: 3px solid var(--pri); border-radius: 12px; padding: 14px; }
.linha-peso { display: flex; align-items: center; gap: 12px; padding: 8px 4px; border-bottom: 1px dashed var(--borda); }
.linha-peso:last-child { border-bottom: none; }
.linha-peso .rotulo { flex: 1; font-size: calc(22px * var(--esc)); font-weight: 800; }
.rotulo.geral { color: var(--rot-geral); } .rotulo.inicial { color: var(--erro); } .rotulo.produto { color: var(--texto); }
.linha-peso .valor { width: 220px; text-align: right; font-size: calc(30px * var(--esc)); font-weight: 800; font-family: var(--fonte-mono);
  background: var(--disp-bg); color: var(--disp-txt); padding: 4px 14px; border-radius: 8px; }
.linha-peso .unidade { font-weight: 800; font-size: calc(16px * var(--esc)); }
.chk-balanca { display: flex; align-items: center; gap: 8px; font-size: calc(17px * var(--esc)); font-weight: 800; margin-top: 10px; }
.estado-balanca { font-size: calc(12px * var(--esc)); margin-top: 6px; padding: 5px 8px; border-radius: 6px; }
.estado-ok { background: var(--ok-bg); color: var(--ok); }
.estado-erro { background: var(--erro-bg); color: var(--erro); }
.selo-estavel { font-weight: 800; padding: 2px 8px; border-radius: 20px; font-size: calc(12px * var(--esc)); }
.estavel-sim { background: var(--ok); color: #fff; } .estavel-nao { background: var(--acento); color: var(--sobre-acento); }

/* ── TABELAS ── */
.tabela-wrap { overflow: auto; max-height: 60vh; border: 1px solid var(--borda); border-radius: 8px; }
table.dados { width: 100%; border-collapse: collapse; font-size: calc(12.5px * var(--esc)); min-width: 1100px; }
table.dados th { background: var(--th-bg); color: var(--th-txt); padding: 8px 6px; position: sticky; top: 0; white-space: nowrap; }
table.dados td { padding: 6px; border-bottom: 1px solid var(--borda); white-space: nowrap; }
table.dados tr:nth-child(even) { background: var(--sup2); }
table.dados tr:hover { background: var(--hover); }
tr.linha-total td { font-weight: 800; background: var(--total-bg) !important; border-top: 2px solid var(--pri); }
.filtros { display: flex; gap: 8px; flex-wrap: wrap; align-items: end; margin-bottom: 10px; }
.filtros .campo { min-width: 160px; }

/* ── AVISOS ── */
#aviso { position: fixed; top: 18px; right: 18px; z-index: 999; max-width: 400px; padding: 14px 18px;
  border-radius: 10px; color: #fff; font-weight: 700; box-shadow: 0 8px 30px rgba(0,0,0,.3); display: none; }
#aviso.ok { background: var(--ok); } #aviso.erro { background: var(--erro); }

/* ── IMPRESSAO DA GUIA (Original + Duplicado, como no PDF do VBA) ── */
#areaImpressao { display: none; }
@media print {
  body * { visibility: hidden; }
  #areaImpressao, #areaImpressao * { visibility: visible; }
  #areaImpressao { display: block; position: absolute; left: 0; top: 0; width: 100%; }
}
.guia-doc { padding: 24px 34px; page-break-after: always; font-size: 12px; color: #111; }
.guia-doc .cab { display: flex; justify-content: space-between; }
.guia-doc .cab .via { font-weight: 800; font-size: 13px; }
.guia-doc h3 { color: #1a3c6e; font-size: 14px; }
.guia-doc .azul { color: #1a3c6e; font-weight: 700; }
.guia-doc img { height: 52px; margin: 8px 0; }
.guia-doc table.lado { width: 100%; margin-top: 8px; }
.guia-doc table.lado td { vertical-align: top; width: 50%; padding: 2px 6px; }
.guia-doc .par { display: flex; margin: 3px 0; }
.guia-doc .par b { width: 170px; }
.guia-doc .pesos { text-align: right; margin-top: 10px; }
.guia-doc .pesos .par b { width: 190px; }
.guia-doc .pesos .num { font-size: 16px; font-weight: 800; width: 90px; display: inline-block; }
.guia-doc .assin { margin-top: 40px; }
.separador-corte { border-top: 2px dotted #333; margin: 18px 0; }

/* ── GUIA: 1 folha A4 fixa, dividida exactamente ao meio (Original em cima, Duplicado em baixo) ── */
@page guia { size: A4 portrait; margin: 0; }
.guia-folha { page: guia; width: 210mm; height: 296mm; overflow: hidden; box-sizing: border-box; color: #111; font-size: 13px; background: #fff; page-break-after: avoid; break-after: avoid; }
.guia-meia { height: 148mm; box-sizing: border-box; padding: 9mm 13mm 6mm; display: flex; flex-direction: column; overflow: hidden; }
.guia-meia:first-child { border-bottom: 1.5px dashed #444; }
.guia-meia .g-cab { display: flex; justify-content: space-between; align-items: flex-start; gap: 10mm; }
.guia-meia .g-via { padding-top: 0; margin-top: 0; }
.guia-meia .g-emp h3 { color: #1a3c6e; font-size: 16px; margin: 2px 0 1px; }
.guia-meia .g-emp .azul { color: #1a3c6e; font-weight: 700; font-size: 12px; }
.guia-meia .g-logo { display: block; height: 84px; max-width: 85mm; object-fit: contain; margin: 0 0 4px; object-position: left top; }
.guia-meia .g-via { min-width: 62mm; }
.guia-meia .via { font-weight: 800; font-size: 14px; letter-spacing: 1px; margin: 0 0 3px; line-height: 1.15; }
.guia-meia .par { display: flex; gap: 6px; margin: 4px 0; line-height: 1.25; }
.guia-meia .par b { flex: 0 0 47mm; }
.guia-meia .g-via .par b { flex: 0 0 24mm; }
.guia-meia .g-titulo { margin: 8px 0 4px; padding: 3px 0; border-top: 1.5px solid #1a3c6e; border-bottom: 1.5px solid #1a3c6e; font-weight: 800; font-size: 13px; color: #1a3c6e; text-align: center; }
/* selo do TIPO da guia (INTERNA / EXTERNA), bem visível para não se confundir no papel */
.guia-meia .g-tipo { display: inline-block; padding: 1px 8px; margin-right: 6px; border: 2px solid #1a3c6e; border-radius: 4px; font-size: 12px; letter-spacing: 1px; color: #fff; background: #1a3c6e; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.guia-meia .g-tipo-ext { background: #7a1f1f; border-color: #7a1f1f; }
.guia-meia .g-corpo { display: flex; justify-content: space-between; gap: 8mm; flex: 1; min-height: 0; }
.guia-meia .g-campos { flex: 1; }
.guia-meia .g-pesos { flex: 0 0 66mm; align-self: flex-start; border: 1.5px solid #1a3c6e; border-radius: 4px; padding: 6px 8px; margin-top: 3px; }
.guia-meia .g-pesos > div { display: flex; justify-content: space-between; align-items: baseline; margin: 5px 0; }
.guia-meia .g-pesos b { font-size: 17px; }
.guia-meia .g-pesos .carga { border-top: 1px solid #1a3c6e; padding-top: 5px; }
.guia-meia .g-pesos .carga b { font-size: 21px; }
.guia-meia .g-pesos > div { gap: 8px; }
.guia-meia .g-assin { margin-top: auto; padding-top: 4px; }

.mini { font-size: calc(11px * var(--esc)); color: var(--texto2); }
.badge { display: inline-block; padding: 2px 8px; border-radius: 12px; font-size: calc(11px * var(--esc)); font-weight: 700; }
.badge-verde { background: var(--ok-bg); color: var(--ok); } .badge-vermelho { background: var(--erro-bg); color: var(--erro); }

/* ═══════════════ RESPONSIVO — TABLET E TELEFONE ═══════════════ */
img, canvas, video { max-width: 100%; }
input, select, textarea, button { font-size: max(13.5px, 1em); }

@media (max-width: 900px) {
  .grelha { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
  .linha-peso .valor { width: 160px; font-size: calc(24px * var(--esc)); }
  .linha-peso .rotulo { font-size: calc(17px * var(--esc)); }
}

@media (max-width: 640px) {
  body { font-size: calc(15px * var(--esc)); }

  /* Login */
  .login-wrap { padding: 14px; }
  .login-card { width: 100%; padding: 26px 20px; }

  /* Topo empilhado */
  header.topo { flex-wrap: wrap; gap: 8px; padding: 8px 10px; }
  header.topo .emp h1 { font-size: calc(14px * var(--esc)); }
  header.topo img.logo { height: 36px; }
  header.topo .sessao { margin-left: 0; width: 100%; display: flex; align-items: center;
    justify-content: space-between; text-align: left; gap: 6px; flex-wrap: wrap; }
  header.topo .sessao button { margin-left: 0; padding: 7px 10px; font-size: calc(12px * var(--esc)); }

  /* Abas: fita com deslize horizontal (dedo) */
  nav.abas { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
    scrollbar-width: none; position: sticky; top: 0; z-index: 50;
    box-shadow: 0 2px 6px rgba(0,0,0,.12); }
  nav.abas::-webkit-scrollbar { display: none; }
  nav.abas button { flex: 0 0 auto; padding: 12px 14px; font-size: calc(12px * var(--esc)); white-space: nowrap; }

  main { padding: 8px; }
  .painel { padding: 12px 10px; border-radius: 8px; }

  /* Formularios em coluna unica */
  .grelha { grid-template-columns: 1fr; gap: 10px; }
  .filtros { flex-direction: column; align-items: stretch; }
  .filtros .campo { min-width: 0; }

  /* Botoes a toda a largura (alvo de toque >=44px) */
  .linha-botoes { flex-direction: column; }
  .linha-botoes .btn, .filtros .btn { width: 100%; min-height: 46px; }
  button.btn { min-height: 44px; }

  /* Painel de peso adaptado */
  .painel-peso { padding: 10px 8px; }
  .linha-peso { flex-wrap: wrap; gap: 6px; }
  .linha-peso .rotulo { flex: 1 1 100%; font-size: calc(16px * var(--esc)); }
  .linha-peso .valor { flex: 1; width: auto; font-size: calc(26px * var(--esc)); padding: 6px 10px; }
  .linha-peso .unidade { font-size: calc(14px * var(--esc)); }
  .chk-balanca { font-size: calc(15px * var(--esc)); }
  .chk-balanca input[type=checkbox] { width: 22px; height: 22px; }

  /* Tabelas: deslize horizontal com dedo */
  .tabela-wrap { max-height: 65vh; -webkit-overflow-scrolling: touch; }
  table.dados { font-size: calc(12px * var(--esc)); }
  table.dados th, table.dados td { padding: 8px 6px; }

  #aviso { left: 10px; right: 10px; top: 10px; max-width: none; }
}

@media (max-width: 380px) {
  nav.abas button { padding: 11px 10px; font-size: calc(11px * var(--esc)); }
  .linha-peso .valor { font-size: calc(22px * var(--esc)); }
}

/* ── RELATORIOS ── */
.cartoes-relatorio { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.cartao-rel { border: 1px solid var(--borda); border-radius: 10px; padding: 14px; background: var(--sup2); }
.cartao-rel h3 { font-size: calc(13.5px * var(--esc)); color: var(--pri-txt); margin-bottom: 4px; }
.cartao-rel p { font-size: calc(11.5px * var(--esc)); color: var(--texto2); margin-bottom: 10px; }
.cartao-rel .linha-botoes { margin-top: 0; }
.cartao-rel .btn { padding: 8px 12px; font-size: calc(12px * var(--esc)); }
@media (max-width: 640px) {
  .cartoes-relatorio { grid-template-columns: 1fr; }
  .cartao-rel .linha-botoes { flex-direction: row; }
  .cartao-rel .linha-botoes .btn { width: auto; flex: 1; }
}

/* Emissão: formulário + painel de peso lado a lado; empilha no telefone */
.duas-colunas { display: grid; grid-template-columns: 1fr 420px; gap: 14px; align-items: start; }
@media (max-width: 900px) { .duas-colunas { grid-template-columns: 1fr; } }

/* ── Escolha da balança (várias balanças por empresa) ── */
.titulo-balancas { font-size: calc(11px * var(--esc)); font-weight: 800; color: var(--pri-txt); margin-bottom: 6px; }
.barra-balancas { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; margin-bottom: 12px; }
.chip-bal { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left;
  border: 2px solid var(--borda); background: var(--sup2); border-radius: 10px; padding: 8px 10px; cursor: pointer;
  font-family: inherit; min-height: 64px; transition: border-color .15s, box-shadow .15s; }
.chip-bal:hover { border-color: var(--pri2); }
.chip-bal.sel { border-color: var(--pri); box-shadow: 0 0 0 3px rgba(26, 60, 110, .25); background: var(--sup); }
.chip-nome { font-weight: 800; font-size: calc(12.5px * var(--esc)); color: var(--pri-txt); }
.chip-peso { font-family: var(--fonte-mono); font-size: calc(20px * var(--esc)); font-weight: 800; color: var(--texto); }
.chip-sub { font-size: calc(10.5px * var(--esc)); font-weight: 700; color: var(--texto2); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chip-bal.bal-ok .chip-sub { color: var(--ok); }
.chip-bal.bal-oscila .chip-sub { color: var(--alerta); }
.chip-bal.bal-sem .chip-peso, .chip-bal.bal-sem .chip-sub { color: var(--erro); }
.chip-bal.bal-manual .chip-peso { color: var(--texto2); font-size: calc(15px * var(--esc)); }
input.valor[readonly] { cursor: not-allowed; }


/* ── A impressão (guias, extratos) sai SEMPRE clara, qualquer que seja o tema ── */
@media print {
  :root, :root[data-tema] {
    --pri: #1a3c6e; --pri-txt: #1a3c6e; --sobre-pri: #fff; --sup: #fff; --sup2: #f6f8fb;
    --texto: #111; --texto2: #555; --borda: #ccc; --total-bg: #fff5db; --esc: 1; color-scheme: light;
  }
  body { background: #fff !important; }
}

/* ── Painel APARÊNCIA (idioma, tema, letra) ── */
.btn-aparencia { background: transparent; border: 1px solid var(--sobre-pri-2); color: var(--sobre-pri); border-radius: 7px;
  padding: 7px 10px; cursor: pointer; font-weight: 700; font-size: calc(12px * var(--esc)); }
.login-topo { position: fixed; top: 12px; right: 12px; display: flex; gap: 8px; z-index: 20; }
.login-topo .btn-aparencia { background: rgba(0,0,0,.25); border-color: rgba(255,255,255,.6); color: #fff; }
#painelAparencia { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1000; display: none;
  align-items: flex-start; justify-content: center; overflow: auto; padding: 24px 12px; }
#painelAparencia.aberto { display: flex; }
#painelAparencia .caixa-ap { background: var(--sup); color: var(--texto); border-radius: 14px; width: 100%; max-width: 560px;
  padding: 18px 20px; box-shadow: 0 18px 50px rgba(0,0,0,.35); }
.caixa-ap h2 { font-size: calc(17px * var(--esc)); color: var(--pri-txt); border-bottom: 2px solid var(--acento); padding-bottom: 6px; margin-bottom: 12px;
  display: flex; justify-content: space-between; align-items: center; }
.caixa-ap h3 { font-size: calc(12.5px * var(--esc)); color: var(--texto2); text-transform: uppercase; letter-spacing: .04em; margin: 14px 0 7px; }
.opcoes-ap { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.op-ap { border: 2px solid var(--borda); background: var(--sup2); color: var(--texto); border-radius: 10px; padding: 9px 10px;
  cursor: pointer; text-align: left; font-size: calc(13px * var(--esc)); min-height: 44px; display: flex; align-items: center; gap: 8px; }
.op-ap:hover { border-color: var(--pri2); }
.op-ap.sel { border-color: var(--pri2); box-shadow: 0 0 0 3px rgba(42,109,181,.3); font-weight: 800; }
.amostra-tema { display: inline-flex; width: 34px; height: 22px; border-radius: 5px; overflow: hidden; flex: 0 0 auto; border: 1px solid rgba(0,0,0,.2); }
.amostra-tema i { flex: 1; }
.tamanhos-ap { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.tamanhos-ap .op-ap { justify-content: center; }
.fechar-ap { background: none; border: none; font-size: 26px; line-height: 1; cursor: pointer; color: var(--texto2); }
@media (max-width: 640px) {
  .opcoes-ap { grid-template-columns: 1fr 1fr; }
  .tamanhos-ap { grid-template-columns: repeat(5, 1fr); }
  #painelAparencia { padding: 10px 8px; }
}
header.topo .mini { color: var(--sobre-pri-2); }

/* ── Largura no telemóvel: nada pode ser mais largo que o ecrã, qualquer que seja o tamanho da letra ── */
.duas-colunas { grid-template-columns: minmax(0, 1fr) 420px; }
@media (max-width: 900px) { .duas-colunas { grid-template-columns: minmax(0, 1fr); } }
.grelha { grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr)); }
.grelha > *, .campo, .duas-colunas > *, .filtros > * { min-width: 0; }
.campo input, .campo select, .campo textarea { max-width: 100%; min-width: 0; text-overflow: ellipsis; }
.linha-peso .valor { min-width: 0; }
.painel, .painel-peso { max-width: 100%; }
@media (max-width: 640px) {
  .grelha { grid-template-columns: minmax(0, 1fr); }
  .painel h2 { overflow-wrap: anywhere; }
  .barra-balancas { grid-template-columns: repeat(auto-fit, minmax(min(140px, 100%), 1fr)); }
  .login-card { max-width: 100%; }
  header.topo .sessao .btn { flex: 1 1 auto; }
}


/* ═════════════════════════════════════════════════════════════════
   NOVA ESTRUTURA — login, menu lateral, barra superior, Área Master
   (desenho espelhado no Soft Robusto MZ; funciona em todos os temas)
═════════════════════════════════════════════════════════════════ */
body { background: var(--fundo); color: var(--texto); -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

/* ── LOGIN ── */
.lg-ecra { position: relative; min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; align-items: center;
  overflow-y: auto; padding: 12px 0 28px; background: var(--fundo); }
.lg-grelha { position: absolute; inset: 0; pointer-events: none; background-image:
  radial-gradient(ellipse 70% 70% at 50% 50%, transparent 10%, var(--fundo) 100%),
  linear-gradient(var(--borda) 1px, transparent 1px), linear-gradient(90deg, var(--borda) 1px, transparent 1px);
  background-size: 100% 100%, 50px 50px, 50px 50px; }
.lg-brilho { position: absolute; width: 640px; height: 640px; max-width: 100vw; border-radius: 50%; top: 50%; left: 50%; transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(245,158,11,.09) 0%, transparent 65%); pointer-events: none; }
.lg-wrap { position: relative; z-index: 1; width: 100%; max-width: 430px; padding: 1.25rem 1.25rem 2rem; margin: auto 0; }
.lg-topo { display: flex; justify-content: space-between; align-items: center; margin-bottom: 18px; gap: 8px; }
.lg-idiomas { display: flex; gap: 4px; background: var(--sup); border: 1px solid var(--card-borda); border-radius: 99px; padding: 3px; }
.lg-idiomas button { border: 0; background: transparent; color: var(--texto2); padding: 5px 12px; border-radius: 99px; cursor: pointer;
  font-weight: 700; font-size: calc(11.5px * var(--esc)); }
.lg-idiomas button.sel { background: var(--btn-pri); color: var(--sobre-btn-pri); }
.lg-btn-ap { border: 1px solid var(--card-borda); background: var(--sup); color: var(--texto); border-radius: 99px; padding: 7px 14px; cursor: pointer;
  font-weight: 700; font-size: calc(11.5px * var(--esc)); }
.lg-marca { display: flex; flex-direction: column; align-items: center; gap: 4px; margin-bottom: 1.4rem; text-align: center; }
.lg-icone { width: 64px; height: 64px; border-radius: 18px; background: var(--btn-pri); color: var(--sobre-btn-pri); display: flex; align-items: center; justify-content: center;
  box-shadow: 0 10px 36px rgba(245,158,11,.3); margin-bottom: 6px; }
.lg-nome { font-size: calc(27px * var(--esc)); font-weight: 800; letter-spacing: .06em; color: var(--texto); }
.lg-tag { font-size: calc(11px * var(--esc)); color: var(--texto2); letter-spacing: .12em; text-transform: uppercase; }
.lg-cartao { background: var(--sup); border: 1px solid var(--card-borda); border-radius: 22px; padding: 1.6rem; box-shadow: var(--sombra); }
.lg-titulo { font-size: calc(17px * var(--esc)); font-weight: 700; color: var(--texto); }
.lg-sub { font-size: calc(12px * var(--esc)); color: var(--texto2); margin: 3px 0 1.1rem; }
.fg { margin-bottom: .8rem; }
.fl { display: block; font-size: calc(10.5px * var(--esc)); font-weight: 700; color: var(--texto2); margin-bottom: 5px; letter-spacing: .07em; text-transform: uppercase; }
.fi { width: 100%; padding: 10px 12px; background: var(--campo); color: var(--texto); border: 1px solid var(--borda-campo); border-radius: 9px;
  font-size: calc(14px * var(--esc)); outline: none; transition: border-color .13s, box-shadow .13s; -webkit-appearance: none; appearance: none; }
select.fi { -webkit-appearance: auto; appearance: auto; }
.fi:focus { border-color: var(--acento); box-shadow: 0 0 0 3px var(--am-bg); }
.fi::placeholder { color: var(--texto2); opacity: .8; }
.fi.ic { padding-left: 38px; }
.fwr { position: relative; }
.fic { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); pointer-events: none; opacity: .75; }
.olho { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); background: none; border: 0; cursor: pointer; font-size: 16px; padding: 6px; color: var(--texto2); }
.err-box { display: none; align-items: center; gap: 8px; background: var(--rd-bg); border: 1px solid var(--rd-borda); color: var(--rd);
  border-radius: 9px; padding: 9px 12px; font-size: calc(12.5px * var(--esc)); margin-bottom: .8rem; }
.err-box.on { display: flex; }
.btn-login { width: 100%; padding: 13px; border: 0; border-radius: 12px; background: var(--btn-pri); color: var(--sobre-btn-pri); cursor: pointer;
  font-weight: 800; font-size: calc(14px * var(--esc)); letter-spacing: .08em; text-transform: uppercase; box-shadow: 0 4px 20px rgba(245,158,11,.22);
  transition: filter .14s, transform .1s; }
.btn-login:hover { filter: brightness(1.08); } .btn-login:active { transform: scale(.98); } .btn-login:disabled { opacity: .7; cursor: wait; }
.lg-rodape { text-align: center; margin-top: 1.1rem; font-size: calc(11px * var(--esc)); color: var(--texto2); line-height: 1.6; }
.lg-rodape b { color: var(--acento); }

/* ── ESTRUTURA DA APLICAÇÃO ── */
.app-shell { min-height: 100vh; min-height: 100dvh; width: 100%; }
.sidebar { width: 250px; min-width: 250px; background: var(--menu-bg); color: var(--menu-txt); border-right: 1px solid var(--card-borda);
  display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; height: 100dvh; overflow-y: auto; z-index: 60; transition: transform .28s ease; }
.sb-logo { padding: 16px 14px 13px; border-bottom: 1px solid var(--menu-hover); }
.sb-marca { display: flex; align-items: center; gap: 10px; }
.sb-ic { width: 36px; height: 36px; border-radius: 10px; background: var(--acento); color: var(--sobre-acento); flex-shrink: 0; display: flex; align-items: center; justify-content: center;
  font-size: 19px; font-weight: 800; }
.sb-logo-img { width: 38px; height: 38px; border-radius: 9px; object-fit: contain; background: #fff; padding: 2px; flex-shrink: 0; }
.sb-tit { font-weight: 800; font-size: calc(14.5px * var(--esc)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--menu-txt); }
.sb-sub { font-size: calc(10.5px * var(--esc)); color: var(--menu-txt2); letter-spacing: .06em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-nav { flex: 1; padding: 10px 0; }
.sb-sec { padding: 0 9px; margin-bottom: 14px; }
.sb-lbl { font-size: calc(10px * var(--esc)); font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--menu-txt2); padding: 0 8px; margin-bottom: 5px; }
.sbi { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 9px; border: 1px solid transparent; color: var(--menu-txt);
  font-size: calc(13.5px * var(--esc)); font-weight: 500; cursor: pointer; margin-bottom: 2px; transition: background .12s; user-select: none; }
.sbi:hover { background: var(--menu-hover); }
.sbi.act { background: var(--menu-act-bg); border-color: var(--menu-act-borda); color: var(--menu-act-txt); font-weight: 700; }
.sbi .ico { width: 20px; text-align: center; flex-shrink: 0; }
.sb-rodape { padding: 9px; border-top: 1px solid var(--menu-hover); }
.sb-user { display: flex; align-items: center; gap: 9px; padding: 8px; border-radius: 9px; cursor: pointer; }
.sb-user:hover { background: var(--menu-hover); }
.sb-av { width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-weight: 800;
  font-size: calc(12px * var(--esc)); background: var(--menu-act-bg); color: var(--menu-act-txt); border: 1px solid var(--menu-act-borda); }
.sb-un { font-size: calc(12.5px * var(--esc)); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--menu-txt); }
.sb-ur { font-size: calc(10.5px * var(--esc)); color: var(--menu-txt2); }
.sb-ex { margin-left: auto; color: var(--menu-txt2); font-size: 16px; }
.sb-user:hover .sb-ex { color: var(--rd); }
.sb-veu { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 55; }
.main-col { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.topbar { position: sticky; top: 0; z-index: 40; height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 0 18px; background: var(--topo-bg); border-bottom: 1px solid var(--card-borda); }
.tb-l { display: flex; align-items: center; gap: 10px; min-width: 0; }
.tb-tit { font-size: calc(17px * var(--esc)); font-weight: 800; color: var(--topo-txt); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tb-r { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.tb-hora { font-size: calc(11.5px * var(--esc)); color: var(--texto2); margin-right: 6px; white-space: nowrap; }
.btn-tb { width: 38px; height: 38px; border-radius: 10px; border: 1px solid var(--card-borda); background: var(--sup); color: var(--texto); cursor: pointer; font-size: 17px; }
.btn-tb:hover { border-color: var(--acento); }
.btn-tb-sair:hover { border-color: var(--rd); background: var(--rd-bg); }
.mob-menu { display: none; width: 40px; height: 40px; border-radius: 10px; border: 1px solid var(--card-borda); background: var(--sup); color: var(--texto); font-size: 19px; cursor: pointer; }
.faixa-master { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 9px 18px;
  background: var(--pu-bg); border-bottom: 1px solid var(--pu-borda); color: var(--texto); font-size: calc(13px * var(--esc)); }
.faixa-master b { color: var(--pu); }
main.pg { padding: 18px; max-width: 1500px; width: 100%; margin: 0 auto; }

/* painéis no desenho de cartão */
.painel { background: var(--sup); border: 1px solid var(--card-borda); border-radius: var(--raio); box-shadow: var(--sombra); }
.painel h2 { color: var(--pri-txt); }
.painel-peso { background: var(--sup); }
details.painel > summary { cursor: pointer; font-weight: 700; color: var(--pri-txt); }

/* botões ao estilo do Soft Robusto */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 15px; border-radius: 9px; font-size: calc(12.5px * var(--esc));
  font-weight: 700; border: 1px solid transparent; cursor: pointer; white-space: nowrap; transition: background .12s, color .12s, border-color .12s; }
.btn:active { transform: scale(.97); } .btn:disabled { opacity: .6; cursor: wait; }
button.btn.btn-sm, .btn-sm { padding: 6px 11px; font-size: calc(11.5px * var(--esc)); }
.btn-am { background: var(--btn-pri); color: var(--sobre-btn-pri); border-color: var(--btn-pri); }
.btn-am:hover { filter: brightness(1.08); }
.btn-out { background: transparent; color: var(--texto); border-color: var(--borda-campo); }
.btn-out:hover { border-color: var(--acento); color: var(--acento); }
.btn-gr { background: var(--gr-bg); color: var(--gr); border-color: var(--gr-borda); } .btn-gr:hover { background: var(--gr); color: #fff; }
.btn-rd { background: var(--rd-bg); color: var(--rd); border-color: var(--rd-borda); } .btn-rd:hover { background: var(--rd); color: #fff; }
.btn-pu { background: var(--pu-bg); color: var(--pu); border-color: var(--pu-borda); } .btn-pu:hover { background: var(--pu); color: #fff; }
.bdg { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: 99px; font-size: calc(11px * var(--esc)); font-weight: 700; white-space: nowrap; }
.bdg .dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.bdg-gr { background: var(--gr-bg); color: var(--gr); } .bdg-am { background: var(--am-bg); color: var(--am); }
.bdg-rd { background: var(--rd-bg); color: var(--rd); } .bdg-gy { background: var(--gy-bg); color: var(--gy); }

/* ── ÁREA MASTER ── */
.pg-cab { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.pg-tit { font-size: calc(21px * var(--esc)); font-weight: 800; color: var(--texto); }
.pg-acoes { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.pg-acoes .pesq { width: 260px; max-width: 100%; }
.sg { display: grid; grid-template-columns: repeat(auto-fill, minmax(165px, 1fr)); gap: 10px; margin-bottom: 14px; }
.sc { text-align: left; background: var(--sup); border: 1px solid var(--card-borda); border-radius: 13px; padding: 13px; cursor: pointer; color: var(--texto);
  transition: border-color .13s; font: inherit; }
.sc:hover { border-color: var(--am-borda); } .sc.sel { border-color: var(--acento); box-shadow: 0 0 0 3px var(--am-bg); }
.gi { width: 32px; height: 32px; border-radius: 9px; display: flex; align-items: center; justify-content: center; margin-bottom: 7px; font-size: 15px; }
.gi-am { background: var(--am-bg); color: var(--am); } .gi-gr { background: var(--gr-bg); color: var(--gr); }
.gi-rd { background: var(--rd-bg); color: var(--rd); } .gi-gy { background: var(--gy-bg); color: var(--gy); }
.sl { font-size: calc(10.5px * var(--esc)); color: var(--texto2); text-transform: uppercase; letter-spacing: .07em; font-weight: 700; }
.sv { font-size: calc(27px * var(--esc)); font-weight: 800; line-height: 1.1; }
.c-am { color: var(--am); } .c-gr { color: var(--gr); } .c-rd { color: var(--rd); } .c-gy { color: var(--gy); }
.alerta-box { background: var(--am-bg); border: 1.5px solid var(--am-borda); border-radius: 13px; padding: 12px 14px; margin-bottom: 14px; }
.alerta-tit { font-weight: 800; margin-bottom: 6px; }
.alerta-lin { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 5px 0; font-size: calc(13px * var(--esc)); flex-wrap: wrap; }
.alerta-lin span:last-child { display: flex; align-items: center; gap: 8px; color: var(--am); }
.grelha-cartoes { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(430px, 100%), 1fr)); gap: 12px; }
.cartao-emp { background: var(--sup); border: 1px solid var(--card-borda); border-radius: var(--raio); padding: 15px; box-shadow: var(--sombra); display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.ce-cab { display: flex; align-items: center; gap: 11px; }
.ce-av { width: 42px; height: 42px; border-radius: 11px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-weight: 800;
  background: var(--am-bg); color: var(--am); border: 1px solid var(--am-borda); }
.ce-nome { font-size: calc(15.5px * var(--esc)); font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ce-sub { font-size: calc(11.5px * var(--esc)); color: var(--texto2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ce-lic { font-size: calc(12.5px * var(--esc)); color: var(--texto2); }
.ce-lic b { color: var(--texto); }
.ce-barra { height: 5px; background: var(--borda); border-radius: 99px; overflow: hidden; }
.ce-barra div { height: 100%; border-radius: 99px; }
.ce-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip-i { font-size: calc(11.5px * var(--esc)); padding: 3px 9px; border-radius: 99px; background: var(--sup2); border: 1px solid var(--card-borda); color: var(--texto2); }
.chip-i b { color: var(--texto); } .chip-aviso { color: var(--rd); border-color: var(--rd-borda); }
.ce-acoes { display: flex; flex-wrap: wrap; gap: 7px; padding-top: 4px; border-top: 1px solid var(--card-borda); padding-top: 11px; }
.vazio-box { grid-column: 1/-1; text-align: center; padding: 34px 14px; color: var(--texto2); border: 1px dashed var(--borda-campo); border-radius: var(--raio); }

/* ── JANELAS (modais) ── */
.ov { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 900; align-items: flex-start; justify-content: center; overflow-y: auto; padding: 30px 12px; }
.ov.on { display: flex; }
.mo { width: 100%; max-width: 640px; background: var(--sup); color: var(--texto); border: 1px solid var(--card-borda); border-radius: 18px; padding: 18px 20px; box-shadow: var(--sombra); }
.mo-sm { max-width: 440px; }
.mo-hd { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.mo-tit { font-size: calc(17px * var(--esc)); font-weight: 800; }
.mo-cl { width: 34px; height: 34px; border-radius: 9px; border: 1px solid var(--card-borda); background: var(--sup2); color: var(--texto2); cursor: pointer; font-size: 15px; }
.mo-sec { font-size: calc(11px * var(--esc)); font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--acento); margin: 14px 0 8px; }
.mo-rod { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; flex-wrap: wrap; }
.info-box { font-size: calc(12px * var(--esc)); color: var(--texto); background: var(--am-bg); border: 1px solid var(--am-borda); border-radius: 9px; padding: 9px 12px; }
.g2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
.g2 > * { min-width: 0; }

/* ── TELEMÓVEL / TABLET ── */
@media (max-width: 900px) {
  .sidebar { position: fixed; left: 0; top: 0; transform: translateX(-100%); box-shadow: var(--sombra); }
  .sidebar.aberto { transform: translateX(0); }
  .sb-veu.on { display: block; }
  .mob-menu { display: inline-flex; align-items: center; justify-content: center; }
  .tb-hora { display: none; }
  main.pg { padding: 10px; }
}
@media (max-width: 640px) {
  .topbar { padding: 0 10px; height: 54px; }
  .btn-tb { width: 36px; height: 36px; font-size: 16px; }
  .g2 { grid-template-columns: minmax(0, 1fr); }
  .pg-acoes { width: 100%; } .pg-acoes .pesq { width: 100%; } .pg-acoes .btn { width: 100%; }
  .sg { grid-template-columns: 1fr 1fr; }
  .ce-acoes .btn { flex: 1 1 calc(50% - 7px); }
  .mo { padding: 15px 14px; border-radius: 14px; }
  .mo-rod .btn { flex: 1; }
  .lg-cartao { padding: 1.25rem; }
  .faixa-master { padding: 8px 10px; }
  .faixa-master .btn { width: 100%; }
}
@media print {
  .sidebar, .topbar, .faixa-master, .sb-veu { display: none !important; }
}

/* Bloco "avançado" dobrável (ex.: chave do agente) */
details.avancado { border:1px dashed var(--borda, #8884); border-radius:8px; padding:8px 12px; }
details.avancado > summary { cursor:pointer; font-weight:600; font-size:.9em; opacity:.85; }
details.avancado[open] > summary { margin-bottom:4px; }

/* Cartão de empresa clicável (Área Master) — entra como Admin */
.cartao-emp.clicavel { cursor: pointer; transition: border-color .15s, transform .15s, box-shadow .15s; }
.cartao-emp.clicavel:hover { border-color: var(--acento, #f59e0b); transform: translateY(-2px); }
.cartao-emp.clicavel:focus-visible { outline: 2px solid var(--acento, #f59e0b); outline-offset: 2px; }
.cartao-emp .ce-dica { font-size: .78em; opacity: .7; margin-top: -4px; }


/* ── GUIA: QR de verificação, marca de água ANULADA ── */
.guia-meia { position: relative; }
.guia-meia .g-lado { flex: 0 0 66mm; display: flex; flex-direction: column; gap: 4mm; align-self: flex-start; }
.guia-meia .g-lado .g-pesos { flex: none; margin-top: 3px; }
.guia-meia .g-qr { display: flex; gap: 3mm; align-items: center; }
.guia-meia .g-qr-img { width: 24mm; height: 24mm; flex: none; }
.guia-meia .g-qr-img svg { width: 100%; height: 100%; display: block; }
.guia-meia .g-qr-txt { font-size: 9.5px; line-height: 1.3; color: #333; }
.guia-meia .g-qr-txt b { font-size: 11px; letter-spacing: 1px; color: #1a3c6e; }
.guia-meia .g-marca { position: absolute; top: 38%; left: 50%; transform: translate(-50%, -50%) rotate(-18deg); font-size: 78px; font-weight: 900; letter-spacing: 8px; color: rgba(200, 30, 30, .22); border: 6px solid rgba(200, 30, 30, .22); padding: 0 24px; pointer-events: none; z-index: 2; }

/* ── TICKET TÉRMICO 80 mm ── */
@page ticket { size: 80mm 190mm; margin: 0; }
.ticket-doc { page: ticket; }
.ticket-80 { width: 72mm; margin: 0 auto; padding: 3mm 0; font: 12px/1.3 "Courier New", monospace; color: #000; background: #fff; page-break-inside: avoid; }
.ticket-80 .t-c { text-align: center; }
.ticket-80 .t-logo { max-width: 52mm; max-height: 18mm; object-fit: contain; display: block; margin: 0 auto 2px; }
.ticket-80 .t-emp { font-weight: 800; font-size: 14px; }
.ticket-80 .t-tit { font-weight: 800; margin-top: 4px; }
.ticket-80 .t-num { font-size: 16px; font-weight: 800; }
.ticket-80 .t-peq { font-size: 10px; }
.ticket-80 .t-sep { border-top: 1px dashed #000; margin: 4px 0; }
.ticket-80 .t-l { display: flex; justify-content: space-between; gap: 6px; }
.ticket-80 .t-l b { text-align: right; max-width: 42mm; word-break: break-word; }
.ticket-80 .t-grande { font-size: 15px; font-weight: 800; }
.ticket-80 .t-qr svg { width: 30mm; height: 30mm; display: block; margin: 2px auto; }
.ticket-80 .t-ass { margin-top: 8mm; font-size: 11px; }
.ticket-80 .t-anul { text-align: center; font-weight: 900; font-size: 16px; border: 2px solid #000; margin-bottom: 4px; }
.t-corte { height: 0; border: 0; break-after: page; page-break-after: always; }


/* ── PAINEL ── */
.pn-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin: 10px 0 14px; }
.kpi { background: var(--sup, #fff); border: 1px solid var(--borda, #ccd); border-radius: 12px; padding: 12px 14px; }
.kpi.alerta { border-color: #d33; }
.kpi-r { font-size: 12px; color: var(--texto2, #667); text-transform: uppercase; letter-spacing: .4px; }
.kpi-v { font-size: clamp(20px, 2.2vw, 28px); overflow-wrap: anywhere; font-weight: 800; color: var(--pri-txt, #1a3c6e); line-height: 1.15; }
.kpi-s { font-size: 12px; color: var(--texto2, #667); }
.pn-grade { display: grid; grid-template-columns: 2fr 1fr; gap: 12px; margin-bottom: 12px; }
.pn-grade.tres { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 860px) { .pn-grade, .pn-grade.tres { grid-template-columns: 1fr; } }
.pn-grade h4 { margin: 0 0 8px; }
.pn-barra { fill: var(--pri2, #2a6db5); opacity: .8; } .pn-barra.hoje { fill: var(--acento, #f7b733); opacity: 1; }
.pn-eixo { font-size: 11px; fill: var(--texto2, #667); } .pn-val { font-size: 11px; font-weight: 700; fill: var(--texto, #111); }
.pn-al { padding: 8px 12px; border-radius: 8px; margin-bottom: 6px; font-size: 14px; border-left: 4px solid; }
.pn-al.ok { background: rgba(40,160,80,.12); border-color: #28a050; } .pn-al.av { background: rgba(240,170,30,.16); border-color: #e0a010; } .pn-al.er { background: rgba(220,60,60,.14); border-color: #d33; }
.pn-bals { display: flex; flex-direction: column; gap: 8px; }
.pn-bal { display: grid; grid-template-columns: 1fr auto; gap: 2px 10px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--borda, #ccd); }
.pn-bal span { font-size: 22px; font-weight: 800; text-align: right; } .pn-bal i { grid-column: 1 / -1; font-style: normal; font-size: 11px; opacity: .8; }
.pn-bal.ok { border-color: #28a050; } .pn-bal.osc { border-color: #e0a010; } .pn-bal.sem { border-color: #d33; opacity: .85; }
.pn-top { margin-bottom: 9px; } .pn-top-t { display: flex; justify-content: space-between; gap: 8px; font-size: 14px; }
.pn-top-b { height: 7px; background: var(--sup2, #eef); border-radius: 4px; margin: 3px 0; overflow: hidden; } .pn-top-b i { display: block; height: 100%; background: var(--pri2, #2a6db5); border-radius: 4px; }

/* ═══ DEPÓSITOS (silos em vidro) ═══ */
.silos { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; align-items: end; padding-top: 8px; }
.silo { text-align: center; }
.silo svg { max-width: 170px; width: 100%; height: auto; }
.silo .s-nome { font-weight: 800; font-size: calc(14px * var(--esc)); color: var(--pri); margin-top: 4px; }
.silo .s-prod { font-size: calc(12px * var(--esc)); color: var(--texto2); }
.silo .s-qt { font-size: calc(16px * var(--esc)); font-weight: 800; margin-top: 2px; }
.silo .s-qt small { font-weight: 400; color: var(--texto2); font-size: calc(11px * var(--esc)); }
.silo .s-mov { font-size: calc(11px * var(--esc)); color: var(--texto2); margin-top: 2px; }
.silo .s-mov i { font-style: normal; color: var(--ok); } .silo .s-mov u { text-decoration: none; color: var(--erro); }
.silo .s-al { font-size: calc(11px * var(--esc)); color: #c26400; font-weight: 700; }
.silos-leg { display: flex; flex-wrap: wrap; gap: 14px; font-size: calc(11px * var(--esc)); color: var(--texto2); margin-top: 10px; }
.silos-leg i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -2px; margin-right: 4px; border: 1px solid rgba(0,0,0,.15); }
.tag-guia { display: inline-block; padding: 1px 7px; border-radius: 4px; color: #fff; font-size: calc(10px * var(--esc)); font-weight: 700; letter-spacing: .5px; }
.tag-guia.in { background: #1e3a6b; } .tag-guia.ex { background: #7a1f1f; } .tag-guia.ac { background: #c26400; } .tag-guia.an { background: #666; }
.nivel-barra { display: inline-block; width: 90px; height: 9px; background: var(--borda); border-radius: 5px; overflow: hidden; vertical-align: middle; }
.nivel-barra i { display: block; height: 100%; background: var(--ok); }
.nivel-barra.cheio i { background: #e07b00; }

/* PESO MANUAL (excepção autorizada pelo Master) */
.estavel-manual { background: #e07b00; color: #fff; }
input.valor.manual, input.manual { background: #fff3e0 !important; border: 2px dashed #e07b00 !important; color: #7a3e00 !important; }
.guia-meia .g-manual { position: absolute; top: 4mm; right: 6mm; font-size: 9px; font-weight: 800; color: #b4321e; border: 1.5px solid #b4321e; padding: 2px 6px; border-radius: 4px; z-index: 2; -webkit-print-color-adjust: exact; print-color-adjust: exact; }

/* ═══ SACOS (estimativa) ═══ */
.sacos-box { margin: 6px 0 4px; padding: 7px 10px; border: 1px dashed #c9d2e0; border-radius: 8px; background: #fffbe6; color: #1a2b48; }
.sacos-corr { font-size: calc(14px * var(--esc)); color: #1a2b48; } .sacos-corr b { font-size: calc(18px * var(--esc)); color: #1e3a6b; }
.sacos-corr .mini { color: #55667f; }
.sacos-tipo { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; margin-top: 4px; font-size: calc(13px * var(--esc)); color: #1a2b48; }
.sacos-tipo label { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; }
.sacos-tipo input[type=number] { width: 90px; margin-left: 6px; background: #fff; color: #1a2b48; border: 1px solid #c9d2e0; border-radius: 6px; padding: 3px 6px; }
.sacos-box .mini { color: #55667f; } .sacos-box .mini.erro { color: #b4321e; font-weight: 700; }
/* assinaturas na guia: motorista e operador */
.guia-meia .g-assin { display: flex; gap: 10mm; }
.guia-meia .g-assin > div { flex: 1; border-top: 1px solid #333; padding-top: 2px; font-size: 11px; text-align: center; margin-top: 16mm; }
.guia-meia .g-assin > div small { display: block; color: #555; }
.guia-meia .g-emp .cinza { color: #444; font-size: 11px; }
.ticket-80 .t-ass { display: flex; gap: 4mm; }
.ticket-80 .t-ass > div { flex: 1; border-top: 1px solid #333; margin-top: 8mm; padding-top: 1px; text-align: center; font-size: 10px; }

/* ── Instalar aplicação (login) ── */
.btn-instalar { width: 100%; margin-top: 10px; padding: 11px; border-radius: 12px; border: 1.5px dashed var(--card-borda); background: transparent; color: var(--texto); cursor: pointer; font-weight: 700; font-size: calc(13px * var(--esc)); }
.btn-instalar:hover { border-style: solid; background: var(--sup2, rgba(26,60,110,.06)); }
.inst-veu { position: fixed; inset: 0; background: rgba(10,20,40,.55); z-index: 9999; align-items: center; justify-content: center; padding: 16px; }
.inst-caixa { background: var(--sup, #fff); color: var(--texto, #111); width: 100%; max-width: 520px; max-height: 92vh; overflow: auto; border-radius: 18px; padding: 18px 18px 14px; box-shadow: 0 18px 50px rgba(0,0,0,.35); }
.inst-cab { display: flex; gap: 12px; align-items: center; margin-bottom: 10px; }
.inst-cab img { border-radius: 10px; flex: none; }
.inst-cab > div { flex: 1; }
.inst-tit { font-weight: 800; font-size: calc(16px * var(--esc)); }
.inst-sub { font-size: calc(12px * var(--esc)); color: var(--texto2); }
.inst-x { border: 0; background: transparent; font-size: 18px; cursor: pointer; color: var(--texto2); align-self: flex-start; }
.inst-detectado { font-size: calc(13px * var(--esc)); margin: 6px 0 10px; }
.inst-alerta { color: #b45309; font-weight: 600; }
#btnInstalarAgora { margin-bottom: 10px; }
.inst-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.inst-tabs button { flex: 1 1 auto; padding: 7px 8px; border-radius: 9px; border: 1px solid var(--card-borda); background: transparent; color: var(--texto); cursor: pointer; font-size: calc(12px * var(--esc)); }
.inst-tabs button.ativo { background: var(--btn-pri); color: var(--sobre-btn-pri); border-color: transparent; font-weight: 700; }
.inst-passos ol { margin: 6px 0 4px; padding-left: 20px; font-size: calc(13px * var(--esc)); line-height: 1.5; }
.inst-passos li { margin-bottom: 5px; }
.inst-ic { display: inline-block; border: 1px solid var(--card-borda); border-radius: 5px; padding: 0 4px; }
.inst-nota { font-size: calc(11.5px * var(--esc)); color: var(--texto2); margin: 8px 0 0; border-top: 1px solid var(--card-borda); padding-top: 8px; }

/* ── Armazéns (sacos) ── */
.silos.armazens { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.silo.armazem svg { max-width: 210px; }

.inst-alt { background: #fff7e0; color: #4a3500; border: 1px solid #f0c75e; border-radius: 10px; padding: 10px 12px; margin: 0 0 10px; font-size: calc(12.5px * var(--esc)); line-height: 1.55; }
.inst-alt .mini { color: #6b5520; }

/* ── Impressão A4 (paisagem) dos movimentos de silos e armazéns ── */
@page relmov { size: A4 landscape; margin: 10mm 10mm 14mm; }
.rel-mov { page: relmov; font-family: Arial, Helvetica, sans-serif; color: #111; font-size: 10.5px; }
.rel-mov .rm-cab { display: flex; align-items: center; gap: 12px; border-bottom: 2.5px solid #1a3c6e; padding-bottom: 6px; }
.rel-mov .rm-cab img { height: 54px; max-width: 160px; object-fit: contain; }
.rel-mov .rm-cab > div:nth-child(2), .rel-mov .rm-cab > div:first-child:not(.rm-tit) { flex: 1; }
.rel-mov h2 { margin: 0; color: #1a3c6e; font-size: 17px; }
.rel-mov .rm-sub { color: #555; font-size: 9.5px; }
.rel-mov .rm-tit { text-align: right; font-weight: 800; color: #1a3c6e; font-size: 14px; margin-left: auto; }
.rel-mov .rm-tit span { font-weight: 400; font-size: 11px; color: #444; }
.rel-mov .rm-filtros { margin: 6px 0 2px; font-size: 10px; color: #333; font-style: italic; }
.rel-mov h3 { font-size: 12px; color: #1a3c6e; margin: 10px 0 4px; }
.rel-mov .rm-tab { width: 100%; border-collapse: collapse; }
.rel-mov .rm-tab th { background: #1a3c6e; color: #fff; padding: 4px 5px; text-align: left; font-size: 9.5px; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.rel-mov .rm-tab td { border-bottom: 1px solid #d5dbe5; padding: 3px 5px; vertical-align: top; }
.rel-mov .rm-tab tr:nth-child(even) td { background: #f3f6fa; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.rel-mov .rm-tab .n { text-align: right; white-space: nowrap; }
.rel-mov .rm-tab .pos { color: #1d7a3e; } .rel-mov .rm-tab .neg { color: #b4321e; }
.rel-mov .rm-tab tr.tot td { background: #fff5db; font-weight: 700; border-top: 1.5px solid #1a3c6e; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.rel-mov .rm-tab thead { display: table-header-group; } .rel-mov .rm-tab tr { page-break-inside: avoid; }
.rel-mov .rm-assin { display: flex; gap: 30px; margin-top: 34px; page-break-inside: avoid; }
.rel-mov .rm-assin > div { flex: 1; border-top: 1px solid #333; text-align: center; padding-top: 3px; font-size: 10px; }
.rel-mov .rm-assin small { color: #555; }
.rel-mov .rm-rodape { position: fixed; bottom: 0; left: 0; right: 0; display: flex; justify-content: space-between; font-size: 8.5px; color: #555; border-top: 1px solid #ccc; padding-top: 2px; }
@media print {
  body.imp-relmov > *:not(#areaImpressao) { display: none !important; }
  body.imp-relmov #areaImpressao { position: static !important; }
}
