/* =====================================================================
   TOKENS · Central de Leads com o design da Clint (SPEC-VISUAL, item 1)

   A regra: nenhuma cor nem tamanho "solto" no CSS. Tudo o que é cor, fonte,
   raio e altura de controle nasce aqui e só aqui. O resto do CSS usa
   var(--…). Um grep por "#" fora deste arquivo tem que voltar vazio.

   V1 (Arthur): só o tema escuro, por enquanto.
   V3 (Arthur, revisto em 01/10): paleta monocromática — preto, branco e
   cinza em botões, fundos, item ativo e foco. As marcações de lead (faixas,
   produtos, etiquetas, status) continuam coloridas.
   ===================================================================== */

/* ---------- fonte: Poppins, servida daqui (sem ir ao Google) ----------
   Caminho relativo a este arquivo: funciona servida pelo Express (/css/…)
   e aberta de file:// pelos testes de tela e pelo harness de prints. */
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/poppins-400.woff2') format('woff2'); }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/poppins-500.woff2') format('woff2'); }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 600; font-display: swap; src: url('../fonts/poppins-600.woff2') format('woff2'); }

:root {
  color-scheme: dark;

  /* ---------- superfícies ---------- */
  --bg: #171717;             /* fundo da aplicação (área de conteúdo) */
  --bg-panel: #1C1C1C;       /* barra lateral, colunas do kanban, cards de indicador, painéis */
  --bg-card: #262626;        /* card de lead na coluna, botão ativo do segmentado */
  --bg-input: #232323;       /* campos de texto e busca */
  --bg-table-head: #171717;  /* cabeçalho de tabela */
  --bg-hover: #2E2E2E;       /* hover de linha e de item */
  --border: #2E2E2E;         /* bordas de coluna, input, botão secundário, divisórias */
  --border-subtle: #262626;  /* borda de card de indicador e linha de tabela */

  /* ---------- texto ---------- */
  --fg: #C8C8C8;             /* principal · 10,9:1 sobre --bg */
  --fg-muted: #999999;       /* secundário, menu inativo, rótulos · 6,2:1 */
  --fg-subtle: #9A9A9A;      /* placeholder, atalho de teclado · A8-20: media 5,38:1 sobre o card (era 3,33) */
  --fg-on-primary: #111111;  /* texto em cima do botão principal (branco) */
  --fg-on-warning: #000000;  /* texto em cima do laranja (e do verde do WhatsApp) */

  /* ---------- cor principal (V3: monocromático) ---------- */
  --primary: #F2F2F2;                     /* botão principal, barrinha do item ativo, etapa atual, foco */
  --primary-hover: #D9D9D9;               /* botão principal sob o mouse */
  --primary-fg: #FFFFFF;                  /* texto e ícone do item ativo do menu, links, botão contornado */
  --primary-subtle: rgba(255, 255, 255, .08);  /* fundo do item ativo do menu */
  --primary-muted: rgba(255, 255, 255, .22);   /* borda de botão secundário claro */

  /* ---------- etiquetas e status ---------- */
  --tag-bg: #3C3C3C;         /* fundo de etiqueta (pílula) */
  --tag-fg: #B898EB;         /* texto de etiqueta */
  --success-bg: #14532D;     /* selo "Novo", status positivo */
  --success-fg: #86EFAC;
  /**
   * AUDITORIA A8-07 / D-6 — ATENÇÃO É ÂMBAR, NÃO VERMELHO.
   *
   * --warning-bg era #3B1106 (matiz 12°: vermelho-escuro) e --warning era
   * #F97316 (laranja-vermelho). Com isso "Dados provisórios", "senha
   * provisória", "nome genérico", "sem próxima ação" e a linha da hora na
   * Agenda apareciam em vermelho de urgência — onze usos. O vermelho fica
   * para urgência e erro (--danger*, --sinal-urgencia); atenção aponta para a
   * família âmbar, que já existia e não era usada nesses componentes.
   *
   * --warning-fg é novo: --warning como TEXTO media 3,11:1 no claro (A8-20).
   * Como texto, o âmbar precisa escurecer no claro — a cor do SINAL (fundo,
   * barra, ícone) continua a mesma nos dois temas.
   */
  --warning-bg: rgba(242, 169, 59, .16);
  --warning: var(--sinal-atencao);
  --warning-fg: #F2A93B;
  --danger: #FF4B4C;         /* contador de notificação, linha "agora" da agenda */
  --danger-bg: rgba(255, 75, 76, .16);
  --danger-fg: #FF8A8B;
  --info: #60A5FA;           /* ✓✓ lido, ligação na linha do tempo */
  --count-bg: rgba(184, 184, 184, .2);  /* contador redondo da coluna */

  /* ---------- agenda (4.7): uma cor por tipo de compromisso ---------- */
  /* A8-16 — legenda e compromissos saem daqui, e daqui só. As cores são as
     da família de sinal (v9 E4), que é o que a grade já desenhava. */
  --ag-tarefa: var(--sinal-neutro);   /* tarefa marcada com o lead */
  --ag-visita: var(--sinal-sucesso);  /* visita · é o caminho do ganho */
  --ag-fwp: var(--sinal-atencao);     /* follow-up da cadência */
  --ag-atividade: var(--info);        /* atividade da etapa */

  /* ---------- faixas (mesmo esquema de pílula) ---------- */
  --f-a-bg: rgba(249, 115, 22, .16);  --f-a-fg: #FDBA74;   /* A · Quente */
  --f-b-bg: rgba(234, 179, 8, .16);   --f-b-fg: #FDE047;   /* B · Morno  */
  --f-c-bg: var(--tag-bg);            --f-c-fg: var(--fg-muted);  /* C · Frio */
  --f-agora-bg: rgba(255, 75, 76, .16); --f-agora-fg: #FF8A8B;  /* Agora */

  /* ===================================================================
   * SPEC v9 · Bloco E — O SISTEMA DE SINAIS
   *
   * A interface continua neutra (D1 da v8). A cor entra só como SINAL, e cada
   * cor quer dizer uma coisa só, em todas as telas:
   *
   *   urgência (vermelho) → agir já      · lead Agora, tarefa vencida, resposta atrasada
   *   atenção  (âmbar)    → olhar em breve · tempo na etapa, anúncio genérico, aviso de config
   *   sucesso  (verde)    → feito        · ganho, visita realizada, tarefa concluída
   *   neutro   (cinza)    → sem ação     · perdido, arquivado, C · Frio
   *
   * Vermelho SÓ para urgência: era usado também em tempo na etapa e em aviso de
   * anúncio, e com vermelho em tudo o vermelho deixa de significar algo.
   * Os valores daqui são medidos por scripts/contraste.js nos dois temas.
   * =================================================================== */
  --sinal-urgencia: #FF7A70;   /* medido: 4,73:1 sobre o card */
  --sinal-atencao: #F2A93B;    /* medido: 7,40:1 */
  --sinal-sucesso: #4CC38A;    /* medido: 7,14:1 */
  --sinal-neutro: #9AA0A9;     /* medido: 5,56:1 */

  /* ---------- produtos: identificam de onde o lead veio, não urgência ----------
   * São faixa de 3 px e bolinha: forma, não texto, então o mínimo é 3:1.
   * Carta de crédito saiu do rosa-avermelhado (que colidia com urgência) para
   * magenta, como a spec pede. */
  --prod-agio-carro: #5B9DF5;
  --prod-agio-imovel: #A78BFA;
  --prod-capital-giro: #3FC6B8;
  --prod-carta-credito: #E36BC4;
  --prod-financiamento: #9BD14A;

  /* ---------- etapa: UM matiz (índigo), do claro ao forte conforme avança ----------
   * Um matiz só para não confundir etapa com produto. O selo é o fundo da cor a
   * 18% com o texto na cor cheia; por isso o mínimo aqui é de texto (4,5:1). */
  --etapa-1: #C7CBF5;   /* Novo */
  --etapa-2: #B4BAF2;   /* Tentando contato */
  --etapa-3: #A2A9EF;   /* Em conversa */
  --etapa-4: #949CEC;   /* Qualificado */
  --etapa-5: #8891E9;   /* Visita agendada */
  --etapa-6: #7E87E6;   /* Visita realizada */
  --etapa-nutri: var(--sinal-neutro);
  --etapa-ganho: var(--sinal-sucesso);
  --etapa-perdido: var(--sinal-neutro);
  /* 03/10 — o índigo que serve de TEXTO: o rótulo da etapa atual nos passos do
     topo da ficha. A escala em si é elemento gráfico (3:1); como texto ela
     reprova 4,5:1 nas primeiras etapas do tema claro, então o rótulo usa este. */
  --etapa-fg: #B4BAF2;

  /* D-7, opção (b) da decisão 4: cores distintas por etapa. Só valem quando
     Aparência está em "Cores por etapa"; os matizes ficam fora dos de produto
     e dos de sinal, e cada um é medido como elemento gráfico (3:1). */
  --etapac-1: #9AA6F0;   /* Novo · azul-violeta */
  --etapac-2: #67D8EF;   /* Tentando contato · ciano */
  --etapac-3: #5ED3B0;   /* Em conversa · verde-mar */
  --etapac-4: #E0C341;   /* Qualificado · mostarda */
  --etapac-5: #F2A93B;   /* Visita agendada · âmbar */
  --etapac-6: #86D96B;   /* Visita realizada · grama */

  /* ---------- etiquetas: oito cores para a equipe escolher ----------
   * Fora das de produto e de sinal. Onde o matiz fica perto de um reservado
   * (orquídea perto de carta de crédito, azul-violeta perto de etapa), o papel
   * separa: etiqueta é sempre selo de 18% COM o nome escrito, nunca cor sozinha. */
  --etq-1: #67D8EF;   /* ciano */
  --etq-2: #C9A7F5;   /* púrpura */
  --etq-3: #F28DA8;   /* vinho claro */
  --etq-4: #E0C341;   /* mostarda */
  --etq-5: #86D96B;   /* grama */
  --etq-6: #5ED3B0;   /* verde-mar */
  --etq-7: #E08BE0;   /* orquídea */
  --etq-8: #9AA6F0;   /* azul-violeta */

  /* ---------- produtos: os nomes curtos apontam para os papéis do Bloco E ----------
   * Os componentes continuam escrevendo var(--p-carta); quem decide a cor é o
   * papel (--prod-carta-credito). Assim não há duas verdades sobre a cor de um
   * produto — era o que fazia a carta de crédito ser rosa aqui e magenta lá. */
  --p-carro: var(--prod-agio-carro);
  --p-imovel: var(--prod-agio-imovel);
  --p-giro: var(--prod-capital-giro);
  --p-carta: var(--prod-carta-credito);
  --p-financ: var(--prod-financiamento);

  /* ---------- etapas do funil: a escala de índigo do Bloco E ----------
   * Era uma rampa de cinza, que no Funil competia com o cinza da interface e
   * não dizia nada sobre avanço. Um matiz só, do claro ao forte. */
  --kb-1: var(--etapa-1); --kb-2: var(--etapa-2); --kb-3: var(--etapa-3); --kb-4: var(--etapa-4);
  --kb-5: var(--etapa-5); --kb-6: var(--etapa-6); --kb-7: var(--etapa-6);
  --kb-ganho: var(--sinal-sucesso); --kb-nutri: var(--sinal-neutro); --kb-perdido: var(--sinal-neutro);

  /**
   * AUDITORIA A8-06 / D-5 — AVATAR: COR POR PESSOA, LEGÍVEL.
   *
   * Eram seis cinzas próximos (#3A3A3A a #8A8A8A) com as iniciais em #111:
   * contraste de 1,66 a 3,49 em 600+ ocorrências, e três "Vendedor" no menu
   * ficavam idênticos. Agora são seis matizes distintos, medidos para dar
   * 4,5:1 com o texto do avatar — que passou a ser um token próprio, porque
   * ele muda com o tema.
   */
  --av-1: #1F5FA8; --av-2: #8A2F6B; --av-3: #2F6B4F; --av-4: #8A5A1F; --av-5: #5B3FA8; --av-6: #1F6B6B;
  --av-fg: #F5F5F5;          /* as iniciais */
  --avatar: #3F4A5A;         /* sem usuário: neutro, mas não cinza morto */

  /* ---------- cores da linha do tempo (4.2 · ícone num quadrado colorido) ---------- */
  --ev-criado: #E6E6E6;
  --ev-ligacao: var(--info);
  --ev-etiqueta: #34D399;
  --ev-followup: var(--warning);
  --ev-etapa: #6B7280;

  /* ---------- WhatsApp (o chat continua reconhecível, no escuro) ---------- */
  --wa-bg: #141414;                         /* fundo do chat */
  --wa-mine: color-mix(in srgb, var(--primary) 12%, var(--wa-bg));   /* v8 Bloco 3 — enviada: cor de destaque a 12% */
  --wa-theirs: #262626;                     /* bolha do lead */
  --wa-unread: #25D366;                     /* contador verde de não lidas */
  --qr-bg: #FFFFFF;                         /* QR code só lê em fundo branco */
  --logo: #FFFFFF;                          /* o "M" da Monarca: branco no escuro, preto no claro */

  /* ---------- véus (modal, gaveta, visor) ---------- */
  --overlay: rgba(0, 0, 0, .6);         /* v8 Bloco 3 — fundo de modal, com desfoque de 4px */
  --overlay-soft: rgba(0, 0, 0, .25);
  --overlay-strong: rgba(0, 0, 0, .92);
  --pulse-a: rgba(255, 75, 76, .55);
  --pulse-b: rgba(255, 75, 76, 0);
  /* seta dos <select>: a cor mora aqui, na forma rgb(), para não haver #hex fora deste arquivo */
  --chevron-img: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='rgb(153,153,153)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");

  /* ---------- tipografia (a Clint é pequena e densa) ---------- */
  --font: 'Poppins', 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --fs-title: 16px;   /* título da página, nome no topo da ficha · 500 · lh 30 */
  --fs-body: 12px;    /* texto, menu, botão, input, célula · 400 (500 no ativo) */
  --fs-sm: 11px;      /* valor e linha secundária do card · 500 */
  --fs-micro: 10px;   /* etiqueta, selo, contador */
  --fs-th: 9px;       /* cabeçalho de tabela e rótulo de seção · 600 · caixa alta · 1.35px */
  --fs-kpi: 16px;     /* valor de indicador · 500 */
  --fs-script: 15px;  /* a única exceção grande: o roteiro lido em voz alta · lh 24 */
  --fs-md: 13px;      /* título de seção e de estado vazio · 600 */
  --ls-th: 1.35px;
  --lh-title: 30px;

  /* ---------- forma e espaço ---------- */
  --r-sm: 4px;    /* input, item de menu, dropdown */
  --r-md: 6px;    /* botão, card de lead, card de indicador, segmentado */
  --r-lg: 12px;   /* coluna do kanban, card de opção */
  --r-full: 9999px;
  --h-ctrl: 32px;     /* botão, input, dropdown */
  --h-ctrl-sm: 24px;  /* botão pequeno da tabela */
  --h-seg: 26px;      /* opção do segmentado */
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 20px; --sp-6: 24px; --sp-8: 32px; --sp-12: 48px;
  --pad-btn: 0 14px;
  --pad-input: 0 10px;
  --pad-menu: 8px 12px;
  --pad-cell: 8px 8px 8px 24px;
  --side-w: 250px;
  --side-w-min: 56px;
  --topo-h: 60px;
  --header-h: 48px;
  --toolbar-h: 48px;
  --bnav-h: 56px;
  --anim-barra: .24s cubic-bezier(.2, .8, .2, 1);   /* largura da barra lateral, ida e volta iguais */
  --anim-some: .14s ease;                            /* o que some por opacidade dentro dela */
  --anim-modal: .2s ease;        /* v8 Bloco 3 — modal entra (opacidade + escala .96→1) */
  --anim-modal-sai: .15s ease;   /* e sai mais rápido */

  /* sombra: nenhuma. A separação é borda de 1 px e a diferença de tom. */
  --shadow: none; --shadow-sm: none;
  /* v8 Bloco 3 — sombras medidas na referência: menus/popovers, modais/painéis, gaveta */
  --shadow-lg: 0 12px 32px rgba(0, 0, 0, .6);
  --shadow-pop: 0 8px 16px rgba(0, 0, 0, .64), inset 0 0 1px rgba(209, 213, 219, .3);
  --shadow-drawer: -8px 0 24px rgba(0, 0, 0, .45);

  /* ---------- nomes antigos, apontando para os novos ----------
     O CSS existente nasceu com outra paleta. Em vez de reescrever 900 linhas
     de uma vez, cada nome antigo vira um apelido do token novo; as telas
     ganham a pele nova agora, e os nomes antigos somem conforme cada tela
     passa pelo item 4 da spec. */
  --surface: var(--bg-panel);
  --surface-2: var(--bg-card);
  --border-2: var(--border-subtle);
  --text: var(--fg);
  --text-2: var(--fg-muted);
  --muted: var(--fg-muted);
  --icon: var(--fg-subtle);
  --brand: var(--primary);
  --brand-600: var(--primary-fg);
  --brand-50: var(--primary-subtle);
  --brand-100: var(--primary-muted);
  --side: var(--bg-panel);
  --side-2: var(--bg-card);
  --side-text: var(--fg-muted);
  --ok: var(--success-fg);  --ok-bg: var(--success-bg);
  --warn: var(--warning);   --warn-bg: var(--warning-bg);
  --bad: var(--danger-fg);  --bad-bg: var(--danger-bg);
  --f-agora: var(--f-agora-fg); --f-a: var(--f-a-fg); --f-b: var(--f-b-fg); --f-c: var(--f-c-fg);
  --fs-lg: 14px; --fs-xl: 16px; --fs-2xl: 20px; --fs-3xl: 24px;
  --radius: var(--r-lg); --radius-sm: var(--r-md);
  --fundo: var(--bg);
  --card: var(--bg-panel);
  --linha: var(--border);
  --txt: var(--fg);
}

/* =====================================================================
   TEMA CLARO · a mesma paleta monocromática, invertida. O JS marca
   <html data-theme="light"> antes de pintar (escolha guardada em
   localStorage "crm.tema"; sem escolha, segue o sistema).
   ===================================================================== */
:root[data-theme="light"] {
  color-scheme: light;
  --bg: #F4F4F4;
  --bg-panel: #FFFFFF;
  --bg-card: #F1F1F1;
  --bg-input: #FAFAFA;
  --bg-table-head: #F7F7F7;
  --bg-hover: #ECECEC;
  --border: #E0E0E0;
  --border-subtle: #ECECEC;
  --fg: #1A1A1A;
  --fg-muted: #5F5F5F;
  --fg-subtle: #6E6E6E;   /* A8-20: 4,51:1 sobre o card do claro (era 3,06) */
  --fg-on-primary: #FFFFFF;
  --fg-on-warning: #000000;
  --primary: #111111;
  --primary-hover: #333333;
  --primary-fg: #111111;
  --primary-subtle: rgba(0, 0, 0, .06);
  --primary-muted: rgba(0, 0, 0, .2);
  --tag-bg: #ECECEC;
  --tag-fg: #6B3FB5;
  --success-bg: #DCFCE7;
  --success-fg: #166534;
  --warning-bg: rgba(138, 82, 0, .12);
  --warning: var(--sinal-atencao);
  --warning-fg: #7A4700;
  --danger: #DC2626;
  --danger-bg: rgba(220, 38, 38, .1);
  --danger-fg: #B91C1C;
  --info: #2563EB;
  --count-bg: rgba(0, 0, 0, .08);
  --f-a-bg: rgba(249, 115, 22, .14);  --f-a-fg: #C2410C;
  --f-b-bg: rgba(234, 179, 8, .18);   --f-b-fg: #A16207;
  --f-agora-bg: rgba(220, 38, 38, .12); --f-agora-fg: #B91C1C;
  /* ---------- SPEC v9 · Bloco E — os mesmos papéis, no tema claro ----------
   * Não é a mesma cor: no claro a cor precisa ESCURECER para manter o
   * contraste sobre fundo claro. Os valores saem de scripts/contraste.js. */
  --sinal-urgencia: #C62D22;
  --sinal-atencao: #8A5200;
  --sinal-sucesso: #1F7A4D;
  --sinal-neutro: #5C6168;
  --prod-agio-carro: #1F62C8;
  --prod-agio-imovel: #6B46D6;
  --prod-capital-giro: #0F7F74;
  --prod-carta-credito: #A8288A;
  --prod-financiamento: #4E7D0E;
  --etapa-fg: #5B62B7;
  /* D-7 — as cores por etapa, no claro: escurecem para manter o contraste */
  --etapac-1: #4A57C9;
  --etapac-2: #0C6272;
  --etapac-3: #0E6554;
  --etapac-4: #755600;
  --etapac-5: #8A5200;
  --etapac-6: #35661A;
  --etapa-1: #6F76C9;
  --etapa-2: #656CC0;
  --etapa-3: #5B62B7;
  --etapa-4: #5158AE;
  --etapa-5: #474EA5;
  --etapa-6: #3D449C;
  --etq-1: #0C6272;
  --etq-2: #6B3FB5;
  --etq-3: #A71D42;
  --etq-4: #755600;
  --etq-5: #35661A;
  --etq-6: #0E6554;
  --etq-7: #932893;
  --etq-8: #4B52B5;
  --p-carro: var(--prod-agio-carro);
  --p-imovel: var(--prod-agio-imovel);
  --p-giro: var(--prod-capital-giro);
  --p-carta: var(--prod-carta-credito);
  --p-financ: var(--prod-financiamento);
  --kb-1: var(--etapa-1); --kb-2: var(--etapa-2); --kb-3: var(--etapa-3); --kb-4: var(--etapa-4);
  --kb-5: var(--etapa-5); --kb-6: var(--etapa-6); --kb-7: var(--etapa-6);
  --kb-ganho: var(--sinal-sucesso);
  --av-1: #2563EB; --av-2: #B02A7A; --av-3: #1F7A4D; --av-4: #A35A00; --av-5: #6B3FB5; --av-6: #0E6B6B;
  --av-fg: #FFFFFF;
  --avatar: #6B6B6B;
  --ev-criado: #111111;
  --ev-ligacao: #2563EB;
  --ev-etiqueta: #059669;
  --ev-followup: #EA580C;
  --ev-etapa: #9CA3AF;
  --wa-bg: #EFEFEF;
  --wa-mine: color-mix(in srgb, var(--primary) 12%, var(--wa-bg));
  --wa-theirs: #FFFFFF;
  --logo: #000000;
  --overlay: rgba(0, 0, 0, .4);
  --overlay-soft: rgba(0, 0, 0, .08);
  --overlay-strong: rgba(0, 0, 0, .9);
  --shadow-lg: 0 12px 32px rgba(0, 0, 0, .18);
  --shadow-pop: 0 8px 16px rgba(0, 0, 0, .16), inset 0 0 1px rgba(0, 0, 0, .08);
  --shadow-drawer: -8px 0 24px rgba(0, 0, 0, .14);
  --chevron-img: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='rgb(95,95,95)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
}

/* celular: o texto sobe um ponto e o alvo de toque vai a 40 px; o resto da escala fica */
@media (max-width: 767px) {
  :root { --fs-body: 13px; --fs-sm: 12px; --h-ctrl: 40px; --h-ctrl-sm: 32px; --h-seg: 32px; }
}
