:root{
  --azul:#123a5e; --azul2:#2E75B6; --azulc:#E8F1FA; --fundo:#f4f6f9; --borda:#d5dfeb; --texto:#1d2433; --cinza:#5b6577;
  --verde:#1E7B34; --verdec:#E6F4EA; --vermelho:#B42318; --vermelhoc:#FDE8E8; --amarelo:#8a6100; --amareloc:#FFF4D6;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:Inter,Segoe UI,Arial,sans-serif;font-size:16px;color:var(--texto);background:var(--fundo)}
button,input,select,textarea{font:inherit}
.carregando{padding:40px;font-size:20px;color:var(--cinza)}
/* Login */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#123a5e,#2E75B6)}
.login form{background:#fff;padding:36px 40px;border-radius:14px;width:380px;box-shadow:0 10px 40px rgba(0,0,0,.25)}
.login img{height:70px;display:block;margin:0 auto 10px}
.login h1{text-align:center;font-size:22px;color:var(--azul);margin:0 0 22px}
/* Layout */
.layout{display:flex;min-height:100vh}
.menu{width:240px;background:var(--azul);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.menu .topo{padding:18px 18px 12px;display:flex;gap:10px;align-items:center;border-bottom:1px solid rgba(255,255,255,.15)}
.menu .topo img{height:40px;border-radius:6px;background:#fff}
.menu .topo b{font-size:15px;line-height:1.2}
.menu nav{flex:1;overflow:auto;padding:10px 0}
.menu nav a{display:block;color:#dbe7f5;text-decoration:none;padding:11px 20px;font-size:16px;border-left:4px solid transparent}
.menu nav a:hover{background:rgba(255,255,255,.08);color:#fff}
.menu nav a.ativo{background:rgba(255,255,255,.14);color:#fff;border-left-color:#7fb6ea;font-weight:600}
.menu nav .grupo{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:#8fb0d3;padding:14px 20px 4px}
.menu .rodape{padding:14px 18px;border-top:1px solid rgba(255,255,255,.15);font-size:14px}
.menu .rodape a{color:#bcd5ef;cursor:pointer}
.conteudo{flex:1;min-width:0}
.faixa-teste{background:#FFD95A;color:#5c4300;text-align:center;font-weight:800;letter-spacing:2px;padding:6px;font-size:14px}
.pagina{padding:24px 30px 60px;max-width:1400px}
h1.tit{font-size:26px;color:var(--azul);margin:0 0 4px}
.sub{color:var(--cinza);margin:0 0 20px}
/* Componentes */
.cartao{background:#fff;border:1px solid var(--borda);border-radius:12px;padding:18px 20px;margin-bottom:16px}
.cartao h2{font-size:18px;margin:0 0 12px;color:var(--azul)}
.grade{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.kpi{background:#fff;border:1px solid var(--borda);border-radius:12px;padding:16px 18px}
.kpi .lb{font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--cinza);font-weight:700}
.kpi .v{font-size:28px;font-weight:800;color:var(--azul);margin-top:4px}
.barra{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.barra .esp{flex:1}
input,select,textarea{border:1px solid #b9c6d6;border-radius:8px;padding:9px 11px;background:#fff;color:var(--texto);width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--azul2);border-color:var(--azul2)}
input.busca{max-width:460px;font-size:17px;padding:11px 14px}
label{display:block;font-size:13px;font-weight:700;color:var(--cinza);margin-bottom:4px}
.campos{display:grid;grid-template-columns:repeat(12,1fr);gap:12px 14px}
.c2{grid-column:span 2}.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c6{grid-column:span 6}.c8{grid-column:span 8}.c12{grid-column:span 12}
.chk{display:flex;gap:8px;align-items:center;font-size:16px;color:var(--texto);font-weight:500;cursor:pointer;margin:0}
.chk input{width:20px;height:20px}
.papeis{display:flex;gap:22px;flex-wrap:wrap;padding:10px 0}
.btn{border:0;border-radius:8px;padding:10px 18px;font-weight:700;cursor:pointer;background:var(--azul);color:#fff;font-size:15px;white-space:nowrap}
.btn:hover{filter:brightness(1.1)} .btn:disabled{opacity:.45;cursor:not-allowed}
.btn.sec{background:#fff;color:var(--azul);border:1.5px solid var(--azul)}
.btn.verde{background:var(--verde)} .btn.verm{background:var(--vermelho)} .btn.peq{padding:6px 12px;font-size:14px}
.btn.link{background:none;color:var(--azul2);padding:4px 6px;text-decoration:underline}
table.lista{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--borda);border-radius:12px;overflow:hidden}
table.lista th{background:#eef3f9;text-align:left;font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:var(--cinza);padding:10px 12px;border-bottom:1px solid var(--borda)}
table.lista td{padding:10px 12px;border-bottom:1px solid #edf1f6;font-size:15px;vertical-align:top}
table.lista tr.clica{cursor:pointer} table.lista tr.clica:hover td{background:#f5f9fd}
.r{text-align:right} .num{font-variant-numeric:tabular-nums;white-space:nowrap}
.tag{display:inline-block;font-size:12px;font-weight:700;padding:2px 8px;border-radius:20px;margin:1px 3px 1px 0;white-space:nowrap}
.t-azul{background:var(--azulc);color:var(--azul)} .t-verde{background:var(--verdec);color:var(--verde)} .t-verm{background:var(--vermelhoc);color:var(--vermelho)} .t-amar{background:var(--amareloc);color:var(--amarelo)} .t-cinza{background:#eef0f3;color:#4a5568}
.alerta{padding:12px 16px;border-radius:10px;margin:10px 0;font-size:15px}
.alerta.amar{background:var(--amareloc);border:1px solid #f0d58a;color:#5c4300}
.alerta.verm{background:var(--vermelhoc);border:1px solid #f3b7b2;color:#7a1a12}
.alerta.verde{background:var(--verdec);border:1px solid #a9d8b4;color:#14532d}
.alerta.azul{background:var(--azulc);border:1px solid #b9d3ee;color:var(--azul)}
.vazio{padding:30px;text-align:center;color:var(--cinza)}
/* Modal e aviso */
.modal{position:fixed;inset:0;background:rgba(10,25,45,.55);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto;z-index:50}
.modal-caixa{background:#fff;border-radius:14px;width:min(980px,100%);padding:24px 28px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal-caixa.peq{width:min(560px,100%)}
.modal-caixa h2{margin:0 0 14px;color:var(--azul);font-size:22px}
.acoes{display:flex;gap:10px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}
.acoes .esq{margin-right:auto;display:flex;gap:10px}
.oculto{display:none!important}
.aviso{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#1d2433;color:#fff;padding:14px 22px;border-radius:10px;font-size:16px;z-index:60;box-shadow:0 8px 30px rgba(0,0,0,.3);max-width:90vw}
.aviso.erro{background:var(--vermelho)}
.secao{font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:var(--azul2);font-weight:800;margin:20px 0 10px;border-bottom:1px solid var(--borda);padding-bottom:4px}
.perms{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:4px 20px}
.imp-cartoes{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.imp-cartao{background:#fff;border:1px solid var(--borda);border-radius:12px;padding:18px}
.imp-cartao h3{margin:0 0 6px;color:var(--azul)}
.imp-cartao p{color:var(--cinza);font-size:14px;margin:0 0 12px;min-height:40px}
.ordem{display:inline-flex;width:30px;height:30px;border-radius:50%;background:var(--azul);color:#fff;align-items:center;justify-content:center;font-weight:800;margin-right:8px}
.resumo-imp{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}
.resumo-imp div{padding:10px 16px;border-radius:10px;font-weight:700;font-size:16px}
@media (max-width:900px){.menu{display:none}.c2,.c3,.c4,.c5,.c6,.c8{grid-column:span 12}}
