:root{
  --navy:#202F59; --navy-2:#2B3D70; --navy-3:#E8EBF3;
  --verde:#5DB12F; --verde-esc:#3E8A1E; --verde-cl:#EAF5E2;
  --azul:#2D6BB5; --azul-cl:#E4EEF9;
  --tinta:#1D2433; --tinta-2:#4A5468; --tinta-3:#7A8396;
  --fundo:#F4F6F2; --cartao:#FFFFFF; --listra:#F6F7F4;
  --linha:#E3E7DE; --linha-2:#CDD4C6;
  --grad:linear-gradient(90deg,#2D6BB5 0%,#2E8FA8 35%,#4FAF6E 65%,#79C93F 100%);
  --sombra:0 1px 2px rgba(20,30,50,.04),0 6px 18px rgba(20,30,50,.06);
  --r:12px; --r-sm:8px;
  --f:'Montserrat',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;

  /* situação */
  --s-conc:#2E8B3A; --s-conc-bg:#E5F3E0;
  --s-exec:#1F6FB5; --s-exec-bg:#E2EEFA;
  --s-agu:#5B6577;  --s-agu-bg:#ECEFF3;
  --s-ins:#B45A00;  --s-ins-bg:#FDEFDC;
  --s-rem:#6A4FA6;  --s-rem-bg:#EEE9F8;
  --s-pen:#C0392B;  --s-pen-bg:#FBE6E3;
  --s-sem:#8A93A3;  --s-sem-bg:#F3F4F6;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--fundo);color:var(--tinta);font-family:var(--f);font-size:14px;line-height:1.45;-webkit-text-size-adjust:100%;font-variant-numeric:tabular-nums}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--azul)}
:focus-visible{outline:2px solid var(--azul);outline-offset:2px;border-radius:4px}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.rotulo{display:block;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--verde)}

/* topo */
.topo{background:#fff}
.topo-in{max-width:1480px;margin:0 auto;padding:16px 24px 14px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.topo h1{margin:2px 0 0;font-size:26px;font-weight:800;font-style:italic;color:var(--navy);letter-spacing:-.01em;line-height:1.15}
.logos{display:flex;align-items:center;gap:22px;flex-shrink:0}
.logos img{display:block;width:auto}
.faixa{height:2px;background:var(--navy);position:relative}
.faixa span{position:absolute;left:0;top:-1px;height:4px;width:min(160px,14vw);background:var(--grad)}

/* barra */
.barra{background:#fff;border-bottom:1px solid var(--linha);position:sticky;top:0;z-index:20}
.barra-in{max-width:1480px;margin:0 auto;padding:10px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.datas{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--linha-2);background:#fff;border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600;color:var(--tinta-2);transition:background .12s,border-color .12s}
.chip:hover{border-color:var(--navy);color:var(--navy)}
.chip[aria-pressed="true"],.chip[aria-selected="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.chip small{font-weight:500;opacity:.75;margin-left:4px}
.vivo{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--tinta-2)}
.pulso{width:9px;height:9px;border-radius:50%;background:var(--tinta-3);flex-shrink:0}
.pulso.ok{background:var(--verde);box-shadow:0 0 0 0 rgba(93,177,47,.5);animation:pulso 2s infinite}
.pulso.lento{background:#E0A100}
.pulso.falha{background:var(--s-pen)}
@keyframes pulso{0%{box-shadow:0 0 0 0 rgba(93,177,47,.45)}70%{box-shadow:0 0 0 8px rgba(93,177,47,0)}100%{box-shadow:0 0 0 0 rgba(93,177,47,0)}}
.btn-at{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--linha-2);background:#fff;border-radius:var(--r-sm);padding:6px 11px;font-size:12.5px;font-weight:600;color:var(--navy)}
.btn-at:hover{border-color:var(--navy)}
.btn-at.girando svg{animation:gira .8s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}

.pag{max-width:1480px;margin:0 auto;padding:20px 24px 32px;display:flex;flex-direction:column;gap:18px}
.erro{background:var(--s-pen-bg);color:var(--s-pen);border-left:4px solid var(--s-pen);border-radius:var(--r-sm);padding:10px 14px;font-weight:600;font-size:13px}

/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.kpi{background:var(--cartao);border-radius:var(--r);box-shadow:var(--sombra);padding:14px 16px 14px 18px;position:relative;overflow:hidden;min-width:0;display:flex;flex-direction:column;gap:2px}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--verde)}
.kpi.alerta::before{background:var(--s-ins)}
.kpi-t{font-size:12.5px;font-weight:700;color:var(--navy)}
.kpi-v{font-size:32px;font-weight:800;color:var(--navy);line-height:1.1;letter-spacing:-.02em;margin-top:4px}
.kpi-v small{font-size:15px;font-weight:600;color:var(--tinta-3);letter-spacing:0;margin-left:3px}
.kpi.alerta.ativo .kpi-v{color:var(--s-ins)}
.kpi-s{font-size:12px;color:var(--tinta-2);margin-top:auto;padding-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .trilho{margin-top:8px}

.kpis-2{display:flex;flex-wrap:wrap;gap:8px 26px;padding:2px 4px;font-size:13px;color:var(--tinta-2)}
.kpis-2 b{color:var(--navy);font-weight:800;font-size:15px;margin-right:3px}

.trilho{height:8px;border-radius:4px;background:var(--navy-3);overflow:hidden;position:relative}
.trilho>i{display:block;height:100%;border-radius:4px;background:var(--verde);transition:width .4s ease}

/* grade */
.grade{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:18px;align-items:start}
.lateral{display:flex;flex-direction:column;gap:18px;min-width:0}
.painel{background:var(--cartao);border-radius:var(--r);box-shadow:var(--sombra);padding:16px 18px;min-width:0}
.painel-cab{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.painel-cab.compacto{margin-bottom:8px;flex-wrap:nowrap}
.painel h2{margin:2px 0 0;font-size:18px;font-weight:800;font-style:italic;color:var(--navy);line-height:1.2}
.cont{font-size:12px;font-weight:700;color:var(--navy);background:var(--navy-3);border-radius:999px;padding:3px 10px;white-space:nowrap}
.busca{border:1px solid var(--linha-2);border-radius:var(--r-sm);padding:8px 12px;min-width:240px;font-size:13px;background:#fff}
.busca:focus{outline:none;border-color:var(--azul);box-shadow:0 0 0 3px var(--azul-cl)}
.filtros{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.filtros .chip{padding:5px 11px;font-size:12px}

/* situação */
.sit{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:2px 9px 2px 7px;font-size:11.5px;font-weight:700;white-space:nowrap;line-height:1.5}
.sit::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}
.sit-conc{color:var(--s-conc);background:var(--s-conc-bg)}
.sit-exec{color:var(--s-exec);background:var(--s-exec-bg)}
.sit-agu{color:var(--s-agu);background:var(--s-agu-bg)}
.sit-ins{color:var(--s-ins);background:var(--s-ins-bg)}
.sit-rem{color:var(--s-rem);background:var(--s-rem-bg)}
.sit-pen{color:var(--s-pen);background:var(--s-pen-bg)}
.sit-sem{color:var(--s-sem);background:var(--s-sem-bg)}
.sit-sem::before{background:transparent;border:1.5px solid currentColor;width:5px;height:5px}
.f-conc>i{background:var(--s-conc)} .f-exec>i{background:var(--s-exec)} .f-agu>i{background:var(--s-agu)}
.f-ins>i{background:var(--s-ins)} .f-rem>i{background:var(--s-rem)} .f-pen>i{background:var(--s-pen)} .f-sem>i{background:var(--s-sem)}

/* grupos de setores */
.grupo{margin-top:6px}
.grupo+.grupo{margin-top:18px}
.grupo-cab{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:2px solid var(--navy);margin-bottom:2px}
.grupo-cab h3{margin:0;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--navy)}
.grupo-cab .gdat{font-size:12px;color:var(--tinta-3);font-weight:600}
.grupo-cab .gres{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12px;color:var(--tinta-2);font-weight:600}
.grupo-cab .gres .trilho{width:90px;height:6px}

.setor{display:grid;grid-template-columns:62px minmax(120px,1.25fr) minmax(130px,1.4fr) 92px 62px 158px;align-items:center;gap:12px;width:100%;border:0;background:none;text-align:left;padding:9px 6px;border-bottom:1px solid var(--linha);border-radius:0}
.setor:nth-child(even){background:var(--listra)}
.setor:hover{background:var(--azul-cl)}
.cod{display:inline-block;font-weight:800;font-size:12.5px;color:#fff;background:var(--navy);border-radius:6px;padding:3px 0;text-align:center;width:56px;letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cod.sem-mapa{background:var(--tinta-3)}
.s-nome{min-width:0}
.s-nome b{display:block;font-size:13px;font-weight:700;color:var(--tinta);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.s-nome span{display:block;font-size:11.5px;color:var(--tinta-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.s-av{display:flex;align-items:center;gap:8px;min-width:0}
.s-av .trilho{flex:1;min-width:40px}
.s-av em{font-style:normal;font-weight:800;font-size:13px;color:var(--navy);width:44px;text-align:right}
.s-km,.s-h{font-size:12px;color:var(--tinta-2);text-align:right;white-space:nowrap}
.s-km b,.s-h b{color:var(--tinta);font-weight:700}
.s-sit{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}
.s-sit small{font-size:11px;color:var(--tinta-3);white-space:nowrap}
.vazio{padding:18px 6px;color:var(--tinta-3);font-size:13px;text-align:center}
.cab-col{display:grid;grid-template-columns:62px minmax(120px,1.25fr) minmax(130px,1.4fr) 92px 62px 158px;gap:12px;padding:4px 6px 6px;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tinta-3)}
.cab-col .r{text-align:right}

/* listas laterais */
.lista{display:flex;flex-direction:column}
.item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:8px 2px;border-bottom:1px solid var(--linha);background:none;border-left:0;border-right:0;border-top:0;text-align:left;width:100%}
.item:last-child{border-bottom:0}
.item:hover{background:var(--listra)}
.item .cod{width:auto;min-width:46px;padding:2px 6px;font-size:11.5px}
.item-t{min-width:0}
.item-t b{display:block;font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item-t span{display:block;font-size:11.5px;color:var(--tinta-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item-t p{margin:2px 0 0;font-size:12px;color:var(--tinta-2);white-space:normal}
.item-v{font-size:13px;font-weight:800;color:var(--navy);text-align:right;white-space:nowrap}
.item-v small{display:block;font-size:11px;font-weight:600;color:var(--tinta-3)}
.placa{font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;font-size:12px;font-weight:700;letter-spacing:.04em;border:1.5px solid var(--navy);border-radius:4px;padding:1px 6px;color:var(--navy);background:#fff}
.lista .vazio{padding:10px 2px;text-align:left}
.lista-mais{border:0;background:none;color:var(--azul);font-weight:700;font-size:12px;padding:8px 2px 0;text-align:left}

/* tabela */
.tabela-wrap{overflow:auto;max-height:560px;border:1px solid var(--linha);border-radius:var(--r-sm)}
.tabela{border-collapse:collapse;width:100%;font-size:12.5px;min-width:1300px}
.tabela th{position:sticky;top:0;background:var(--navy);color:#fff;font-weight:700;font-size:11px;letter-spacing:.04em;text-transform:uppercase;text-align:left;padding:8px 10px;white-space:nowrap;z-index:1}
.tabela td{padding:7px 10px;border-bottom:1px solid var(--linha);vertical-align:top}
.tabela tr:nth-child(even) td{background:var(--listra)}
.tabela tr.atual td:first-child{box-shadow:inset 3px 0 0 var(--verde)}
.tabela td.n{text-align:right;white-space:nowrap}
.tabela td.nw{white-space:nowrap}
.tabela td.txt{min-width:180px;max-width:320px}
.tabela tbody tr{cursor:pointer}
.tabela tbody tr:hover td{background:var(--azul-cl)}
.mais{margin-top:10px;border:1px solid var(--linha-2);background:#fff;border-radius:var(--r-sm);padding:7px 14px;font-weight:700;font-size:12.5px;color:var(--navy)}

.rodape{max-width:1480px;margin:0 auto;padding:6px 24px 28px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--tinta-3)}
.rodape strong{color:var(--navy)}

/* gaveta do setor */
.gaveta-fundo{position:fixed;inset:0;background:rgba(16,24,44,.45);z-index:40}
.gaveta{position:fixed;top:0;right:0;bottom:0;width:min(640px,100%);background:#fff;z-index:41;overflow-y:auto;overscroll-behavior:contain;box-shadow:-10px 0 40px rgba(0,0,0,.18);animation:entra .18s ease-out}
@keyframes entra{from{transform:translateX(30px);opacity:.4}to{transform:none;opacity:1}}
.g-fechar{position:absolute;top:12px;right:14px;width:36px;height:36px;border-radius:50%;border:1px solid var(--linha-2);background:#fff;font-size:22px;line-height:1;color:var(--navy);z-index:2}
.g-cab{padding:20px 64px 16px 22px;border-bottom:2px solid var(--navy);position:relative}
.g-cab::after{content:"";position:absolute;left:0;bottom:-3px;height:4px;width:120px;background:var(--grad)}
.g-cab h2{margin:4px 0 2px;font-size:22px;font-weight:800;font-style:italic;color:var(--navy);line-height:1.2}
.g-cab p{margin:0;font-size:12.5px;color:var(--tinta-2)}
.g-sec{padding:16px 22px;border-bottom:1px solid var(--linha)}
.g-sec h3{margin:0 0 10px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--navy)}
.g-av{display:flex;align-items:center;gap:14px}
.g-av .big{font-size:40px;font-weight:800;color:var(--navy);line-height:1;letter-spacing:-.02em}
.g-av .trilho{flex:1;height:10px}
.g-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px;margin-top:14px}
.g-grid div{min-width:0}
.g-grid span{display:block;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tinta-3)}
.g-grid b{display:block;font-size:14px;font-weight:700;color:var(--tinta);overflow-wrap:anywhere}
.g-mapa{display:block;width:100%;border:1px solid var(--linha);border-radius:var(--r-sm);overflow:hidden;background:var(--listra);padding:0;cursor:zoom-in}
.g-mapa img{display:block;width:100%;height:auto;aspect-ratio:2200/1555;object-fit:contain}
.g-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.g-links a{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;text-decoration:none;border:1px solid var(--linha-2);border-radius:var(--r-sm);padding:6px 11px;color:var(--navy)}
.g-links a:hover{border-color:var(--navy)}
.hist{display:flex;flex-direction:column}
.hist-i{display:grid;grid-template-columns:52px 1fr auto;gap:10px;padding:9px 0;border-bottom:1px solid var(--linha)}
.hist-i:last-child{border-bottom:0}
.hist-h{font-weight:800;color:var(--navy);font-size:13px}
.hist-h small{display:block;font-size:10.5px;color:var(--tinta-3);font-weight:600}
.hist-c{font-size:12.5px;color:var(--tinta-2);min-width:0}
.hist-c b{color:var(--tinta)}
.hist-c p{margin:2px 0 0}
.hist-k{text-align:right;font-size:12px;color:var(--tinta-2);white-space:nowrap}
.hist-k b{display:block;font-size:13px;color:var(--navy)}
.trechos{width:100%;border-collapse:collapse;font-size:12px}
.trechos td{padding:6px 4px;border-bottom:1px solid var(--linha);vertical-align:top}
.trechos td:last-child{text-align:right;white-space:nowrap;color:var(--tinta-2)}
.trechos td b{display:block;font-weight:700}
.trechos td span{color:var(--tinta-3)}
details.g-sec summary{cursor:pointer;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--navy);list-style:none}
details.g-sec summary::-webkit-details-marker{display:none}
details.g-sec summary::after{content:" +";color:var(--verde)}
details.g-sec[open] summary::after{content:" −"}
details.g-sec[open] summary{margin-bottom:10px}

.zoom{position:fixed;inset:0;background:rgba(10,16,30,.92);z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto}
.zoom img{max-width:none;width:min(2200px,180vw);height:auto;background:#fff;border-radius:4px}
@media (min-aspect-ratio:1/1){.zoom img{width:auto;max-width:96vw;max-height:94vh}}
.zoom .g-fechar{position:fixed;top:14px;right:16px}

/* equipe escalada */
.pessoas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.pessoa{min-width:0}
.pessoa span{display:block;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tinta-3)}
.pessoa b{display:block;font-size:14px;font-weight:700;color:var(--tinta)}
.pessoa em{display:block;font-style:normal;font-size:12.5px;color:var(--tinta-2)}

/* voltar ao topo */
.topo-btn{position:fixed;right:20px;bottom:20px;z-index:30;width:48px;height:48px;border-radius:50%;border:0;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(20,30,60,.3)}
.topo-btn:hover{background:var(--navy-2)}
@media (max-width:720px){.topo-btn{right:14px;bottom:14px;width:44px;height:44px}}

/* responsivo */
@media (max-width:1280px){
  .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grade{grid-template-columns:minmax(0,1fr) 340px}
  .setor,.cab-col{grid-template-columns:58px minmax(110px,1fr) minmax(110px,1.2fr) 84px 140px}
  .setor .s-h,.cab-col .c-h{display:none}
}
@media (max-width:1020px){
  .grade{grid-template-columns:1fr}
  .lateral{display:grid;grid-template-columns:1fr 1fr}
}
@media (max-width:720px){
  body{font-size:13.5px}
  .topo-in{padding:12px 16px 10px}
  .topo h1{font-size:20px}
  .logos{gap:12px}
  .logos img:first-child{height:28px}
  .logos img:last-child{height:32px}
  .barra-in,.pag,.rodape{padding-left:16px;padding-right:16px}
  .pag{padding-top:14px;gap:14px}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .kpi{padding:12px 12px 12px 15px}
  .kpi-v{font-size:26px}
  .lateral{grid-template-columns:1fr}
  .painel{padding:14px}
  .busca{min-width:0;width:100%}
  .cab-col{display:none}
  .setor{grid-template-columns:52px minmax(0,1fr) auto;grid-template-areas:"c n s" "c a a";row-gap:6px;padding:10px 4px}
  .setor .cod{grid-area:c;width:50px;align-self:start}
  .setor .s-nome{grid-area:n}
  .setor .s-sit{grid-area:s;align-items:flex-end}
  .setor .s-av{grid-area:a}
  .setor .s-km{display:none}
  .grupo-cab .gres .trilho{display:none}
  .g-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g-cab,.g-sec{padding-left:16px;padding-right:16px}
}
@media (max-width:420px){
  .logos img:first-child{display:none}
}
@media (max-width:1020px){
  .lateral{order:-1}
}
