/* ===========================================================================
   Ativos — CSS do sistema. Usa SÓ os tokens do via3-ui.css.
   =========================================================================== */

/* ------------------------------- tela de acesso -------------------------- */
.acesso { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; }
.acesso .caixa { width:100%; max-width:380px; padding:30px 30px 22px; }
.acesso .marca-via3 { display:block; text-align:center; }
.acesso h1 { font-size:19px; margin:22px 0 6px; text-align:center; }
.acesso p.intro { color:var(--tinta-2); font-size:13px; margin:0 0 20px; text-align:center; }
.acesso label { display:block; font-size:12.5px; color:var(--tinta-2); margin-bottom:6px; }
.acesso input { width:100%; margin-bottom:14px; }
.acesso input.codigo { text-align:center; font-size:22px; letter-spacing:.5em; font-weight:600; }
.acesso button.acao { width:100%; }
.acesso .pe { margin-top:18px; padding-top:14px; border-top:1px solid var(--linha);
  font-size:11.5px; color:var(--tinta-fraca); text-align:center; }
.acesso .aviso { font-size:12.5px; border-radius:var(--raio-sm); padding:9px 11px; margin-bottom:14px; }
.acesso .aviso.erro { color:var(--erro); background:color-mix(in srgb,var(--erro) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--erro) 40%,transparent); }
.acesso .aviso.ok { color:var(--ok); background:color-mix(in srgb,var(--ok) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--ok) 40%,transparent); }
.acesso .link { display:block; text-align:center; margin-top:10px; font-size:12px; background:none; border:none;
  color:var(--tinta-fraca); width:100%; }
.acesso .link:hover { color:var(--acao); }
.escondido { display:none !important; }

/* -------------------------------- layout app ----------------------------- */
.app { max-width:1800px; margin:0 auto; padding:20px 22px 60px; }
.cabecalho { display:flex; flex-wrap:wrap; gap:16px; align-items:center; justify-content:space-between;
  border-top:3px solid var(--acao);
  border-image:linear-gradient(90deg,var(--acao) 0%,color-mix(in srgb,var(--acao) 40%,transparent) 45%,transparent 100%) 1;
  padding:16px 0 14px; margin-bottom:22px; }
.cabecalho .titulo h1 { font-size:20px; }
.cabecalho .titulo .sis { font-size:12px; color:var(--tinta-fraca); margin-top:2px; }
.cabecalho .acoes-topo { display:flex; gap:9px; align-items:center; }
.cabecalho .usuario { font-size:12.5px; color:var(--tinta-2); margin-right:4px; }

/* ------------------------------------ kpis ------------------------------- */
.kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:14px; margin-bottom:22px; }
.kpi { padding:16px 18px; }
.kpi .rotulo { display:block; margin-bottom:8px; }
.kpi .valor { font-size:28px; font-weight:700; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.kpi .obs { font-size:12px; color:var(--tinta-fraca); margin-top:2px; }
.kpi.destaque .valor { color:var(--acao); }
.kpi.alerta .valor { color:var(--alerta); }

/* ----------------------------------- filtros ----------------------------- */
.filtros { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:16px; }
.filtros .busca { flex:1; min-width:220px; }
.filtros select { min-width:170px; }
.filtros .cont { margin-left:auto; font-size:12.5px; color:var(--tinta-fraca); }

/* ----------------------------------- tabela ------------------------------ */
.quadro { overflow-x:auto; }
.tab { width:100%; border-collapse:collapse; }
.tab th { text-align:left; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--tinta-fraca);
  font-weight:600; padding:10px 12px; border-bottom:1px solid var(--linha); background:var(--superficie-2);
  position:sticky; top:0; white-space:nowrap; cursor:pointer; user-select:none; }
.tab th .seta { color:var(--acao); font-size:10px; margin-left:3px; }
.tab td { padding:10px 12px; border-bottom:1px solid var(--linha); font-size:13px; white-space:nowrap; }
.tab tbody tr { cursor:pointer; transition:background var(--transicao); }
.tab tbody tr:hover { background:var(--superficie-2); }
.tab .num { text-align:right; font-variant-numeric:tabular-nums; }
.tab .nome-maq { font-weight:600; color:var(--tinta); }
.tab .vazio { color:var(--tinta-fraca); font-style:italic; }
/* tabela no estilo do OCS oficial: largura total, colunas distribuídas, texto quebra */
.tab { table-layout:fixed; min-width:1080px; }
.tab th, .tab td { white-space:normal; overflow-wrap:anywhere; }
.tab th:nth-child(1), .tab td:nth-child(1) { width:12%; }   /* Computador */
.tab th:nth-child(2), .tab td:nth-child(2) { width:7%; }    /* Cliente    */
.tab th:nth-child(3), .tab td:nth-child(3) { width:7%; }    /* Tipo       */
.tab th:nth-child(4), .tab td:nth-child(4) { width:11%; }   /* Usuário    */
.tab th:nth-child(5), .tab td:nth-child(5) { width:17%; }   /* SO         */
.tab th:nth-child(6), .tab td:nth-child(6) { width:16%; }   /* Processador*/
.tab th:nth-child(7), .tab td:nth-child(7) { width:6%; }    /* RAM        */
.tab th:nth-child(8), .tab td:nth-child(8) { width:11%; }   /* IP         */
.tab th:nth-child(9), .tab td:nth-child(9) { width:13%; }   /* Último inv */
.tab td.proc { font-size:12px; line-height:1.35; color:var(--tinta-2); }

/* chave do Windows em destaque no detalhe */
.chave-win { background:var(--acao-suave); border:1px solid color-mix(in srgb,var(--acao) 40%,transparent);
  border-radius:var(--raio); padding:14px 16px; }
.chave-win .k { font-size:11px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--acao); margin-bottom:6px; }
.chave-win .val { font-size:18px; font-weight:700; letter-spacing:.06em; font-variant-numeric:tabular-nums; word-break:break-all; }
.chave-win .btcopiar { margin-top:10px; }
.chave-win .lic { margin-top:10px; font-size:12px; color:var(--tinta-2); word-break:break-all; }

.tag-chip { font-size:11px; border-radius:999px; padding:2px 9px; border:1px solid var(--linha);
  background:var(--superficie-2); color:var(--tinta-2); font-weight:600; }
.tipo-pill { font-size:11px; border-radius:999px; padding:2px 9px; border:1px solid var(--linha); }
.tipo-pill.srv { color:var(--serie-1); border-color:color-mix(in srgb,var(--serie-1) 45%,transparent); }
.tipo-pill.est { color:var(--tinta-2); }

.quando { font-variant-numeric:tabular-nums; }
.quando.velho { color:var(--alerta); }
.quando.critico { color:var(--erro); font-weight:600; }
.ponto { display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:6px; vertical-align:middle; }
.ponto.ok { background:var(--ok); }
.ponto.velho { background:var(--alerta); }
.ponto.critico { background:var(--erro); }

/* --------------------------------- carregando ---------------------------- */
.carregando { padding:40px; text-align:center; color:var(--tinta-fraca); font-size:13px; }

/* ----------------------------- painel de detalhe ------------------------- */
.overlay { position:fixed; inset:0; background:rgba(0,0,0,.45); backdrop-filter:blur(2px); z-index:40; }
.gaveta { position:fixed; top:0; right:0; height:100vh; width:min(560px,100vw); z-index:41;
  background:var(--fundo-brilho); border-left:1px solid var(--linha-forte); box-shadow:var(--sombra);
  display:flex; flex-direction:column; }
.gaveta .g-topo { display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  padding:20px 22px 14px; border-bottom:1px solid var(--linha);
  border-top:3px solid var(--acao); }
.gaveta .g-topo h2 { font-size:18px; }
.gaveta .g-topo .sub { font-size:12.5px; color:var(--tinta-fraca); margin-top:3px; }
.gaveta .g-corpo { overflow-y:auto; padding:18px 22px 30px; }
.g-bloco { margin-bottom:20px; }
.g-bloco > .rotulo { display:block; margin-bottom:9px; }
.g-grade { display:grid; grid-template-columns:1fr 1fr; gap:8px 16px; }
.g-item { display:flex; flex-direction:column; gap:1px; padding:7px 0; border-bottom:1px solid var(--linha); }
.g-item .k { font-size:11px; color:var(--tinta-fraca); }
.g-item .v { font-size:13px; color:var(--tinta); font-variant-numeric:tabular-nums; word-break:break-word; }
.mini { width:100%; border-collapse:collapse; }
.mini th { text-align:left; font-size:10.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--tinta-fraca);
  font-weight:600; padding:6px 8px; border-bottom:1px solid var(--linha); }
.mini td { padding:6px 8px; border-bottom:1px solid var(--linha); font-size:12px; }
.mini .num { text-align:right; font-variant-numeric:tabular-nums; }
.soft-busca { width:100%; margin-bottom:10px; }
.soft-lista { max-height:280px; overflow-y:auto; }
.g-vazio { color:var(--tinta-fraca); font-size:12.5px; font-style:italic; }

/* --------------------------------- rodapé -------------------------------- */
.pe-app { margin-top:30px; padding-top:16px; border-top:1px solid var(--linha);
  font-size:12px; color:var(--tinta-fraca); display:flex; flex-wrap:wrap; gap:10px; justify-content:space-between; }

@media (max-width:640px){
  .g-grade { grid-template-columns:1fr; }
  .kpi .valor { font-size:24px; }
}
