/* ===========================================================================
   SGQ — Tokens visuais do Grupo GVS
   ---------------------------------------------------------------------------
   REGRA INEGOCIAVEL (secao 13): nenhum hex solto em nenhum outro arquivo CSS.
   Todo valor de cor referencia um token daqui. Token novo exige o par
   correspondente em :root[data-theme="dark"] — sem isso o tema escuro quebra
   em um canto qualquer que so aparece semanas depois.

   Um hex fora daqui nao e "so uma cor": e um ponto que nao acompanha a troca
   de tema, nao acompanha um ajuste de marca e nao aparece em nenhuma busca
   quando alguem precisa mudar a paleta.
   =========================================================================== */

:root {
  /* --- Marca ------------------------------------------------------------- */
  --brand-navy: #0b2447;
  --line-cyan: #2fa8e0;
  /* Ciano escurecido para foco de teclado, hover e texto pequeno.
     O ciano da marca tem cerca de 2,3:1 contra fundo claro e falha o minimo de
     3:1 da WCAG 1.4.11. Usar o ciano puro num anel de foco significa que quem
     navega por teclado nao enxerga onde esta. Este token existe para isso. */
  --line-cyan-forte: #0d6f9c;
  --brand-gradient: linear-gradient(135deg, #2fa8e0 0%, #0b2447 100%);

  /* --- Superficies ------------------------------------------------------- */
  --bg: #eef2f7;
  --card-1: #ffffff;
  --card-2: #f7fafd;
  --card-3: #e8eef6;
  --line: #dde5ee;
  --line-forte: #c6d3e2;

  /* --- Texto ------------------------------------------------------------- */
  --text: #0b2447;
  --text-invertido: #ffffff;
  --muted: #5a6b82;

  /* --- Paleta de status / faroes -----------------------------------------
     Estas cinco cores sao a paleta OFICIAL de status. Farol, criticidade,
     situacao de tarefa e badge de prazo saem daqui — nao existe cor de status
     inventada em nenhuma tela.

     O laranja foi medido, nao escolhido no olho. O valor original (#e8a33d)
     ficava a uma distancia perceptual de apenas 3,8 do amarelo em visao normal
     e 3,2 sob protanopia — ou seja, "Atencao" e "Alta" eram praticamente a
     mesma cor. Trocado por #dd6b20, a separacao sobe para 11,4 (normal) e 7,6
     (deuteranopia).

     Mesmo assim a separacao fica abaixo do ideal de 15, o que e inerente a uma
     escala de severidade de quatro degraus indo de verde a vermelho: os
     degraus do meio sao vizinhos por definicao. E aceitavel aqui por um motivo
     concreto: nenhuma cor de status aparece sozinha neste sistema. Todo farol
     e toda criticidade levam icone e rotulo por texto (secao 13), entao a cor
     e reforco e nunca o unico canal de informacao. */
  --green: #17a66b;
  --yellow: #d99b16;
  --orange: #dd6b20;
  --red: #d64545;
  --gray: #8fa3be;
  --roxo-tema: #7c4ddb;       /* icone de tema (epico) no cronograma em arvore */

  /* Versoes legiveis sobre fundo claro (o .status-pill usa cor + 22 de alfa
     como fundo, e o texto precisa de contraste proprio) */
  --green-texto: #087a4b;
  --yellow-texto: #8a6100;
  --orange-texto: #936000;
  --red-texto: #ac2f2f;
  --gray-texto: #5a6b82;

  /* --- Forma ------------------------------------------------------------- */
  --radius: 9px;
  --radius-pequeno: 6px;
  --radius-pill: 999px;
  --shadow: 0 1px 3px rgba(11, 36, 71, 0.09);
  --shadow-elevado: 0 10px 30px rgba(11, 36, 71, 0.18);
  --sombra-foco: 0 0 0 3px rgba(47, 168, 224, 0.28);

  /* --- Tipografia --------------------------------------------------------- */
  /* League Spartan em titulos, KPI e badges; Now em corpo e labels (secao 13).
     "Now" ainda nao esta licenciada e carregada, entao o fallback system-ui
     assume — declarado explicitamente para que a substituicao seja uma decisao
     visivel no codigo, e nao um acidente do navegador. */
  --fonte-titulo: "League Spartan", "Segoe UI Semibold", "Segoe UI", system-ui, sans-serif;
  --fonte-corpo: "Now", "Segoe UI", Roboto, system-ui, -apple-system, sans-serif;
  --fonte-mono: "Cascadia Mono", "Consolas", "SF Mono", monospace;

  /* --- Espacamento -------------------------------------------------------- */
  --gap-xs: 4px;
  --gap-sm: 8px;
  --gap-md: 12px;
  --gap-lg: 18px;
  --gap-xl: 26px;

  --altura-cabecalho: 62px;
  --largura-menu: 224px;
}

/* ===========================================================================
   Tema escuro.
   Cada token claro tem seu par aqui. As cores de status ficam levemente mais
   claras: as versoes do tema claro perdem legibilidade sobre fundo escuro.
   =========================================================================== */
:root[data-theme="dark"] {
  --brand-navy: #2fa8e0;
  --line-cyan: #41b6e6;
  --line-cyan-forte: #7fd0f2;
  --brand-gradient: linear-gradient(135deg, #41b6e6 0%, #123a63 100%);

  --bg: #081120;
  --card-1: #12203a;
  --card-2: #162744;
  --card-3: #1d3055;
  --line: #22344f;
  --line-forte: #2f486b;

  --text: #e8f0fa;
  --text-invertido: #081120;
  --muted: #8fa3be;

  /* Os degraus escuros sao ESCOLHIDOS contra o fundo escuro, nunca um
     clareamento automatico dos claros: as versoes do tema claro perdem
     legibilidade sobre #081120. */
  --green: #35c98c;
  --yellow: #e8c33d;
  --orange: #f08a4b;
  --red: #ef6b6b;
  --gray: #7d90ab;
  --roxo-tema: #a98bf0;

  --green-texto: #5fe0a8;
  --yellow-texto: #f2d97a;
  --orange-texto: #f5c88a;
  --red-texto: #ff9c9c;
  --gray-texto: #a5b7cd;

  --shadow: 0 1px 3px rgba(0, 0, 0, 0.45);
  --shadow-elevado: 0 14px 34px rgba(0, 0, 0, 0.55);
  --sombra-foco: 0 0 0 3px rgba(65, 182, 230, 0.35);
}

/* Mapa farol -> cor. Uma unica fonte de verdade para a cor de cada situacao;
   o JavaScript apenas aplica a classe e nunca escolhe a cor. */
.farol-verde    { --farol: var(--green);  --farol-texto: var(--green-texto); }
.farol-amarelo  { --farol: var(--yellow); --farol-texto: var(--yellow-texto); }
.farol-vermelho { --farol: var(--red);    --farol-texto: var(--red-texto); }
.farol-cinza    { --farol: var(--gray);   --farol-texto: var(--gray-texto); }
.farol-neutro   { --farol: var(--gray);   --farol-texto: var(--gray-texto); }
.farol-ciano    { --farol: #12A4A4;      --farol-texto: #0B7A7A; }   /* semiautomatizado */
.farol-azul     { --farol: #2fa8e0;      --farol-texto: #1b7fae; }   /* automacao em conferencia */

.crit-critica { --farol: var(--red);    --farol-texto: var(--red-texto); }
.crit-alta    { --farol: var(--orange); --farol-texto: var(--orange-texto); }
.crit-media   { --farol: var(--yellow); --farol-texto: var(--yellow-texto); }
.crit-baixa   { --farol: var(--green);  --farol-texto: var(--green-texto); }
