/* ─────────────────────────────────────────────────────────────────────────────
   LEDGER — tokens do Painel do Licenciado
   Plano: docs/PLANO_PAINEL_UX_UI.md §3 e Anexo A

   Carregado DEPOIS de hub.css e ANTES de panel.css. Redeclara as variáveis do
   design system herdado, então a identidade inteira muda sem tocar uma linha do
   hub.css — que segue sendo cópia sincronizável do oauth-hub.

   Regras de cor (para não errar na hora de aplicar):
     · índigo  → SÓ ação primária, link, aba ativa, foco, seleção
     · verde/âmbar/vermelho → SÓ estado de dado
     · vermelho sólido → SÓ o chip "Banido" e o botão final de ação destrutiva
   ───────────────────────────────────────────────────────────────────────────── */

:root {
  /* ── Neutros (claro) ───────────────────────────────────────────────────── */
  --bg:            #F4F5F7;
  --bg-2:          #EDEFF3;
  --surface:       #FFFFFF;
  --surface-2:     #F6F7F9;
  --surface-3:     #EFF1F4;
  --inset:         #F8F9FB;
  --border:        #E4E7EC;
  --border-strong: #C9CFD9;
  --hairline:      #EDEFF2;

  --text:    #101623;   /* 18.09:1 sobre surface */
  --text-2:  #333D4E;   /* 10.95:1 */
  --muted:   #5A6577;   /*  5.89:1 — menor texto funcional permitido */
  --muted-2: #7A8698;   /*  3.69:1 — só micro-label/caption ≥11px */
  --muted-3: #A4AEBD;   /* decorativo: ícone inativo, placeholder */

  /* ── Acento: índigo Z-PRO ──────────────────────────────────────────────
     `--signal*` é mantido como NOME porque o hub.css o referencia em ~40
     regras; aqui ele passa a significar "marca/ação", não "sucesso". */
  --brand-raw:     #5D5FEF;   /* cor crua do logo — só logo */
  --signal:        #4F52E8;   /* branco em cima: 5.67:1 */
  --signal-2:      #4649DC;   /* hover: 6.47:1 */
  --signal-ink:    #3A3DC4;   /* link/texto: 7.94:1 */
  --signal-soft:   #EEEFFD;
  --signal-border: #C9CBF8;
  --signal-grad:   linear-gradient(180deg, #4F52E8, #4F52E8);  /* neutraliza gradiente */
  --signal-glow:   none;                                       /* mata o halo do botão */
  --ring:          rgba(79, 82, 232, .22);

  /* aliases semânticos do acento (uso novo, nomes honestos) */
  --accent:        var(--signal);
  --accent-hover:  var(--signal-2);
  --accent-active: #4245D6;
  --accent-ink:    var(--signal-ink);
  --accent-soft:   var(--signal-soft);
  --accent-border: var(--signal-border);

  /* ── Semânticos: verde volta a ser SÓ estado ───────────────────────────── */
  --ok:     #0C8F63;  --ok-ink:     #0A6C4F;  --ok-soft:     #E4F6EE;  --ok-border:     #BCE5D4;
  --warn:   #B9750A;  --warn-ink:   #82550E;  --warn-soft:   #FAEFD8;  --warn-border:   #EFD5A4;
  --danger: #DD3C41;  --danger-ink: #A82429;  --danger-soft: #FCE7E7;  --danger-border: #F3C3C5;
  --info:   #2563EB;  --info-ink:   #1D4FD7;  --info-soft:   #E8EFFD;  --info-border:   #C3D6FA;
  --neutral-soft: #EFF1F4; --neutral-ink: #5A6577; --neutral-border: #E4E7EC;

  /* único fundo sólido colorido da interface: chip "Banido" e confirmação final */
  --danger-solid: #C1272D;   /* branco em cima: 5.84:1 */

  /* ── Raios: um degrau menor (raio grande lê consumidor) ────────────────── */
  --r-xs: 4px; --r-sm: 6px; --r: 8px; --r-lg: 10px; --r-xl: 12px; --pill: 999px;

  /* ── Elevação: plana. Profundidade vem de borda. ───────────────────────── */
  --el-0: none;
  --el-1: 0 1px 2px rgba(16,22,35,.06);
  --el-2: 0 2px 4px -1px rgba(16,22,35,.08), 0 1px 2px rgba(16,22,35,.04);
  --el-3: 0 12px 24px -8px rgba(16,22,35,.18), 0 2px 6px -2px rgba(16,22,35,.10);

  /* mapeia os nomes do hub para a escada nova */
  --sh-sm:  var(--el-1);
  --sh:     var(--el-1);
  --sh-md:  var(--el-2);
  --sh-lg:  var(--el-3);
  --top-hi: none;          /* remove o brilho interno "de vidro" */

  /* ── Chrome: mata a decoração de fundo sem tocar no hub.css ────────────── */
  --grid-line: transparent;
  --glow-1:    transparent;
  --glow-2:    transparent;
  --scrim:     rgba(16,24,40,.48);

  --side-w:   224px;
  --topbar-h: 52px;
  --maxw:     1440px;
  --maxw-prose: 68ch;

  /* ── Tipografia ────────────────────────────────────────────────────────── */
  /* A Inter declarada no hub.css NUNCA carregou (o <link> do Google Fonts era
     do oauth-hub e a CSP o bloquearia). Enquanto a fonte não for hospedada em
     /assets/fonts/, a stack de sistema abaixo é a que realmente renderiza —
     por isso os pesos 650/750 do hub foram abolidos: sem fonte variável o
     navegador os arredondava de forma imprevisível, achatando a hierarquia. */
  --sans: "Inter var", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
          Roboto, "Noto Sans", "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;

  --fs-3xl: 1.75rem;   /* 28 — valor de métrica */
  --fs-2xl: 1.375rem;  /* 22 — título de tela pública */
  --fs-xl:  1.0625rem; /* 17 — título de seção */
  --fs-lg:  .9375rem;  /* 15 — título de cartão, identificador destacado */
  --fs-md:  .875rem;   /* 14 — prosa */
  --fs-sm:  .8125rem;  /* 13 — célula de tabela, controles */
  --fs-xs:  .75rem;    /* 12 — meta, hint, rodapé, texto legal */
  --fs-2xs: .6875rem;  /* 11 — overline/label CAPS, th, chip */

  --lh-tight: 1.2; --lh-ui: 1.45; --lh-data: 1.3; --lh-prose: 1.6;
  --fw-regular: 400; --fw-medium: 500; --fw-semibold: 600; --fw-bold: 700;

  /* ── Espaçamento (base 4) ──────────────────────────────────────────────── */
  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px; --sp-4: 16px; --sp-5: 20px;
  --sp-6: 24px; --sp-8: 32px; --sp-10: 40px; --sp-12: 48px; --sp-16: 64px;

  --gutter: var(--sp-4);
  --page-pad: var(--sp-6);
  --row-h: 40px;        /* linha de tabela */
  --ctl-h: 34px;        /* controle padrão */
  --ctl-h-sm: 28px;     /* ação dentro de linha */
  --ctl-h-lg: 40px;     /* ação primária de página */
}

:root[data-theme="dark"] {
  --bg:            #0A0C11;
  --bg-2:          #0D1016;
  --surface:       #12151C;
  --surface-2:     #171B24;
  --surface-3:     #1E232E;
  --inset:         #0E1117;
  --border:        #232833;
  --border-strong: #333A48;
  --hairline:      #1C212B;

  --text:    #E9EDF4;   /* 15.56:1 */
  --text-2:  #C2CAD7;   /* 11.07:1 */
  --muted:   #98A2B3;   /*  7.09:1 */
  --muted-2: #6E7A8D;   /*  4.20:1 */
  --muted-3: #4E586A;

  --signal:        #5558EC;   /* branco: 5.26:1 */
  --signal-2:      #4F52E8;   /* escurece na interação, igual ao claro */
  --signal-ink:    #A2A5FA;   /* link: 8.09:1 */
  --signal-soft:   #191C30;
  --signal-border: #2E3260;
  --signal-glow:   none;
  --ring:          rgba(123,126,244,.30);
  --accent-active: #4649DC;

  --ok:     #2BD48F;  --ok-ink:     #52D9A2;  --ok-soft:     #0F211A;  --ok-border:     #1D4536;
  --warn:   #E8A33D;  --warn-ink:   #F2C270;  --warn-soft:   #2A210F;  --warn-border:   #4A3A18;
  --danger: #F0676B;  --danger-ink: #F79A9D;  --danger-soft: #2C1517;  --danger-border: #4D2528;
  --info:   #5B94FF;  --info-ink:   #8AB6FF;  --info-soft:   #101B2E;  --info-border:   #23385E;
  --neutral-soft: #1B202B; --neutral-ink: #98A2B3; --neutral-border: #262C38;

  --danger-solid: #C1272D;   /* mesmo valor nos dois temas */

  /* No escuro sombra não separa nada: hierarquia vem de luminância + borda. */
  --el-1: 0 1px 2px rgba(0,0,0,.45);
  --el-2: 0 2px 6px -1px rgba(0,0,0,.55);
  --el-3: 0 16px 32px -12px rgba(0,0,0,.75), 0 2px 8px -2px rgba(0,0,0,.5);

  /* ⚠ Estas PRECISAM ser repetidas aqui.
     O hub.css também tem um bloco `:root[data-theme="dark"]`, de mesma
     especificidade e declarado ANTES — então toda variável que o tokens.css
     só sobrescreveu no `:root` claro volta ao valor do hub quando o tema
     escuro liga. Sem as linhas abaixo, no escuro o botão primário voltava a
     ser um gradiente VERDE e as sombras pesadas do design antigo reapareciam. */
  --signal-grad: linear-gradient(180deg, #5558EC, #5558EC);
  --top-hi: none;
  --sh-sm: var(--el-1);
  --sh:    var(--el-1);
  --sh-md: var(--el-2);
  --sh-lg: var(--el-3);

  --grid-line: transparent; --glow-1: transparent; --glow-2: transparent;
  --scrim: rgba(2,4,8,.66);
}

/* ═══════════════════════════════════════════════════════════════════════════
   Neutralizações do hub.css que não são variáveis (valores fixos no arquivo
   herdado). Sem isso, o "candy" do oauth-hub sobrevive ao retoken.
   ═══════════════════════════════════════════════════════════════════════════ */

/* fundo liso: sem gradientes radiais nem grade de blueprint */
body {
  background-image: none;
  font-family: var(--sans);
  font-size: var(--fs-md);
  line-height: var(--lh-ui);
  font-feature-settings: normal;   /* cv05/ss01 eram features da Inter, inertes aqui */
}

::selection { background: rgba(79, 82, 232, .22); }

/* blobs desfocados das telas públicas */
.login-wrap::before,
.login-wrap::after { display: none !important; }

/* topbar e sidebar sólidas — backdrop-filter é repintura cara sobre tabela que rola */
.topbar  { background: var(--surface); backdrop-filter: none; }
.sidebar { background: var(--surface-2); }
:root[data-theme="dark"] .sidebar { background: var(--surface-2); }

/* cartões não levantam: hover de card não-clicável é linguagem de app consumer */
.kpi:hover, .card:hover, .install-card:hover { transform: none; }
.btn:hover  { transform: none; }
.btn:active { transform: none; }

/* ícone de KPI sem gradiente decorativo (cor arbitrária que competia com o estado) */
.kpi .kpi-ico,
.kpi-ico.apps, .kpi-ico.chan, .kpi-ico.evt, .kpi-ico.fwd {
  background: var(--surface-2);
  color: var(--muted-2);
  box-shadow: none;
}

/* pesos intermediários abolidos (dependiam de fonte variável que nunca carregou) */
.btn, .kv-row .v, .side-title, .sec-head h2, .sec-head h1,
.card-head h3, .kpi-num, .install-card .inst-domain {
  font-weight: var(--fw-semibold);
}
.kpi-num { font-weight: var(--fw-bold); }

/* números tabulares por regra, não por classe */
:where(td, th, .kpi-num, .kv-row .v, time, .mono, .metric-value, .metric-meta) {
  font-variant-numeric: tabular-nums;
}
/* identificador: distinguir 0 de O numa chave de licença evita ticket de suporte */
.mono, .key-value, code { font-variant-numeric: tabular-nums slashed-zero; }

/* foco visível consistente com o acento novo */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: var(--r-sm);
}

/* utilitário de acessibilidade usado pelos componentes novos */
.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  overflow: hidden; clip-path: inset(50%);
  white-space: nowrap;
}
