:root{
  /* paleta da marca Boviscan: 014A3B · 2E7D32 · A8D08D · E8F4E6 */
  --marca-escura:#014A3B; --marca:#2E7D32; --marca-clara:#A8D08D; --marca-papel:#E8F4E6;
  --bg:#F2F2F2; --panel:#ffffff; --panel2:#F7F7F7; --line:#DEDEDE; --line2:#EDEDED;
  --txt:#1F1F1F; --dim:#6E6E6E; --accent:#2E7D32; --accent2:#014A3B;
  --warn:#B0741A; --danger:#B93B2C; --fence:#E0A200;
  --sombra:0 1px 2px rgba(0,0,0,.05), 0 1px 3px rgba(0,0,0,.04);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  background:var(--bg);color:var(--txt);font-size:13px;-webkit-font-smoothing:antialiased}
a{color:var(--marca);text-decoration:none}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#C9C9C9;border-radius:5px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#B4B4B4}

header.topo{display:flex;align-items:center;gap:14px;padding:9px 16px;background:var(--panel);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;box-shadow:var(--sombra)}
.brand{display:flex;align-items:center;gap:11px}
.brand h1{font-size:14px;font-weight:650}
.brand span{display:block;font-size:10.5px;color:var(--dim);font-weight:400}
.brand .simbolo{height:30px;width:auto;display:block}

/* Marca do produto. Se o arquivo da logo não existir, o wordmark em texto assume. */
.marca-produto{display:flex;align-items:center;gap:9px;text-decoration:none;color:inherit}
.marca-produto img{height:40px;width:auto;display:none}
.marca-produto img.ok{display:block}
.marca-produto img.ok+.wordmark{display:none}
.wordmark{font-size:19px;font-weight:750;letter-spacing:-.4px;line-height:1;
  color:var(--marca-escura);white-space:nowrap}
.wordmark em{font-style:normal;color:var(--marca)}
.wordmark.g{font-size:34px;letter-spacing:-.8px}
.wordmark.p{font-size:15px}

/* separador e marca do cliente na barra superior */
.divisor{width:1px;height:30px;background:var(--line);flex:0 0 auto}
.cliente{display:flex;align-items:center;gap:9px;min-width:0}
.cliente img{height:30px;width:auto;max-width:110px;object-fit:contain;flex:0 0 auto}
.cliente .nm{font-size:12.5px;font-weight:600;line-height:1.25;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cliente .nm small{display:block;font-size:10px;color:var(--dim);font-weight:400}

/* crédito do desenvolvedor */
.credito{display:flex;align-items:center;gap:7px;font-size:10.5px;color:var(--dim);
  justify-content:center}
.credito img{height:17px;width:auto;opacity:.9}

/* caixa de upload de logo */
.logo-box{display:flex;align-items:center;gap:11px;background:var(--panel2);
  border:1px solid var(--line);border-radius:9px;padding:9px 10px}
.logo-box .prev{width:54px;height:54px;flex:0 0 auto;border-radius:8px;background:#fff;
  border:1px dashed #C6C6C6;display:grid;place-items:center;overflow:hidden}
.logo-box .prev img{max-width:100%;max-height:100%;object-fit:contain}
.logo-box .prev span{font-size:9.5px;color:#9A9A9A;text-align:center;line-height:1.3;padding:3px}

.espaco{margin-left:auto}
.abas{display:flex;gap:3px}
.abas button{background:transparent;border:1px solid transparent;color:var(--dim);
  padding:6px 13px;border-radius:7px;cursor:pointer;font-size:12.5px;font-family:inherit}
.abas button:hover{background:var(--panel2);color:var(--txt)}
.abas button.on{background:var(--marca-papel);border-color:#BFDCBB;color:var(--marca-escura);
  font-weight:650}
.quem{font-size:11.5px;color:var(--dim);text-align:right;line-height:1.3}
.quem b{color:var(--txt);display:block;font-size:12px}

button{font-family:inherit;font-size:12px;border:1px solid var(--line);background:#fff;
  color:var(--txt);padding:7px 11px;border-radius:7px;cursor:pointer;transition:.13s}
button:hover:not(:disabled){background:var(--panel2);border-color:#C9C9C9}
button:disabled{opacity:.45;cursor:not-allowed}
button.primary{background:var(--marca);border-color:var(--marca);color:#fff;font-weight:650}
button.primary:hover:not(:disabled){background:#266B2A;border-color:#266B2A}
button.on{background:var(--marca);border-color:var(--marca);color:#fff;font-weight:600}
button.perigo{border-color:#E4BDB7;color:var(--danger);background:#fff}
button.perigo:hover:not(:disabled){background:#FDF2F0;border-color:#D9A9A2}
button.wide{width:100%}
button.mini{padding:4px 8px;font-size:11px}

input,select,textarea{width:100%;background:#fff;border:1px solid var(--line);color:var(--txt);
  padding:7px 9px;border-radius:6px;font-family:inherit;font-size:12.5px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--marca);
  box-shadow:0 0 0 3px rgba(46,125,50,.12)}
label.fld{display:block;margin-bottom:9px}
label.fld span{display:block;font-size:10.5px;color:var(--dim);margin-bottom:3px}
.linha{display:flex;gap:7px}
.linha>*{flex:1}

.card{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:14px;
  box-shadow:var(--sombra)}
.card h2{font-size:10.5px;text-transform:uppercase;letter-spacing:.9px;color:var(--dim);
  margin-bottom:10px;font-weight:650}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:13px 15px;
  box-shadow:var(--sombra)}
.kpi b{display:block;font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.kpi i{font-style:normal;font-size:10.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.6px}
.kpi small{display:block;color:var(--dim);font-size:11px;margin-top:3px}
.kpi.verde b{color:var(--marca)}
.kpi.amarelo b{color:var(--warn)}

table{width:100%;border-collapse:collapse;font-size:12px}
th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--dim);
  font-weight:650;padding:7px 9px;border-bottom:1px solid var(--line)}
td{padding:8px 9px;border-bottom:1px solid var(--line2)}
tr:hover td{background:var(--panel2)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}

.tag{display:inline-block;padding:2px 8px;border-radius:20px;font-size:10.5px;font-weight:600;
  border:1px solid var(--line);color:var(--dim);background:var(--panel2)}
.tag.nova{border-color:#D6D6D6}
.tag.na_fila,.tag.processando{border-color:#E8CFA0;color:#8A6A12;background:#FFF7E8}
.tag.detectada{border-color:#BCD4EC;color:#2A6099;background:#EDF4FB}
.tag.conferida{border-color:#A9D3A2;color:var(--marca-escura);background:var(--marca-papel)}
.tag.erro{border-color:#E9B4AC;color:var(--danger);background:#FDEFEC}

.vazio{text-align:center;color:#9A9A9A;padding:34px 16px;line-height:1.8}
.grade{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
.foto{background:#fff;border:1px solid var(--line);border-radius:9px;overflow:hidden;
  cursor:pointer;transition:.13s}
.foto:hover{border-color:var(--marca);transform:translateY(-1px);box-shadow:var(--sombra)}
.foto img{width:100%;height:112px;object-fit:cover;display:block;background:#E6E6E6}
.foto .info{padding:7px 8px;font-size:11px;line-height:1.45}
.foto .info .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--dim)}
.foto .info .ct{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}

#toast{position:fixed;top:16px;left:50%;transform:translateX(-50%);background:var(--marca-escura);
  color:#fff;border:1px solid rgba(255,255,255,.15);padding:9px 18px;border-radius:9px;
  font-size:12.5px;opacity:0;transition:.25s;pointer-events:none;z-index:100;max-width:70vw;
  box-shadow:0 6px 20px rgba(0,0,0,.18)}
#toast.show{opacity:1}
#toast.ruim{background:var(--danger)}

.barra{height:6px;background:#E6E6E6;border-radius:4px;overflow:hidden;border:1px solid var(--line)}
.barra i{display:block;height:100%;background:linear-gradient(90deg,var(--marca-escura),var(--marca))}
.mini-txt{font-size:10.5px;color:var(--dim);line-height:1.6}
kbd{background:var(--panel2);border:1px solid #CFCFCF;border-bottom-width:2px;border-radius:4px;
  padding:0 4px;font-size:10px;font-family:inherit;color:var(--txt)}
