:root{
  --g:#3B6D11;--gbg:#EAF3DE;--gbd:#97C459;
  --r:#A32D2D;--rbg:#FCEBEB;--rbd:#F09595;
  --b:#185FA5;--bbg:#E6F1FB;--bbd:#85B7EB;
  --t:#1a1a1a;--t2:#666;--t3:#999;
  --bg:#fff;--bg2:#f5f5f3;--bg3:#ebebeb;
  --br:rgba(0,0,0,.12);--ra:10px;--ral:14px;
}
@media(prefers-color-scheme:dark){:root{
  --t:#f0f0ee;--t2:#aaa;--t3:#666;
  --bg:#111;--bg2:#1c1c1c;--bg3:#2a2a2a;--br:rgba(255,255,255,.12);
  --gbg:#162808;--rbg:#2a0e0e;--bbg:#0d1e33;
}}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--t);max-width:420px;margin:0 auto}
.tb{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:.5px solid var(--br)}
.logo{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px}
.net{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--t2)}
.nd{width:7px;height:7px;border-radius:50%;background:#639922;animation:blink 2s infinite}
.nd.off{background:var(--r);animation:none}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
.lb{display:flex;align-items:center;gap:8px;padding:9px 16px;background:var(--bg2);border-bottom:.5px solid var(--br)}
.lb select{flex:1;background:var(--bg);color:var(--t);border:.5px solid var(--br);border-radius:var(--ra);padding:7px 10px;font-size:13px}
.lbtn{padding:6px 11px;border:.5px solid var(--br);border-radius:var(--ra);background:none;cursor:pointer;font-size:12px;color:var(--t2);white-space:nowrap}
.lbtn:hover{color:var(--t);background:var(--bg)}
.ca{text-align:center;padding:14px 16px 6px}
.clk{font-size:48px;font-weight:300;font-variant-numeric:tabular-nums;letter-spacing:2px;color:var(--t);line-height:1}
.cld{font-size:12px;color:var(--t2);margin-top:4px}
.na{padding:10px 16px 0}
.nl{font-size:11px;color:var(--t3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px}
.nd2{font-size:28px;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:6px;text-align:center;background:var(--bg2);border:.5px solid var(--br);border-radius:var(--ra);padding:12px 16px;color:var(--t);min-height:56px;display:flex;align-items:center;justify-content:center;transition:all .2s}
.nd2.ok{background:var(--gbg);border-color:var(--gbd);color:var(--g)}
.nd2.err{background:var(--rbg);border-color:var(--rbd);color:var(--r)}
.nd2.sc{background:var(--bbg);border-color:var(--bbd);color:var(--b)}
.kp{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 16px}
.k{padding:16px;border-radius:var(--ra);border:.5px solid var(--br);background:var(--bg);font-size:20px;cursor:pointer;text-align:center;color:var(--t);user-select:none;transition:background .1s,transform .08s}
.k:active{transform:scale(.93);background:var(--bg3)}
.k.sm{font-size:12px;font-weight:600;color:var(--t2)}
.k.cl{color:var(--r)}
/* BOTAO BIO */
.bs{padding:10px 16px 12px}
.bb{width:100%;border:1.5px solid var(--br);border-radius:18px;background:var(--bg);cursor:pointer;overflow:hidden;transition:all .2s;margin-top:10px}
.bb:active{transform:scale(.98)}
.bb.wait{border-color:var(--bbd);background:var(--bbg);cursor:default;animation:pblink 1.6s infinite}
@keyframes pblink{0%,100%{border-color:var(--bbd)}50%{border-color:var(--b)}}
.bb.suc{border-color:var(--gbd);background:var(--gbg);cursor:default}
.bb.fail{border-color:var(--rbd);background:var(--rbg);cursor:default}
.pbar{height:4px;background:var(--br);overflow:hidden}
.pfil{height:100%;width:0%;transition:width .15s linear;background:var(--b)}
.pfil.ok{background:#639922}.pfil.ko{background:#E24B4A}
.bin{display:flex;flex-direction:column;align-items:center;gap:5px;padding:20px 20px 18px}
.bring{position:relative;width:72px;height:72px;display:flex;align-items:center;justify-content:center}
.brspin{position:absolute;top:0;left:0;width:72px;height:72px;display:none}
.bric{transition:color .3s}
.bb.wait .bric{color:var(--b)!important}
.bb.suc  .bric{color:var(--g)!important}
.bb.fail .bric{color:var(--r)!important}
.bcd{font-size:38px;font-weight:300;font-variant-numeric:tabular-nums;color:var(--b);min-height:46px;line-height:46px}
.btit{font-size:17px;font-weight:600;color:var(--t)}
.bhint{font-size:12px;color:var(--t2);text-align:center;line-height:1.55;max-width:270px}
.bb.wait .bhint{color:var(--b)}
.bb.suc  .bhint{color:var(--g)}
.bb.fail .bhint{color:var(--r)}
/* CAIXA INSTRUCOES LEITOR */
.dh{display:none;align-items:flex-start;gap:10px;padding:10px 14px;background:var(--bbg);border-radius:var(--ra);border:.5px solid var(--bbd);margin-top:8px;font-size:12px;color:var(--b);line-height:1.6}
.dh svg{width:20px;height:20px;flex-shrink:0;margin-top:1px}
/* SYNC */
.sbar{display:flex;align-items:center;justify-content:space-between;padding:9px 16px;background:var(--bg2);border-top:.5px solid var(--br);border-bottom:.5px solid var(--br);margin-top:2px}
.si{font-size:12px;color:var(--t2)}.si strong{color:var(--t)}
.sbs{display:flex;gap:6px}
.sbt{padding:5px 11px;border-radius:var(--ra);border:.5px solid var(--br);background:none;cursor:pointer;font-size:12px;color:var(--t2)}
.sbt:active{background:var(--bg3)}
.sbt.ep{border-color:var(--bbd);color:var(--b)}
/* QUEUE */
.qa{padding:12px 16px}
.qtop{font-size:11px;color:var(--t3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;display:flex;justify-content:space-between}
.qi{display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:var(--ra);border:.5px solid var(--br);background:var(--bg);margin-bottom:5px;font-size:13px}
.qtp{font-weight:700;min-width:18px}.qe{color:var(--g)}.qs{color:var(--r)}
.qn{font-weight:600;font-variant-numeric:tabular-nums;flex:1}
.qlc{color:var(--t2);font-size:12px}
.qhr{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25;font-variant-numeric:tabular-nums}
.qhrT{font-size:12px;color:var(--t2)}
.qhrD{font-size:9px;color:var(--t3)}
.qdot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.dp{background:#EF9F27}.dok{background:#639922}
.qem{text-align:center;padding:1.5rem;font-size:13px;color:var(--t3)}
/* MODAIS */
.mbg{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1001}
.mo{background:var(--bg);border-radius:var(--ral);border:.5px solid var(--br);padding:22px;width:100%;max-width:340px;max-height:calc(100vh - 40px);overflow-y:auto;position:relative}
/* Janelas arrastáveis/redimensionáveis — só em ecrã de computador (ver app.js) */
.w-resize-grip{position:absolute;right:2px;bottom:2px;width:16px;height:16px;cursor:nwse-resize;display:none;background:linear-gradient(135deg,transparent 50%,var(--br) 50%);border-radius:0 0 8px 0;z-index:5}
@media (min-width:900px) and (pointer:fine){.w-floatable .w-resize-grip{display:block}}
.mo h3{font-size:15px;font-weight:600;margin-bottom:16px;color:var(--t)}
.mo label{display:block;font-size:12px;color:var(--t2);margin-bottom:4px}
.mo input{width:100%;font-size:14px;padding:10px 12px;border-radius:var(--ra);border:.5px solid var(--br);background:var(--bg2);color:var(--t);margin-bottom:10px}
.mo input:focus{outline:none;border-color:var(--bbd)}
.merr{font-size:12px;color:var(--r);margin-top:-7px;margin-bottom:10px;display:none}
.mbs{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}
.mb{padding:8px 16px;border-radius:var(--ra);border:.5px solid var(--br);background:none;cursor:pointer;font-size:13px;color:var(--t2)}
.mb:active{background:var(--bg3)}
.mb.p{background:var(--t);color:var(--bg);border-color:transparent;font-weight:600}
.mb.d{border-color:var(--rbd);color:var(--r)}
.mb-status{font-size:13px;padding:10px 12px;border-radius:var(--ra);border:1px solid transparent;min-height:46px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.4}
.mb-status-pending{background:var(--bbg);border-color:var(--bbd);color:var(--b)}
.mb-status-ok{background:var(--gbg);border-color:var(--gbd);color:var(--g);font-weight:600}
.mb-status-none{background:var(--rbg);border-color:var(--rbd);color:var(--r)}
.li{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:.5px solid var(--br)}
.li:last-child{border-bottom:none}
.lid{font-size:11px;font-weight:600;background:var(--bg2);padding:3px 8px;border-radius:99px;color:var(--t2)}
.lin{flex:1;font-size:14px;color:var(--t)}
.leb{padding:5px 10px;border:.5px solid var(--br);border-radius:var(--ra);background:none;cursor:pointer;font-size:12px;color:var(--t2)}
.leb:hover{color:var(--t);background:var(--bg2)}

.gp{position:fixed;inset:0;background:var(--bg);z-index:999;overflow-y:auto;display:none}
.gp-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:.5px solid var(--br);position:sticky;top:0;background:var(--bg);z-index:1}
.gp-tabs{display:flex;gap:0;border-bottom:.5px solid var(--br);position:sticky;top:42px;background:var(--bg);z-index:1}
.gp-tab{flex:1;text-align:center;padding:10px 8px;font-size:12px;font-weight:600;color:var(--t2);cursor:pointer;border-bottom:2px solid transparent}
.gp-tab.at{color:var(--b);border-bottom-color:var(--b)}
.gp-body{padding:12px 16px}
.gp-card{border:.5px solid var(--br);border-radius:var(--ra);padding:10px 12px;margin-bottom:8px;background:var(--bg)}
.gp-row{display:flex;align-items:center;gap:8px}
.gp-name{font-weight:600;font-size:14px;flex:1}
.gp-meta{font-size:11px;color:var(--t2)}
.gp-badge{display:inline-block;padding:2px 7px;border-radius:99px;font-size:10px;font-weight:600}
.gp-badge.ok{background:var(--gbg);color:var(--g)}
.gp-badge.no{background:var(--bg3);color:var(--t3)}
.gp-badge.warn{background:var(--rbg);color:var(--r)}
.gp-btn{padding:5px 10px;border:.5px solid var(--br);border-radius:var(--ra);background:none;cursor:pointer;font-size:12px;color:var(--t2)}
.gp-btn:active{background:var(--bg3)}
.gp-btn.pri{background:var(--t);color:var(--bg);border-color:transparent;font-weight:600}
.gp-input{width:100%;padding:8px 10px;border:.5px solid var(--br);border-radius:var(--ra);background:var(--bg2);color:var(--t);font-size:13px;margin-bottom:8px}
.gp-label{font-size:11px;color:var(--t2);margin-bottom:3px;display:block}
.gp-empty{text-align:center;padding:2rem;color:var(--t3);font-size:13px}
/* ENTRADA / SAÍDA */
.es-wrap{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px 16px 6px}
.es-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:22px 12px;border-radius:var(--ral);border:1.5px solid var(--br);background:var(--bg);cursor:pointer;transition:background .15s,border-color .15s,transform .1s;user-select:none;-webkit-tap-highlight-color:transparent}
.es-btn:active{transform:scale(.95)}
.es-ico{font-size:30px;line-height:1;color:var(--t)}
.es-lbl{font-size:15px;font-weight:700;color:var(--t)}
.es-btn.sel-e{border-color:var(--gbd);background:var(--gbg)}
.es-btn.sel-e .es-ico,.es-btn.sel-e .es-lbl{color:var(--g)}
.es-btn.sel-s{border-color:var(--rbd);background:var(--rbg)}
.es-btn.sel-s .es-ico,.es-btn.sel-s .es-lbl{color:var(--r)}
