/* ============================================================
   InfraMINA · Fundação visual — "Permissão de Trabalho"
   Fonte única de tokens. NENHUM outro arquivo declara estas variáveis.

   A regra que governa o sistema:
     o registro é claro porque é documento;
     tudo que não é registro é preto porque é subsolo.

   Cor não é decoração. Existem exatamente dois motivos para uma cor
   aparecer nesta interface:
     1. ela é uma classe de risco da operação (liberado / atenção / impedido);
     2. ela é o ato de autorizar (o carimbo).
   Qualquer outro uso de cor é erro.

   Usado por: index.html, sistema-login.html, relatorio-terceirizada.html,
   redefinir-senha.html
   ============================================================ */

/* ------------------------------------------------------------
   Tipografia auto-hospedada. Sem CDN: a mina trabalha sem rede,
   e uma fonte que só existe no Google Fonts é uma fonte que não
   existe no subsolo. Estes arquivos entram no pré-cache do sw.js.

   Archivo tem eixo de largura (wdth 62–125): o mesmo arquivo dá a
   condensada dos rótulos pré-impressos e a normal do texto corrido.
   Fira Mono carrega todo valor lançado — número, código, hora.
   ------------------------------------------------------------ */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url('../assets/fonts/archivo-var-latin.woff2') format('woff2-variations');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fira Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../assets/fonts/firamono-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fira Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../assets/fonts/firamono-700-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* ==========================================================
     1. MATÉRIA
     ========================================================== */

  /* --- O vazio: a galeria. Tudo que não é registro. --- */
  --void: #16181b;
  --void-2: #0d1823;   /* cromo elevado: barra superior, lateral */
  --void-3: #162432;   /* poço de campo, trilha, estado pressionado */
  /* Régua que SEPARA precisa de 3:1. A hierarquia deste mundo é peso de
     régua — uma régua invisível não carrega hierarquia nenhuma, e some de
     vez sob lanterna. A antiga media 1,36:1. */
  --void-line: #62676f;
  --void-line-strong: #838992;

  /* --- O papel-cartão: o documento. Tudo que é registro. --- */
  --stock: #d8d5cd;
  --stock-2: #cbc8bf;  /* faixa alternada, célula recuada, cabeçalho de tabela */
  --stock-3: #bdbab1;  /* célula desabilitada, área de preenchimento fechada */

  /* --- Tinta sobre o cartão --- */
  --ink: #14161a;
  --ink-2: #3b3f46;
  /* Medido contra --stock-3, não contra --stock: é dentro do campo fechado
     pelo carimbo que esta tinta aparece, e era ali que ela falhava (4,06:1).
     Agora 4,72:1 sobre --stock-3 e 6,24:1 sobre --stock. */
  --ink-faint: #454951;

  /* --- Texto sobre o vazio --- */
  --on-void: #e9e8e4;
  --on-void-2: #9ba1a8;
  --on-void-faint: #767c84;

  /* --- Réguas do formulário. A estrutura é régua, não borda+raio. --- */
  --rule-hair: 1px;
  --rule-body: 2px;
  --rule-heavy: 3px;
  --rule-band: 8px;          /* tarja de classe de risco no topo do documento */
  --rule-ink: #1a1a18;       /* régua pesada sobre cartão */
  /* Mesma razão do --void-line: 1,64:1 não separa nada. Agora 3,29:1. */
  --rule-hair-ink: #757369;  /* régua de fio sobre cartão */

  /* ==========================================================
     2. CLASSE DE RISCO — o primeiro dos dois motivos para haver cor
     ========================================================== */
  /* Tarja e texto são usos diferentes: a tarja pode ser saturada porque é
     campo, o texto precisa passar em 4.5:1 sobre o cartão. Por isso cada
     classe tem uma tinta escurecida além da cor de campo. */
  --risk-clear: #175c34;         /* liberado — 5,47:1 sobre --stock */
  --risk-clear-band: #1e7a46;
  --risk-clear-void: #4cc983;
  --risk-clear-wash: #cfe2d6;
  --risk-attention: #6e5200;     /* atenção — tinta legível */
  --risk-attention-band: #f2b705;
  --risk-attention-void: #f7c93d;
  --risk-attention-wash: #ece0bd;
  --risk-blocked: #a80d26;       /* impedido — 5,20:1 sobre --stock */
  --risk-blocked-band: #c8102e;
  --risk-blocked-void: #ff6b7b;
  --risk-blocked-wash: #ebcfd3;

  /* Vencido não tem cor. Um documento fora da validade perde a
     saturação e ganha hachura — o estado muda a matéria, não o badge. */
  /* Era #7c7f84 sobre #dcdad4 = 2,87:1, aplicado ao VALOR de 22px do cartão
     vencido: o estado que mais precisa ser lido era o menos legível da folha.
     "Sem cor" continua verdade — o que muda é que agora dá para ler. */
  --expired-ink: #3f4249;
  --expired-stock: #cbc8c0;
  --hatch: repeating-linear-gradient(
    -45deg,
    transparent 0 5px,
    rgba(20, 22, 26, .09) 5px 6px
  );

  /* ==========================================================
     3. CARIMBO — o segundo motivo para haver cor.
        Tinta de autorização. Nunca decorativa, nunca em outro papel.
        É por isso que a ação primária do sistema usa esta cor: a
        ação primária do sistema É autorizar.
     ========================================================== */
  --stamp: #a84408;
  --stamp-strong: #853405;
  --stamp-void: #ff7a1a;         /* o mesmo carimbo, legível sobre o vazio */
  --stamp-wash: #f8ddcb;

  /* Console operacional 2026: superfícies escuras dos dois sistemas. */
  --console-bg: #07111b;
  --console-panel: #0e1b28;
  --console-panel-2: #142332;
  --console-line: #34495b;
  --console-line-strong: #526779;
  --console-text: #f1f4f6;
  --console-muted: #9eabb6;

  /* ==========================================================
     4. TIPOGRAFIA
        Dois registros, e a diferença entre eles é epistemológica:
        o rótulo é o que o formulário PERGUNTOU (condensado, versal,
        pré-impresso); o valor é o que alguém RESPONDEU (monoespaçado,
        lançado). Dá para saber num relance o que é sistema e o que
        é declaração humana.
     ========================================================== */
  --font-text: 'Archivo', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --font-label: 'Archivo', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --font-value: 'Fira Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;

  --stretch-label: 78%;    /* condensada: registro de rótulo impresso */
  --stretch-text: 100%;
  --track-label: .09em;

  /* Escala. Num formulário o campo é o herói, não o número gigante:
     por isso não há passo monumental aqui. O maior valor do sistema
     cabe em 22px e ainda assim domina, porque tudo em volta é régua. */
  --t-micro: .6875rem;   /* 11px — piso absoluto de legibilidade */
  --t-label: .75rem;     /* 12px — rótulo pré-impresso */
  --t-sm: .8125rem;      /* 13px */
  --t-value: .9375rem;   /* 15px — valor lançado */
  --t-body: .9375rem;    /* 15px */
  --t-lg: 1.0625rem;     /* 17px */
  --t-section: 1rem;     /* 16px — título de seção do formulário */
  --t-doc: 1.375rem;     /* 22px — número/título do documento */
  --t-doc-lg: 1.75rem;   /* 28px — título de tela */

  --lh-tight: 1.15;
  --lh-value: 1.3;
  --lh-body: 1.55;
  --measure: 68ch;       /* medida de leitura: 65–75ch */

  /* ==========================================================
     5. FORMA
        O cartão é recortado a faca. Não há raio neste mundo.
     ========================================================== */
  --radius: 6px;
  --radius-sm: 4px;
  --radius-lg: 8px;
  --radius-full: 999px;   /* exceção única: indicador de foco circular */

  /* ==========================================================
     6. ELEVAÇÃO
        O documento está apoiado sobre a galeria, sob a luz da
        lanterna de capacete. Deslocamento + desfoque, nunca halo.
     ========================================================== */
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);
  --shadow-soft: 0 2px 0 rgba(0, 0, 0, .38), 0 10px 24px rgba(0, 0, 0, .42);
  --shadow: 0 2px 0 rgba(0, 0, 0, .45), 0 18px 44px rgba(0, 0, 0, .55);

  /* ==========================================================
     7. MOVIMENTO
        Um momento autorado: o carimbo aterrissando. O resto é
        transição de estado, curta e sem cerimônia.
     ========================================================== */
  --ease: cubic-bezier(.16, 1, .3, 1);
  --ease-stamp: cubic-bezier(.22, 1, .24, 1);
  --dur-fast: 110ms;
  --dur: 170ms;
  --dur-slow: 300ms;

  /* ==========================================================
     8. FOCO
        Anel de carimbo. Visível sobre cartão e sobre vazio.
     ========================================================== */
  --ring-w: 3px;
  --ring: 0 0 0 var(--ring-w) var(--stamp-wash), 0 0 0 calc(var(--ring-w) + 2px) var(--stamp);

  /* ==========================================================
     9. LAYOUT
     ========================================================== */
  --sidebar: 244px;
  --doc-max: 1180px;

  /* Escala de espaço em 4px. O ritmo do formulário é apertado por
     dentro do campo e generoso entre blocos. */
  --sp-1: .25rem;
  --sp-2: .5rem;
  --sp-3: .75rem;
  --sp-4: 1rem;
  --sp-5: 1.25rem;
  --sp-6: 1.5rem;
  --sp-8: 2rem;
  --sp-10: 2.5rem;

  /* ==========================================================
     10. CONTEXTO PADRÃO: DOCUMENTO
         A raiz fala a língua do cartão, porque é onde o trabalho
         acontece. O cromo escuro se redeclara abaixo.
     ========================================================== */
  color-scheme: light;

  --surface: var(--stock);
  --surface-2: var(--stock-2);
  --surface-3: var(--stock-3);
  --border: var(--rule-hair-ink);
  --border-strong: var(--rule-ink);
  --text: var(--ink);
  --text-soft: var(--ink-2);
  --muted: var(--ink-faint);
  --muted-2: var(--ink-faint);

  /* ==========================================================
     11. PONTE DE COMPATIBILIDADE
         Os ~2.500 seletores herdados de styles.css falam a língua
         antiga (--primary, --accent, --danger…). Em vez de reescrever
         111 KB de CSS numa tacada, os nomes antigos apontam para o
         mundo novo: o sistema inteiro muda de identidade sem que uma
         única regra existente quebre.

         Estes nomes são LEGADO. Código novo usa o vocabulário acima.
         ========================================================== */
  --primary: var(--stamp);
  --primary-dark: var(--stamp-strong);
  --primary-soft: var(--stamp-wash);
  --accent: var(--stamp);
  --accent-soft: var(--stamp-wash);

  --success: var(--risk-clear);
  --success-soft: var(--risk-clear-wash);
  --warning: var(--risk-attention);
  --warning-soft: var(--risk-attention-wash);
  --danger: var(--risk-blocked);
  --danger-soft: var(--risk-blocked-wash);

  --bg: var(--void);
  --bg-deep: #060708;
  --bg-alt: var(--void-2);

  --font-sans: var(--font-text);
  --text-xs: var(--t-micro);
  --text-sm: var(--t-sm);
  --text-base: var(--t-body);
  --text-lg: var(--t-lg);
  --text-xl: var(--t-section);
  --text-2xl: var(--t-doc);
}

/* ============================================================
   CONTEXTO: VAZIO
   Todo cromo que não é registro. Os MESMOS nomes de variável
   apontam para a paleta escura, então qualquer componente herdado
   colocado aqui dentro se veste de subsolo sem uma linha a mais.
   ============================================================ */
.on-void,
body,
.app,
.sidebar,
.topbar,
.content,
.tc-header,
.tc-content,
.market-ticker,
.overlay-backdrop {
  color-scheme: dark;

  --surface: var(--void-2);
  --surface-2: var(--void-3);
  --surface-3: #232830;
  --border: var(--void-line);
  --border-strong: var(--void-line-strong);
  --hatch: repeating-linear-gradient(-45deg, transparent 0 5px, rgba(233, 232, 228, .12) 5px 6px);
  --text: var(--on-void);
  --text-soft: var(--on-void-2);
  --muted: var(--on-void-2);
  --muted-2: var(--on-void-faint);

  --primary: var(--stamp-void);
  --primary-dark: #8aa8ee;
  --primary-soft: rgba(108, 143, 232, .18);
  --accent: var(--stamp-void);
  --accent-soft: rgba(108, 143, 232, .18);
  --success: var(--risk-clear-void);
  --success-soft: rgba(63, 191, 117, .16);
  --warning: var(--risk-attention-void);
  --warning-soft: rgba(247, 201, 61, .16);
  --danger: var(--risk-blocked-void);
  --danger-soft: rgba(255, 95, 112, .16);
}

/* O DOCUMENTO. A troca de contexto acontece na borda do cartão, não na
   área de trabalho: o que é registro fica claro, o resto continua sendo
   subsolo. Por isso a lista abaixo é de documentos, não de containers. */
.on-stock,
.card,
.stats,
.stat-card,
.technical-section,
.daily-card,
.daily-block,
.aside-card,
.kanban-col,
.modal,
.auth-card,
.table-wrap,
.carbon-copy,
.ibutg-stop,
.empty-state,
.empty {
  color-scheme: light;

  --surface: var(--stock);
  --surface-2: var(--stock-2);
  --surface-3: var(--stock-3);
  --border: var(--rule-hair-ink);
  --border-strong: var(--rule-ink);
  --text: var(--ink);
  --text-soft: var(--ink-2);
  --muted: var(--ink-faint);
  --muted-2: var(--ink-faint);

  --primary: var(--stamp);
  --primary-dark: var(--stamp-strong);
  --primary-soft: var(--stamp-wash);
  --accent: var(--stamp);
  --accent-soft: var(--stamp-wash);
  --success: var(--risk-clear);
  --success-soft: var(--risk-clear-wash);
  --warning: var(--risk-attention);
  --warning-soft: var(--risk-attention-wash);
  --danger: var(--risk-blocked);
  --danger-soft: var(--risk-blocked-wash);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-fast: 0ms;
    --dur: 0ms;
    --dur-slow: 0ms;
  }
}
