/*
 * TermoVision v3 — tokens do design system.
 *
 * Fonte única de cor, espaço, tipo, raio, sombra, camada, duração e dimensão do
 * shell. Valores e contrastes: docs/v3/DESIGN_SYSTEM.md §1. Este é o ÚNICO
 * arquivo da v3 onde um hex pode aparecer (lint: DESIGN_SYSTEM §5).
 *
 * Camada: `tokens`. A ordem das camadas é declarada por quem carrega as folhas:
 *   @layer leaflet, tokens, componentes, shell, secoes;
 *
 * As medições da skill features (L4) leem a paleta de TODA regra cujo seletor
 * é exatamente `:root` — por isso nenhum token mora em outro seletor.
 */
@layer tokens {
  :root {
    color-scheme: dark;

    /* 1.1 Superfícies — elevação por tom, não por sombra */
    --sup-0: #0b0e14;
    --sup-1: #12161d;
    --sup-2: #1a2029;
    --sup-3: #222a35;
    --fundo-modal: rgba(4, 6, 10, .72);

    /* 1.2 Texto (contraste medido em DESIGN_SYSTEM §1.2) */
    --texto-1: #e8ecf2;
    --texto-2: #b9c2d0;
    --texto-3: #8b97ab;
    --texto-sobre-acento: #0b0e14;
    --texto-sobre-perigo: #ffffff;

    /* 1.3 Bordas — só --borda-controle delimita controle (≥ 3:1) */
    --borda-1: #262d38;
    --borda-2: #3a4452;
    --borda-controle: #6a7689;

    /* 1.4 Semânticas — cor nunca vem sozinha: sempre com texto ou ícone */
    --acento: #ff7a45;
    --acento-hover: #ff8f63;
    --acento-fraco: rgba(255, 122, 69, .14);
    --info: #4a9eff;
    --ok: #35c274;
    --aviso: #f5b74e;
    --erro: #f26a71;
    --perigo-fundo: #c93a42;
    --perigo-fundo-hover: #b3313a;
    --info-fundo: #14263d;
    --ok-fundo: #12301f;
    --aviso-fundo: #3a2e14;
    --erro-fundo: #3a1a1e;
    --foco: var(--acento);
    --mod-rgb: var(--info);
    --mod-termico: var(--acento);
    --coa-1: var(--ok);
    --coa-2: var(--aviso);
    --coa-3: var(--erro);

    /* 1.5 Mapa — valor IGUAL ao de hoje (mudar é decisão do Renan) */
    --mapa-mesa: #22d3ee;
    --mapa-mesa-sel: #4ade80;
    --mapa-mesa-mao: #4a9eff;                 /* mesa desenhada à mão: o azul do "manual" da grade (Renan, 14/10/2026) */
    --mapa-mesa-projeto: #facc15;             /* mesa PROJETADA (estrutura fixa, 16/10/2026): sobre a grama do RGB */
    --mapa-alerta: #ffffff;
    --mapa-correcao: #2563eb;
    --mapa-rejeitada: #f87171;
    --mapa-foot: #4a9eff;
    --mapa-foot-destaque: #ff7a45;
    --mapa-grade-manual: #4a9eff;
    --mapa-grade-ia: #22d3ee;
    --mapa-grade-regra: #ffffff;
    --mapa-medicao: #4a9eff;
    --mapa-medicao-sel: #ff7a45;
    --mapa-sombra-pedaco: #1f6edc;
    --foto-numero: #ffd166;
    /* Pedidos dos lotes 3C, 3D e 3E (valor igual ao da v1, citado ao lado). */
    --mapa-bloco: #fb923c;                    /* blocos e bordas calculadas: mesas_editor.js da v1 */
    --mapa-excecao: #f0545c;                  /* "fileira diferente": enumeracao.js da v1 */
    --mapa-ancora-referencia: var(--info);    /* ancoras.js:582 (#4a9eff) */
    --mapa-ancora-marca: #f0545c;             /* ancoras.js:583 */
    --mapa-ancora-halo: rgba(0, 0, 0, .45);   /* ancoras.js:590 */
    --mapa-sombra-nao-julgado: #8a94a6;       /* sombra_mapa.js:434, 812, 968 */
    --mapa-sombra-celula-luz: #d7dbe2;        /* sombra_mapa.js:457 */
    --mapa-sombra-pouco: #ffd23c;             /* sombra_mapa.js:757-759 rgb(255,210,60) */
    --mapa-sombra-muito: #ff140a;             /* idem, rgb(255,20,10) */
    --mapa-objeto: var(--ok);                 /* sombra_mapa.js:1110 (#35c274) */
    --mapa-objeto-desligado: #6b7280;         /* sombra_mapa.js:1110 */
    /* PVsyst (12/10/2026): o objeto marcado para o PVsyst (não é o da sombra),
       o pitch fora e dentro da margem no mapa, e as cores do visualizador 3D. */
    --mapa-pvsyst-objeto: #c084fc;
    --mapa-rascunho-halo: rgba(0, 0, 0, .6);  /* o halo sob o contorno em desenho (objetos) */
    --mapa-pitch-fora: var(--erro);
    --mapa-pitch-ok: var(--ok);
    /* Terreno (16/10/2026, Hotel Paradise): a árvore tirada (contorno tracejado) e
       a área de mato rebaixada (hachurada, com o "−20 cm") — "deixa marcado de
       alguma forma que ali foi rebaixado". */
    --mapa-terreno-arvore: #fbbf24;
    --mapa-terreno-mato: #f472b6;
    /* A área de textura (16/10/2026: "o que estiver dentro do retângulo vermelho vai seguir
       a textura do rabisco vermelho"): o contorno da área e a amostra dentro dela. */
    --mapa-terreno-textura: #ef4444;
    /* O pincel de grama (16/10/2026: "usar tipo um pincel para falar 'olha aqui é grama'"): a
       pincelada no mapa, translúcida, e o círculo do pincel. Lima, e não verde: sobre a grama do
       orto, verde translúcido some. */
    --mapa-terreno-grama: #a3e635;
    --pvsyst-modulo: #1f3d8c;
    --pvsyst-terreno: #b9a27a;
    --pvsyst-objeto: #2f7d32;
    --pvsyst-ceu: #c7e3f5;
    --mapa-horas-1: #a50026;                  /* app.css:2271 (RdYlGn) */
    --mapa-horas-2: #f46d43;
    --mapa-horas-3: #fee08b;
    --mapa-horas-4: #a6d96a;
    --mapa-horas-5: #1a9850;
    --mapa-medicao-area: color-mix(in srgb, var(--mapa-medicao) 16%, transparent); /* paineis.css:829 */
    --foto-losango: #f0545c;                  /* foto_marcador.js da v1: rgba(240,84,92,.9) */
    --foto-contorno: #f0545c;                 /* foto_marcador.js da v1:150 */

    /* 1.6 Espaço — múltiplos de 4 e 8 (padding, margin e gap só com estes e 0) */
    --e-1: 4px;
    --e-2: 8px;
    --e-3: 12px;
    --e-4: 16px;
    --e-5: 24px;
    --e-6: 32px;
    --e-7: 48px;

    /* 1.7 Tipografia — 5 tamanhos, cada um com a sua altura de linha.
       Inter só é usada se estiver INSTALADA na máquina: nada de Google Fonts
       (o produto roda offline). Sem ela, a tela usa a Segoe UI Variable. */
    --fonte: "Inter", "Segoe UI Variable", "Segoe UI", system-ui, sans-serif;
    --fonte-mono: ui-monospace, "Cascadia Mono", monospace;
    --t-xs: 11px;  --lh-xs: 16px;
    --t-sm: 12px;  --lh-sm: 16px;
    --t-md: 14px;  --lh-md: 20px;
    --t-lg: 16px;  --lh-lg: 24px;
    --t-xl: 20px;  --lh-xl: 28px;
    --peso-normal: 400;
    --peso-medio: 500;
    --peso-forte: 600;

    /* 1.8 Alturas de controle — sempre min-height, nunca height (F2) */
    --alt-sm: 28px;
    --alt-md: 32px;
    --alt-lg: 40px;

    /* 1.9 Raios e sombras (sombra só no que flutua) */
    --r-sm: 4px;
    --r-md: 8px;
    --r-lg: 12px;
    --r-pill: 999px;
    --sombra-1: 0 2px 8px rgba(0, 0, 0, .35);
    --sombra-2: 0 12px 32px rgba(0, 0, 0, .5);

    /* 1.10 Camadas — o mapa tem isolation: isolate e os z do Leaflet ficam lá dentro */
    --z-mapa: 0;
    /* Camada LOCAL: só vale dentro do contêiner que já tem o próprio
       empilhamento (cabeçalho fixo da tabela sobre as linhas dela; a
       superfície da seção sobre o mapa, dentro de #area-trabalho, que tem
       isolation: isolate). Nunca disputa com as camadas do shell abaixo.
       Decisão do orquestrador, lote 2A (05/10/2026). */
    --z-local: 1;
    --z-mapa-ui: 10;
    --z-shell: 20;
    --z-drawer: 30;
    --z-popover: 40;
    --z-fundo-modal: 50;
    --z-modal: 60;
    --z-toast: 70;
    --z-tooltip: 80;

    /* 1.11 Movimento */
    --dur-rapido: 110ms;
    --dur-medio: 240ms;
    --dur-lento: 400ms;
    --ease-padrao: cubic-bezier(.2, 0, .38, .9);
    --ease-entrada: cubic-bezier(0, 0, .38, .9);
    --ease-saida: cubic-bezier(.2, 0, 1, .9);

    /* 1.12 Dimensões do shell (cortes de largura: 1280px e 1680px) */
    --topbar-h: 48px;
    --visao-h: 40px;
    --rail-w: 72px;           /* 56 não cabia o rótulo "Ferramentas" (11 px, 61,7 px medido) com folga de 4 px de cada lado */
    --lateral-w: 240px;
    --painel-w: 340px;
    --inspector-w: 360px;
    --status-h: 28px;

    /* Larguras de componente (DESIGN_SYSTEM §3.3 e §3.5) */
    --modal-sm: 400px;
    --modal-md: 560px;
    --modal-lg: 800px;
    --toast-w: 360px;
    --form-max: 720px;
  }

  @media (prefers-reduced-motion: reduce) {
    :root {
      --dur-rapido: 0ms;
      --dur-medio: 0ms;
      --dur-lento: 0ms;
    }
  }
}
