/* ==========================================================================
   SIGHME — identidade visual
   Paleta: petróleo institucional + fundo clínico frio; verde/amarelo/vermelho
   reservados exclusivamente para estado (semáforos).
   ========================================================================== */
:root{
  --fundo:#F2F6F6;
  --superficie:#FFFFFF;
  --tinta:#122328;
  --tinta-2:#4A6067;
  --linha:#DCE6E7;
  --primaria:#0E5A63;
  --primaria-escura:#0A3F46;
  --primaria-suave:#E3EFF0;
  --verde:#1E8E5A;   --verde-suave:#E4F3EB;
  --amarelo:#B8860B; --amarelo-vivo:#D9A413; --amarelo-suave:#FBF3DC;
  --vermelho:#C4382E; --vermelho-suave:#FBE7E5;
  --mono:'IBM Plex Mono', monospace;
  --raio:10px;
  --sombra:0 1px 2px rgba(18,35,40,.06), 0 4px 14px rgba(18,35,40,.05);
}
*{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px}
body{
  font-family:'IBM Plex Sans',system-ui,sans-serif;
  background:var(--fundo); color:var(--tinta);
  display:flex; min-height:100vh; line-height:1.5;
}
h1,h2,h3,h4{font-family:'Archivo',sans-serif; letter-spacing:-.01em}
a{color:var(--primaria)}
:focus-visible{outline:3px solid var(--primaria); outline-offset:2px; border-radius:4px}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}

/* ---------- barra lateral ---------- */
.lateral{
  width:236px; flex-shrink:0; background:var(--primaria-escura); color:#EAF3F4;
  display:flex; flex-direction:column; position:sticky; top:0; height:100vh;
}
.marca{display:flex; gap:10px; align-items:center; padding:18px 16px 14px; border-bottom:1px solid rgba(255,255,255,.12)}
.marca-simbolo{
  width:38px;height:38px;border-radius:9px;background:#fff;color:var(--primaria-escura);
  font-family:'Archivo';font-weight:800;font-size:1.35rem;display:grid;place-items:center;
}
.marca strong{font-family:'Archivo';font-weight:800;font-size:1.05rem;display:block;letter-spacing:.04em}
.marca span{font-size:.66rem;opacity:.75;display:block;line-height:1.3}
.lateral nav{flex:1;padding:10px 8px;overflow-y:auto}
.lateral nav a{
  display:block;color:#D6E6E8;text-decoration:none;padding:9px 12px;border-radius:8px;
  font-size:.9rem;margin-bottom:2px;border-left:3px solid transparent;
}
.lateral nav a:hover{background:rgba(255,255,255,.08)}
.lateral nav a.activo{background:rgba(255,255,255,.13);color:#fff;border-left-color:#fff;font-weight:600}
.lateral-rodape{padding:14px 16px;border-top:1px solid rgba(255,255,255,.12)}
.utilizador strong{display:block;font-size:.85rem}
.utilizador span{font-size:.72rem;opacity:.75}
.btn-sair{display:inline-block;margin-top:8px;font-size:.78rem;color:#EAF3F4;opacity:.85}

/* ---------- conteúdo ---------- */
.conteudo{flex:1;padding:22px 28px 40px;max-width:1500px}
.topo{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.topo h1{font-size:1.55rem;font-weight:800}
.topo-sub{color:var(--tinta-2);font-size:.9rem;margin-top:2px}
.topo-dir{display:flex;align-items:center;gap:10px}
.data-ref{font-family:var(--mono);font-size:.75rem;color:var(--tinta-2);background:var(--superficie);
  border:1px solid var(--linha);padding:5px 10px;border-radius:999px}
.badge-alertas{background:var(--vermelho);color:#fff;border:none;font:inherit;font-size:.78rem;font-weight:600;
  padding:6px 12px;border-radius:999px;cursor:pointer}
.alertas-form{display:inline}

/* ---------- linha da rede (assinatura visual) ---------- */
.linha-rede{
  display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 20px;padding:10px 12px;
  background:var(--superficie);border:1px solid var(--linha);border-radius:var(--raio);box-shadow:var(--sombra);
}
.chip{
  display:inline-flex;align-items:center;gap:7px;text-decoration:none;color:var(--tinta);
  font-family:var(--mono);font-size:.78rem;font-weight:500;
  padding:6px 10px;border-radius:999px;border:1px solid var(--linha);background:#fff;
}
.chip i{width:9px;height:9px;border-radius:50%;display:inline-block}
.chip em{font-style:normal;font-size:.62rem;color:var(--tinta-2);border-left:1px solid var(--linha);padding-left:6px}
.chip-verde i{background:var(--verde)}
.chip-amarelo{background:var(--amarelo-suave);border-color:#EAD9A8}
.chip-amarelo i{background:var(--amarelo-vivo)}
.chip-vermelho{background:var(--vermelho-suave);border-color:#EFC3BF}
.chip-vermelho i{background:var(--vermelho);animation:pulsar 1.6s infinite}
@keyframes pulsar{50%{box-shadow:0 0 0 5px rgba(196,56,46,.18)}}

/* ---------- grelhas e cartões ---------- */
.grelha{display:grid;gap:14px}
.g-2{grid-template-columns:repeat(2,1fr)}
.g-3{grid-template-columns:repeat(3,1fr)}
.g-4{grid-template-columns:repeat(4,1fr)}
.g-23{grid-template-columns:2fr 1fr}
.g-32{grid-template-columns:1fr 2fr}
@media(max-width:1100px){.g-3,.g-4{grid-template-columns:repeat(2,1fr)}.g-23,.g-32{grid-template-columns:1fr}}
@media(max-width:700px){.g-2,.g-3,.g-4{grid-template-columns:1fr}}

.cartao{background:var(--superficie);border:1px solid var(--linha);border-radius:var(--raio);
  padding:16px 18px;box-shadow:var(--sombra)}
.cartao h3{font-size:.95rem;font-weight:700;margin-bottom:10px;display:flex;justify-content:space-between;align-items:baseline}
.cartao h3 .nota{font-family:var(--mono);font-weight:500;font-size:.68rem;color:var(--tinta-2)}
.seccao{margin-top:18px}

/* KPIs */
.kpi{background:var(--superficie);border:1px solid var(--linha);border-radius:var(--raio);
  padding:14px 16px;box-shadow:var(--sombra)}
.kpi .rotulo{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--tinta-2);font-weight:600}
.kpi .valor{font-family:'Archivo';font-weight:800;font-size:1.7rem;margin-top:2px}
.kpi .contexto{font-size:.74rem;color:var(--tinta-2);margin-top:2px}
.kpi.k-alerta{border-left:4px solid var(--vermelho)}
.kpi.k-atencao{border-left:4px solid var(--amarelo-vivo)}
.kpi.k-ok{border-left:4px solid var(--verde)}

/* ---------- tabelas ---------- */
table{width:100%;border-collapse:collapse;font-size:.85rem}
th{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--tinta-2);
  text-align:left;padding:8px 10px;border-bottom:2px solid var(--linha);font-weight:600;white-space:nowrap}
td{padding:8px 10px;border-bottom:1px solid var(--linha);vertical-align:middle}
tr:hover td{background:var(--primaria-suave)}
td.num, th.num{text-align:right;font-family:var(--mono);font-size:.8rem}
.tabela-envolvente{overflow-x:auto}

/* estados e etiquetas */
.pill{display:inline-block;padding:3px 9px;border-radius:999px;font-size:.72rem;font-weight:600;white-space:nowrap}
.p-verde{background:var(--verde-suave);color:var(--verde)}
.p-amarelo{background:var(--amarelo-suave);color:var(--amarelo)}
.p-vermelho{background:var(--vermelho-suave);color:var(--vermelho)}
.p-neutro{background:var(--primaria-suave);color:var(--primaria)}
.p-cinza{background:#EDF1F2;color:var(--tinta-2)}
.nivel-badge{font-family:var(--mono);font-size:.68rem;background:var(--primaria-suave);
  color:var(--primaria);padding:2px 7px;border-radius:5px;font-weight:600}

/* semáforo em célula */
.sem{width:11px;height:11px;border-radius:50%;display:inline-block;vertical-align:middle;margin-right:6px}
.sem-verde{background:var(--verde)} .sem-amarelo{background:var(--amarelo-vivo)} .sem-vermelho{background:var(--vermelho)}

/* barras de progresso */
.barra{height:8px;background:#E8EEEF;border-radius:99px;overflow:hidden;min-width:80px}
.barra span{display:block;height:100%;border-radius:99px;background:var(--primaria)}
.barra .b-verde{background:var(--verde)} .barra .b-amarelo{background:var(--amarelo-vivo)} .barra .b-vermelho{background:var(--vermelho)}

/* alertas */
.lista-alertas{list-style:none}
.lista-alertas li{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--linha);font-size:.84rem;align-items:flex-start}
.lista-alertas li:last-child{border-bottom:none}
.marcador{width:10px;height:10px;border-radius:50%;margin-top:5px;flex-shrink:0}
.m-critico{background:var(--vermelho)} .m-aviso{background:var(--amarelo-vivo)} .m-info{background:var(--primaria)}
.lista-alertas .meta{font-family:var(--mono);font-size:.68rem;color:var(--tinta-2)}

/* formulários */
form.linha-form{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}
label.campo{display:flex;flex-direction:column;gap:4px;font-size:.74rem;font-weight:600;color:var(--tinta-2)}
input[type=text],input[type=email],input[type=password],input[type=number],select,textarea{
  font:inherit;font-size:.85rem;padding:8px 10px;border:1px solid var(--linha);border-radius:8px;
  background:#fff;color:var(--tinta);min-width:140px}
textarea{min-width:260px}
button.btn,a.btn{font:inherit;font-size:.83rem;font-weight:600;padding:9px 16px;border-radius:8px;
  border:1px solid var(--primaria);background:var(--primaria);color:#fff;cursor:pointer;text-decoration:none;display:inline-block}
button.btn:hover{background:var(--primaria-escura)}
button.btn-suave{background:#fff;color:var(--primaria)}
select.mini{min-width:auto;padding:4px 6px;font-size:.76rem}
.flash{background:var(--verde-suave);border:1px solid #BFE3CF;color:var(--verde);
  padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:.85rem;font-weight:500}

/* mapa */
#mapa{height:380px;border-radius:var(--raio);border:1px solid var(--linha)}
.leaflet-popup-content{font-family:'IBM Plex Sans';font-size:.82rem}

/* gráficos */
.grafico-caixa{position:relative;height:260px}
.grafico-caixa.alto{height:320px}

/* login */
.pagina-login{display:grid;place-items:center;min-height:100vh;width:100%;
  background:linear-gradient(160deg,var(--primaria-escura) 0%,var(--primaria) 60%,#12707B 100%)}
.caixa-login{background:#fff;border-radius:14px;padding:34px 36px;width:min(400px,92vw);box-shadow:0 20px 60px rgba(0,0,0,.3)}
.caixa-login .marca{border:none;padding:0 0 16px;color:var(--tinta)}
.caixa-login .marca span{color:var(--tinta-2)}
.caixa-login form{display:flex;flex-direction:column;gap:12px}
.erro-login{background:var(--vermelho-suave);color:var(--vermelho);padding:9px 12px;border-radius:8px;font-size:.82rem}
.credenciais-demo{margin-top:16px;font-size:.74rem;color:var(--tinta-2);border-top:1px solid var(--linha);padding-top:12px}
.credenciais-demo code{font-family:var(--mono);background:var(--primaria-suave);padding:1px 5px;border-radius:4px}

/* rodapé e diversos */
.rodape{margin-top:32px;font-size:.72rem;color:var(--tinta-2);border-top:1px solid var(--linha);padding-top:12px}
.motivos{font-size:.76rem;color:var(--tinta-2)}
.ligacao-limpa{text-decoration:none;font-weight:600}
.duas-colunas{columns:2;gap:24px}
@media(max-width:800px){.duas-colunas{columns:1}}
.erro-pagina{text-align:center;padding:80px 20px}
.erro-pagina .codigo{font-family:'Archivo';font-weight:800;font-size:5rem;color:var(--primaria)}

@media(max-width:900px){
  body{flex-direction:column}
  .lateral{width:100%;height:auto;position:static}
  .lateral nav{display:flex;flex-wrap:wrap;gap:4px}
  .conteudo{padding:16px}
}
@media print{.lateral,.linha-rede,.topo-dir{display:none}.conteudo{padding:0}}
