
:root{--ink:#14213d;--paper:#f7f5f0;--accent:#b5442a;--line:#d8d3c8;--teal:#1f6f8b;--green:#4a7c59;--amber:#c99417;--card:#fff;--soft:#6b6e7a;
  /* Extraídos da peça "O Federal de Lula" (login-hero.png), só para a tela de
     login: --verde-bandeira e --menta-ponte não existiam na paleta do sistema.
     O vermelho da foto (#b2011b) não ganhou token novo — é próximo o bastante
     do #c8102e que o sistema já usa em selos e barras ligados ao Veras. */
  --verde-bandeira:#3f9e46;--menta-ponte:#bdf3d4;}
*{box-sizing:border-box;margin:0}
body{font-family:'Archivo',system-ui,sans-serif;color:var(--ink);background:var(--paper);height:100vh;display:flex;flex-direction:column;overflow:hidden}
header{padding:10px 18px;border-bottom:3px solid var(--ink);display:flex;align-items:center;gap:18px;flex-wrap:wrap}
header h1{font-family:'Spectral',serif;font-size:1.2rem;font-weight:700}
header .warn{font-size:.7rem;color:var(--accent);max-width:320px;line-height:1.3}
nav{display:flex;gap:2px;margin-left:auto;flex-wrap:wrap}
nav button{font-family:inherit;font-size:.82rem;padding:7px 14px;border:1px solid var(--ink);background:#fff;color:var(--ink);cursor:pointer;border-radius:0}
nav button.active{background:var(--ink);color:#fff}
nav button:hover:not(.active){background:var(--paper)}
.io{display:flex;gap:6px}
.io button{font-size:.72rem;padding:6px 9px;border:1px solid var(--soft);background:#fff;cursor:pointer}
main{flex:1;overflow:hidden;position:relative}
.view{position:absolute;inset:0;overflow:auto;padding:18px;display:none}
.view.active{display:block}
.view.nopad{padding:0}
h2.sec{font-family:'Spectral',serif;font-size:1.05rem;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.pill{font-size:.7rem;background:var(--ink);color:#fff;padding:2px 9px;border-radius:10px}
.grid{display:grid;gap:14px}
.cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.card{background:var(--card);border:1px solid var(--line);padding:14px}
.card h3{font-family:'Spectral',serif;font-size:.95rem;margin-bottom:6px;display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.card .meta{font-size:.78rem;color:var(--soft);line-height:1.5}
.card .meta b{color:var(--ink);font-weight:500}
.tag{display:inline-block;font-size:.68rem;padding:1px 7px;border-radius:9px;margin:1px 2px 1px 0}
.t-pend{background:#fbeadf;color:#b5442a}
.t-rota{background:#e5eff3;color:#1f6f8b}
.t-entr{background:#e4efe7;color:#4a7c59}
form{background:var(--card);border:1px solid var(--line);padding:16px;margin-bottom:18px}
form .row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:10px}
label{font-size:.74rem;color:var(--soft);display:block;margin-bottom:3px}
input,select,textarea{font-family:inherit;font-size:.85rem;padding:7px 9px;border:1px solid var(--ink);width:100%;background:#fff;border-radius:0}
textarea{resize:vertical;min-height:44px}
.btn{font-family:inherit;font-size:.84rem;padding:8px 16px;border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;border-radius:0}
.btn:hover{background:#22345c}
.btn.ghost{background:#fff;color:var(--ink)}
.btn.sm{font-size:.72rem;padding:4px 9px}
.btn.danger{border-color:var(--accent);color:var(--accent);background:#fff}
.btn.danger:hover{background:var(--accent);color:#fff}
table{width:100%;border-collapse:collapse;background:#fff;font-size:.82rem}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}
th{font-family:'Spectral',serif;font-size:.8rem;background:var(--paper);position:sticky;top:0}
tr:hover td{background:#fafaf7}
.empty{text-align:center;color:var(--soft);padding:40px;font-size:.9rem}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}
.kpi{background:var(--card);border:1px solid var(--line);padding:14px}
.kpi .n{font-family:'Spectral',serif;font-size:1.8rem;font-weight:700;color:var(--accent)}
.kpi .l{font-size:.76rem;color:var(--soft);margin-top:2px}
.bar{height:8px;background:var(--paper);border:1px solid var(--line);overflow:hidden;margin-top:6px}
.bar > span{display:block;height:100%;background:var(--teal)}
#map{position:absolute;inset:0}
.maptools{position:absolute;top:10px;left:50px;z-index:500;background:#fff;border:1px solid var(--ink);padding:8px 10px;font-size:.78rem;max-width:230px;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.maptools label{color:var(--ink);font-weight:500;margin-top:6px}
.maptools .hint{font-size:.68rem;color:var(--soft);margin-top:4px;line-height:1.3}
.flagpop b{font-family:'Spectral',serif}
.leaflet-popup-content{font-family:'Archivo',sans-serif;font-size:.82rem;line-height:1.5}
.zbadge{display:inline-block;background:var(--ink);color:#fff;padding:1px 8px;font-size:.72rem;margin-bottom:4px}
.row-act{display:flex;gap:5px}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;font-size:.84rem;z-index:2000;opacity:0;transition:opacity .3s;border-radius:2px}
.toast.show{opacity:1}
.filterbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center}
.filterbar input,.filterbar select{width:auto;min-width:150px}
.split{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:800px){.split{grid-template-columns:1fr}}

#view-mapa .mapbar,#view-veras .mapbar,#view-local .mapbar,#view-zonas .mapbar{position:absolute;top:10px;left:56px;right:262px;z-index:600;display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:rgba(247,245,240,.95);border:1px solid var(--ink);padding:8px 10px}
#view-mapa .mapbar select,#view-mapa .mapbar input[type=search],#view-veras .mapbar select,#view-veras .mapbar input[type=search],#view-local .mapbar select,#view-local .mapbar input[type=search],#view-zonas .mapbar select,#view-zonas .mapbar input[type=search]{font-size:.82rem;padding:6px 9px;border:1px solid var(--ink);background:#fff;min-width:140px;width:auto}
#view-mapa .mapbar label.ck,#view-veras .mapbar label.ck,#view-local .mapbar label.ck,#view-zonas .mapbar label.ck{font-size:.8rem;display:flex;align-items:center;gap:5px;cursor:pointer;color:var(--ink)}
#view-mapa #side,#view-veras #side,#view-local #side,#view-zonas #side{position:absolute;top:0;right:0;bottom:0;width:250px;overflow-y:auto;border-left:1px solid var(--line);background:#fff;padding:10px 12px;font-size:.78rem;z-index:500}
#view-mapa #side h2,#view-veras #side h2,#view-local #side h2,#view-zonas #side h2{font-family:'Spectral',serif;font-size:.9rem;margin-bottom:8px}
#view-mapa #map,#view-veras #vmap,#view-local #lmap,#view-zonas #zmap{position:absolute;top:0;left:0;bottom:0;right:250px}
.lg{display:flex;align-items:center;gap:8px;padding:3px 4px;cursor:pointer}
.lg:hover{background:var(--paper)}
.lg .dot{width:12px;height:12px;border:1px solid rgba(0,0,0,.35);flex:none}
.lg small{color:#777;margin-left:auto}
.aprx{display:inline-block;border:1px dashed var(--accent);color:var(--accent);padding:0 6px;font-size:.68rem;margin-left:6px}
.btip{font-family:'Archivo',sans-serif;font-size:.72rem}
#stats,#vStats{font-size:.78rem;line-height:1.35;margin:6px 0 10px;padding-bottom:10px;border-bottom:1px solid var(--line)}
#stats b,#vStats b{font-size:1rem;color:var(--accent)}
.flagbox{background:var(--paper);border:1px solid var(--ink);padding:10px;margin-bottom:12px}
.flagbox .hint{font-size:.68rem;color:var(--soft);margin-top:6px;line-height:1.35}
/* aba veras */
#view-veras .seg,#view-local .seg{display:flex;border:1px solid var(--ink)}
#view-veras .seg button,#view-local .seg button{font-family:inherit;font-size:.82rem;padding:6px 13px;border:none;background:#fff;color:var(--ink);cursor:pointer;width:auto}
#view-veras .seg button.on,#view-local .seg button.on{background:#c8102e;color:#fff}
.lpbadge{display:inline-block;background:#c8102e;color:#fff;padding:1px 8px;font-size:.72rem;margin-bottom:4px}
.lup{color:#2f7d5a;font-weight:700}.ldown{color:#b5442a;font-weight:700}
#tbodyRelZona td.up{color:#2f7d5a}#tbodyRelZona td.down{color:#b5442a}
.tag.t-devo{background:#6b6e7a;color:#fff}
.ckbandeira{display:inline-flex;align-items:center;gap:8px;font-size:.85rem;color:var(--ink);cursor:pointer;font-weight:normal}
.ckbandeira input{flex:none}
.ckhelp{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--ink);color:#fff;font-size:.7rem;cursor:help}
/* projeção 2026 */
.pj-kpis{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:10px}
.pj-kpi{background:#fff;border:1px solid var(--ink);padding:8px 14px;min-width:130px}
.pj-kpi small{display:block;font-size:.68rem;color:var(--soft);text-transform:uppercase;letter-spacing:.04em}
.pj-kpi b{font-size:1.25rem}
.pj-kpi input{font-family:inherit;font-size:1.05rem;font-weight:700;border:none;border-bottom:2px solid var(--pt);width:110px;background:transparent}
.pj-barwrap{position:relative;height:20px;background:#fff;border:1px solid var(--ink);margin-bottom:10px;max-width:640px}
.pj-bar{height:100%;background:linear-gradient(90deg,#c8102e,#e2503f)}
.pj-barwrap span{position:absolute;top:0;left:8px;font-size:.72rem;line-height:20px;color:var(--ink);font-weight:700}
.pj-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.pj-chip{font-size:.74rem;padding:3px 10px;border:1px solid rgba(0,0,0,.15);cursor:pointer;user-select:none}
.pj-chip:hover{border-color:var(--ink)}
.pj-chip.on{outline:2px solid var(--ink);font-weight:700}
.pot-zona{border:1px solid var(--line);margin-bottom:12px}
.pot-zhead{background:var(--paper);padding:7px 12px;border-bottom:1px solid var(--line);font-size:.86rem}
.pot-tbl{width:100%;border-collapse:collapse}
.pot-tbl th,.pot-tbl td{font-size:.8rem;padding:5px 12px;text-align:left;border-bottom:1px solid #f0eee9}
.pot-tbl th{font-size:.68rem;text-transform:uppercase;letter-spacing:.03em;color:var(--soft)}
.pot-tbl tr:last-child td{border-bottom:none}
.mis-card{border:1px solid var(--line);padding:12px 14px;margin-bottom:12px;background:#fff}
.mis-head{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.9rem}
.mis-score{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:26px;background:var(--ink);color:#fff;font-weight:700;font-size:.8rem;padding:0 6px;margin-right:8px}
.mis-badge{font-weight:700;font-size:.86rem;color:#c8102e}
.mis-barwrap{height:8px;background:var(--paper);border:1px solid var(--line);margin:8px 0}
.mis-bar{height:100%;background:linear-gradient(90deg,#c8102e,#e2503f)}
.mis-proj{font-size:.78rem;color:var(--ink);margin-bottom:6px}
.mis-list{list-style:none;margin:6px 0;padding:0}
.mis-list li{font-size:.82rem;padding:3px 0;display:flex;align-items:center;gap:6px}
.mis-list li.done{color:#2f7d5a}
.mis-ck{font-weight:700}
.mis-prog{color:var(--soft);font-size:.74rem;margin-left:auto}
.mis-meta{width:52px;font-family:inherit;font-size:.74rem;padding:2px 4px;border:1px solid var(--line);margin-left:6px}
.mis-acoes{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}
.mup{color:#2f7d5a}.mdown{color:#b5442a}
.bg-red{background:#fbe9ec}.bg-exp{background:#e8f3ec}.bg-slp{background:#eef0fa}.bg-neu{background:#f2f0ea}
#view-proj table select{min-width:0;width:auto;font-size:.76rem;padding:3px 5px}
.ali-inp{font-family:inherit;font-size:.78rem;padding:3px 5px;border:1px solid var(--line);background:#fff;width:auto;min-width:0}
.ali-inp:focus{border-color:var(--pt);outline:none}
#tbodyAliancas input.ali-inp{width:76px}
#view-proj td, #view-proj th{font-size:.8rem}
.pj-note{font-size:.74rem;color:var(--soft);background:#fff;border:1px solid var(--line);padding:10px 12px;margin:10px 0;line-height:1.5;max-width:980px}
.lrk{display:flex;align-items:center;gap:7px;padding:4px 2px;border-bottom:1px solid var(--paper);cursor:pointer;font-size:.76rem}
.lrk:hover{background:var(--paper)}
.lrk .ln{flex:2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrk .lb{flex:1;height:7px;background:var(--paper);border:1px solid var(--line)}
.lrk .lb>span{display:block;height:100%;background:#c8102e}
.lrk .lv{width:44px;text-align:right;color:var(--soft)}
.vpbadge{display:inline-block;background:#c8102e;color:#fff;padding:1px 8px;font-size:.72rem;margin-bottom:4px}
.vup{color:#2f7d5a;font-weight:700}.vdown{color:#b5442a;font-weight:700}
.vrank{display:flex;align-items:center;gap:7px;padding:3px 2px;border-bottom:1px solid var(--paper);cursor:pointer}
.vrank:hover{background:var(--paper)}
.vrank .vz{font-weight:700;width:40px}
.vrank .vb{flex:1;height:8px;background:var(--paper);border:1px solid var(--line)}
.vrank .vb>span{display:block;height:100%}
.vrank .vv{width:56px;text-align:right;color:var(--soft)}
@media(max-width:900px){#view-mapa .mapbar,#view-veras .mapbar,#view-local .mapbar,#view-zonas .mapbar{right:10px}#view-mapa #side,#view-veras #side,#view-local #side,#view-zonas #side{display:none}#view-mapa #map,#view-veras #vmap,#view-local #lmap,#view-zonas #zmap{right:0}}

/* Tela de login: dividida entre a foto de campanha (Lula e Veras correndo,
   ponte do Recife) e o formulário. É a única tela do sistema com um gesto
   visual maior — as demais abas seguem sóbrias, como já eram.
   position:fixed tira #tela-login do fluxo flex do body (que é height:100vh;
   overflow:hidden, pensado para #tela-sistema). Sem isto, o body espreme
   #tela-login para caber em 100vh e corta o formulário em janelas baixas
   (paisagem de celular, navegador redimensionado) — confirmado testando em
   700×400, onde o botão "Entrar" ficava a 118px fora da área visível. */
#tela-login{position:fixed;inset:0;display:flex;overflow-y:auto}
.login-hero{
  flex:1 1 56%;
  min-width:0;
  border-right:1px solid var(--line);
  background:
    linear-gradient(180deg, var(--menta-ponte) 0%, transparent 20%),
    url('/img/login-hero.jpg') center bottom / cover no-repeat;
}
.login-painel{flex:1 1 44%;display:flex;align-items:center;justify-content:center;padding:40px 32px}
.login-conteudo{width:100%;max-width:360px}
.login-conteudo h1{font-family:'Spectral',serif;font-size:2.2rem;line-height:1.15;font-weight:700;text-wrap:balance;margin-bottom:6px}
.login-sub{font-size:.85rem;color:var(--soft);margin-bottom:28px}
.login-conteudo input{width:100%;margin-bottom:10px}
#erro-login{color:#c8102e;font-size:.85rem;min-height:1.2em;margin-bottom:10px}
#tela-sistema[hidden],#tela-login[hidden]{display:none}
@media(max-width:800px){
  #tela-login{flex-direction:column}
  .login-hero{flex:0 0 42vh;border-right:none;border-bottom:1px solid var(--line)}
  .login-painel{padding:32px 24px}
}
/* O CSS original espera header/nav/main como filhos diretos de um body em
   display:flex;flex-direction:column, com main{flex:1} preenchendo o espaço.
   #tela-sistema os envolve, quebrando essa cadeia — sem isto, main fica com
   altura zero e todo o conteúdo das abas some. min-height:0 é necessário:
   sem ele, o filho flex (main) não consegue encolher abaixo do tamanho do
   conteúdo, e a barra de rolagem interna das abas para de funcionar. */
#tela-sistema{display:flex;flex-direction:column;flex:1;min-height:0}
#carregando{padding:40px;text-align:center;color:#666}
nav button[disabled]{opacity:.4;cursor:not-allowed}
.cabecalho-usuario{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:.82rem}

