:root{
  --azul:#1f3a5f; --azul2:#2c5282; --cinza:#f4f5f7; --borda:#dfe3e8;
  --texto:#1a202c; --suave:#667085; --ok:#1e7e4f; --erro:#c0392b; --proc:#b7791f;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,Segoe UI,Roboto,Arial,sans-serif;background:var(--cinza);color:var(--texto)}
h1,h2,h3{color:var(--azul)}
.sub{color:var(--suave);font-weight:400}
.centralizado{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.cartao{background:#fff;border:1px solid var(--borda);border-radius:12px;padding:22px;margin:0 auto 18px;max-width:860px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.login{max-width:360px;width:100%}
.login h1{margin:0 0 2px;font-size:22px}
label{display:block;margin:12px 0;font-size:14px;color:var(--suave)}
input,textarea{width:100%;padding:10px 12px;border:1px solid var(--borda);border-radius:8px;font-size:15px;margin-top:4px}
button{cursor:pointer;font-size:15px}
button[type=submit],.primario{background:var(--azul2);color:#fff;border:none;border-radius:8px;padding:11px 18px;width:100%;margin-top:8px}
.primario:disabled{background:#9fb3c8;cursor:not-allowed}
.link{background:none;border:none;color:var(--azul2);text-decoration:underline;padding:0;width:auto;margin:0}
.erro{background:#fdecea;color:var(--erro);padding:10px;border-radius:8px;font-size:14px;margin:8px 0}
.topo{background:#fff;border-bottom:1px solid var(--borda);padding:14px 22px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}
.topo-dir{display:flex;gap:16px;align-items:center;font-size:14px;color:var(--suave)}
main{max-width:860px;margin:22px auto;padding:0 16px}
.dica{color:var(--suave);font-size:13px;margin:6px 0}
.dropzone{border:2px dashed var(--borda);border-radius:10px;padding:26px;text-align:center;transition:.15s}
.dropzone.ativo{border-color:var(--azul2);background:#f0f6ff}
.nome-arquivo{font-weight:600;margin:10px 0;color:var(--azul)}
.barra-wrap{height:8px;background:#e6e9ee;border-radius:6px;margin-top:14px;overflow:hidden}
.barra{height:100%;width:0;background:var(--azul2);transition:width .2s}
.tabela{width:100%;border-collapse:collapse;margin-top:8px}
.tabela th,.tabela td{text-align:left;padding:10px;border-bottom:1px solid var(--borda);font-size:14px}
.tabela th{color:var(--suave);font-weight:600}
.vazio{color:var(--suave);text-align:center;padding:18px}
.badge{padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}
.b-queued{background:#eef2f7;color:var(--suave)}
.b-processing{background:#fdf2e0;color:var(--proc)}
.b-done{background:#e7f6ec;color:var(--ok)}
.b-error{background:#fdecea;color:var(--erro)}
.aviso{padding:10px;border-radius:8px;font-size:14px;margin-top:12px;background:#fdf2e0;color:var(--proc)}
.aviso.ok{background:#e7f6ec;color:var(--ok)}
.aviso.ruim{background:#fdecea;color:var(--erro)}
.oculto{display:none !important}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;padding:16px;z-index:10}
.modal-cartao{max-width:420px;width:100%;margin:0}
.modal-cartao.grande{max-width:760px}
.modal-botoes{display:flex;justify-content:flex-end;gap:16px;align-items:center;margin-top:14px}
.modal-botoes .primario{width:auto}
#t-conteudo{min-height:340px;font-family:ui-monospace,Consolas,monospace;font-size:13px;white-space:pre}
.acao{color:var(--azul2);text-decoration:underline;cursor:pointer;margin-right:12px}
.prog{min-width:170px}
.prog-txt{font-size:12px;color:var(--proc);margin-bottom:4px;white-space:nowrap}
.prog-bar{height:7px;background:#eef2f7;border-radius:6px;overflow:hidden}
.prog-fill{height:100%;background:var(--azul2);transition:width 1s ease}
