/* ============================================================================
   DENSIDADE DA INTERFACE — escala global do sistema
   Sistema: GestãoApp Security
   Autor: Fernando | GESTÃOAPP (https://gestaoapp.ia.br)

   OBJETIVO
   Com o Chrome em 100%, entregar a mesma densidade que antes só se obtinha
   colocando o navegador em 75%.

   COMO, E POR QUE NÃO É `zoom` NEM `transform: scale()`
   O Tailwind expressa QUASE TUDO em `rem` — padding, margin, gap, font-size,
   width, height, border-radius. `rem` é relativo ao font-size do <html>. Então
   mudar UM valor no <html> reescala o sistema inteiro, e o layout continua sendo
   layout real: os elementos são de fato menores, e não desenhados grandes e
   depois espremidos. Flex e grid recalculam, a página ocupa 100% da viewport, e
   não sobra a faixa morta que o `scale()` deixa.

   As media queries do Tailwind continuam em PIXEL, então os breakpoints não se
   mexem: `lg:` ainda vira lg aos 1024px reais de tela. É isso que mantém a
   responsividade intacta enquanto só a densidade muda.

   ESCALA POR TAMANHO DE TELA
   Não é uma redução única para todo mundo. Quanto maior o monitor, mais densa a
   interface; abaixo de 1024px NADA muda, e tablet e celular ficam exatamente
   como estavam (é também o que evita o zoom automático que o iOS aplica em campo
   com fonte menor que 16px).

   ONDE MEXER DEPOIS
   Só na variável `--ga-densidade`. Trocar um número aqui reescala tudo.
   ============================================================================ */

:root {
    /* 1 = tamanho original. Cada faixa abaixo redefine para telas maiores. */
    --ga-densidade: 1;
}

/* A âncora de todo o sistema. 16px é o padrão do navegador; a variável desloca
   a partir dele. `html` e não `:root` por legibilidade — é o mesmo elemento. */
html {
    font-size: calc(16px * var(--ga-densidade));
}

/* Tablet em paisagem e notebooks pequenos: um passo suave. */
@media (min-width: 1024px) {
    :root { --ga-densidade: 0.875; }   /* 14px */
}

/* Notebooks 1366x768 e monitores intermediários. */
@media (min-width: 1280px) {
    :root { --ga-densidade: 0.8125; }  /* 13px */
}

/* 1600x900, 1920x1080 e acima: a densidade que equivale ao zoom 75%. */
@media (min-width: 1536px) {
    :root { --ga-densidade: 0.75; }    /* 12px */
}

/* ----------------------------------------------------------------------------
   CONTAINERS DE PÁGINA — largura ancorada em pixel

   Aqui há um DESVIO DELIBERADO da referência, e vale saber por quê.

   `max-w-7xl` são 80rem. Escalando junto, viraria 960px numa tela de 1920 — e a
   faixa vazia nas laterais saltaria de 370px para 754px (MEDIDO): o
   aproveitamento da largura cairia de 78% para 56%. É o que acontece hoje com o
   navegador em 75%, só que lá passa despercebido porque a viewport lógica também
   cresce.

   Dividir pela densidade mantém o container do MESMO tamanho em pixel que tem
   hoje, enquanto o conteúdo dentro dele encolhe — que é o ponto: cabe cerca de um
   terço mais de conteúdo na mesma caixa.

   Só os wrappers LARGOS entram. `max-w-2xl` e `max-w-3xl` seguram formulários
   estreitos e blocos de texto, onde a medida existe para limitar o comprimento da
   linha de leitura: ali encolher junto é o comportamento certo.

   `html .max-w-*` em vez de `.max-w-*` porque o Tailwind vem do CDN e injeta o
   próprio <style> por JavaScript DEPOIS deste arquivo. Com a mesma
   especificidade, quem vem por último vence — e seria o Tailwind. O `html` na
   frente resolve sem precisar de `!important`.
   ---------------------------------------------------------------------------- */
@media (min-width: 1024px) {
    html .max-w-4xl { max-width: calc(56rem / var(--ga-densidade)); }
    html .max-w-5xl { max-width: calc(64rem / var(--ga-densidade)); }
    html .max-w-6xl { max-width: calc(72rem / var(--ga-densidade)); }
    html .max-w-7xl { max-width: calc(80rem / var(--ga-densidade)); }
}

/* ----------------------------------------------------------------------------
   PISO DE LEGIBILIDADE

   As views usam 277 medidas em pixel cravado, e 162 delas são fonte miúda de
   selo e legenda (`text-[9px]` a `text-[12px]`). Elas NÃO escalam, e isso é de
   propósito: a 0,75 o `text-[9px]` iria a 6,75px. Deixando em pixel, o texto
   miúdo fica IGUAL ou MAIOR do que fica hoje com o navegador em 75% — onde
   `text-[9px]` já é renderizado a 6,75px físicos.

   O efeito colateral é que `text-xs` (0,75rem = 9px na densidade máxima) fica
   um pouco menor que um `text-[10px]` ao lado. É diferença de 1px em texto de
   selo, e o lado que ganhou foi o da legibilidade.

   O que NÃO pode acontecer é um texto de corpo ficar pequeno demais. O piso
   abaixo protege os dois utilitários que carregam texto corrido.
   ---------------------------------------------------------------------------- */
/* A faixa e `1024px` e nao `1536px`: MEDIDO em 1366px, onde a densidade e 0,8125,
   o `text-xs` caia para 9,75px — abaixo do piso, numa faixa que o corte em 1536
   nem alcancava. `max()` so age quando o calculo fica menor que o piso, entao em
   densidade 1 (celular e tablet) estas duas linhas nao mudam nada. */
@media (min-width: 1024px) {
    html .text-xs { font-size: max(0.75rem, 10px); }
    html .text-sm { font-size: max(0.875rem, 11px); }
}
