/* =====================================================================
   css/00-tokens.css — A FONTE DE VERDADE DE CORES DO cartonagem2
   =====================================================================
   v2.37.676 — Design tokens. Carregado ANTES de qualquer outro CSS, em
   TODOS os HTML (sistema.html e os 22 painéis).

   COMO LER ESTE ARQUIVO
   ┌ Camada 1 — PRIMITIVAS  (--color-<matiz>-<escala>): só tinta, sem
   │                          significado. NUNCA usar num componente.
   ├ Camada 2 — SEMÂNTICAS  (--bg-card, --text-muted, --status-entregue…):
   │                          nomeadas pelo PAPEL. É o que os componentes usam.
   │                          UI genérica em inglês, negócio em português.
   ├ Tema CLARO            ([data-theme="light"] no <html>): financeiro, RH,
   │                          ponto, conciliação, almoxarifado JPE.
   ├ Impressão              (--print-*): valem em @media print e nos documentos
   │                          gerados (romaneio, laudo, nota, ficha, etiqueta).
   ├ ALIASES legados        (--bg-1, --text-3, --amber…): os 66 nomes que já
   │                          existiam continuam valendo — apontam pra camada 2.
   └ Classes de badge       (.badge.b-<status>): o MESMO badge em todo módulo.

   REGRAS (também no CLAUDE.md)
   • Cor nova = token novo AQUI. Nunca hex/rgb/hsl em componente, style="" ou JS.
   • Status novo de negócio = trio (--status-x, --status-x-bg, --status-x-text)
     + classe .b-x lá embaixo.
   • Transparência: rgba(var(--x-rgb), .35) — nunca rgba(239,68,68,.35).
   • JS lê com cssVar('--nome') (js/00-tokens.js). Canvas/PDF idem.
   • ../cartonagem2-docs/design-tokens/auditar_cores.sh falha se alguém
     escrever cor solta. Rodar antes de commitar.

   POR QUE ISTO EXISTE (05/09/2026)
   O mesmo status tinha 4 paletas (main.css, js/01 _fasePorStatus, js/55
   rodadas, vendedor FASES); "estoque baixo" era âmbar num app e vermelho
   noutro; --amber guardava o AZUL da marca desde o rebrand (por isso
   "reprogramado" e "urgente" tinham fundo azul). 425 cores únicas em 103
   arquivos. Inventário completo em
   ../cartonagem2-docs/design-tokens/INVENTARIO_cores_v2.37.671.md
   ===================================================================== */

:root{
  /* ------------------------------------------------------------------
     CAMADA 1 — PRIMITIVAS (paleta bruta). Escala Tailwind (50 claro → 950
     escuro), que é a que 90% do código já usava. Só valores.
     ------------------------------------------------------------------ */
  --color-white:#ffffff;   --color-white-rgb:255,255,255;
  --color-black:#000000;   --color-black-rgb:0,0,0;

  /* neutros (slate) — superfícies e textos do tema escuro E do claro */
  --color-slate-50:#f8fafc;  --color-slate-100:#f1f5f9; --color-slate-200:#e2e8f0;
  --color-slate-300:#cbd5e1; --color-slate-400:#94a3b8; --color-slate-500:#64748b;
  --color-slate-600:#475569; --color-slate-700:#334155; --color-slate-800:#2d3a52;
  --color-slate-850:#243044; --color-slate-900:#1e293b; --color-slate-920:#1f2a3d;
  --color-slate-950:#0f172a; --color-slate-950-rgb:15,23,42; --color-slate-900-rgb:30,41,59;
  --color-slate-400-rgb:148,163,184;
  --color-slate-975:#0a0e13;   /* v2.37.935 — o quase-preto dos DESENHOS (palete, carga, faca): mais escuro que a 950 */

  /* marca JP (azul) */
  --color-brand-100:#e0f2fe; --color-brand-300:#7dd3fc; --color-brand-400:#33b5e8;
  --color-brand-500:#009fe3; --color-brand-700:#00668e;
  --color-brand-950:#04243a;   /* v2.37.1087 — o texto da aba selecionada do menu lateral (era escrito à mão no main.css) */
  --color-brand-500-rgb:0,159,227; --color-brand-400-rgb:51,181,232; --color-brand-700-rgb:0,102,142;

  /* vermelho */
  --color-red-100:#fee2e2; --color-red-200:#fecaca; --color-red-300:#fca5a5; --color-red-400:#f87171;
  --color-red-500:#ef4444; --color-red-600:#dc2626; --color-red-700:#b91c1c; --color-red-800:#991b1b;
  --color-red-900:#7f1d1d; --color-red-950:#3a0d0d; --color-red-500-rgb:239,68,68; --color-red-600-rgb:220,38,38;
  /* v2.37.855 — companheiros -rgb e a cor da gramatura, pedidos pela conversão da TELA DO ORÇAMENTO.
     Valores IGUAIS aos que a tela já usava: entram pra cor sair do arquivo, não pra mudar de tom. */
  --color-violet-400-rgb:167,139,250;  --violet-light-rgb:var(--color-violet-400-rgb);
  --color-teal-600-rgb:13,148,136;     --teal-dark-rgb:var(--color-teal-600-rgb);
  --gramatura:#639922;                 /* o verde-oliva da gramatura da chapa (cadastro e orçamento) */

  /* âmbar */
  --color-amber-100:#fef3c7; --color-amber-300:#fcd34d; --color-amber-400:#fbbf24; --color-amber-500:#f59e0b;
  --color-amber-600:#d97706; --color-amber-700:#b45309; --color-amber-800:#92400e;
  --color-amber-500-rgb:245,158,11; --color-amber-400-rgb:251,191,36;

  /* laranja */
  --color-orange-100:#ffedd5; --color-orange-300:#fdba74; --color-orange-400:#fb923c; --color-orange-500:#f97316;
  --color-orange-600:#ea580c; --color-orange-700:#c2410c; --color-orange-500-rgb:249,115,22;

  /* esmeralda (sucesso) e verde (carregado/aceito) — dois verdes de propósito */
  --color-emerald-300:#6ee7b7; --color-emerald-400:#34d399; --color-emerald-500:#10b981;
  --color-emerald-600:#059669; --color-emerald-700:#047857; --color-emerald-500-rgb:16,185,129;
  --color-green-100:#dcfce7; --color-green-300:#86efac; --color-green-400:#4ade80; --color-green-500:#22c55e;
  --color-green-600:#16a34a; --color-green-700:#15803d; --color-green-800:#166534; --color-green-500-rgb:34,197,94;

  /* azul (info / em produção) */
  --color-blue-100:#dbeafe; --color-blue-300:#93c5fd; --color-blue-400:#60a5fa; --color-blue-500:#3b82f6;
  --color-blue-600:#2563eb; --color-blue-700:#1d4ed8; --color-blue-900:#1e3a8a; --color-blue-500-rgb:59,130,246;

  /* violeta (bloqueado / mecânica) e roxo (vendedor) */
  --color-violet-100:#ede9fe; --color-violet-300:#c4b5fd; --color-violet-400:#a78bfa; --color-violet-500:#8b5cf6;
  --color-violet-600:#7c3aed; --color-violet-700:#6d28d9; --color-violet-500-rgb:139,92,246;
  --color-purple-300:#d8b4fe; --color-purple-400:#c084fc; --color-purple-500:#a855f7; --color-purple-500-rgb:168,85,247;

  /* teal (pronto p/ carregar, almox JPE) */
  --color-teal-100:#ccfbf1; --color-teal-300:#5eead4; --color-teal-400:#2dd4bf; --color-teal-500:#14b8a6;
  --color-teal-600:#0d9488; --color-teal-700:#0f766e; --color-teal-500-rgb:20,184,166; --color-teal-400-rgb:45,212,191;

  /* cyan (material disponível) */
  --color-cyan-100:#cffafe; --color-cyan-300:#67e8f9; --color-cyan-400:#22d3ee; --color-cyan-500:#06b6d4;
  --color-cyan-600:#0891b2; --color-cyan-700:#0e7490; --color-cyan-500-rgb:6,182,212;

  /* rosa / rose / índigo / lima — só séries de gráfico e categorias */
  --color-pink-400:#f472b6; --color-pink-500:#ec4899; --color-rose-500:#f43f5e;
  --color-indigo-100:#e0e7ff; --color-indigo-500:#6366f1; --color-indigo-800:#3730a3; --color-lime-400:#a3e635;

  /* stone (esperando programação) */
  --color-stone-300:#d6d3d1; --color-stone-400:#a8a29e; --color-stone-500:#78716c; --color-stone-400-rgb:168,162,158;

  /* ------------------------------------------------------------------
     CAMADA 2 — SEMÂNTICAS. Componentes usam SÓ daqui pra baixo.
     ------------------------------------------------------------------ */

  /* Neutros permitidos (branco/preto puros: texto sobre sólido, papel, sombra) */
  --white:var(--color-white);  --white-rgb:var(--color-white-rgb);
  --black:var(--color-black);  --black-rgb:var(--color-black-rgb);

  /* Superfícies (tema escuro) */
  --bg-page:var(--color-slate-950);       /* fundo da página */
  --bg-card:var(--color-slate-900);       /* card, painel, modal, toast */
  --bg-raised:var(--color-slate-850);     /* input, botão ghost, cabeçalho de tabela */
  --bg-raised-2:var(--color-slate-800);   /* hover do elevado, foco do input */
  --bg-modal:var(--bg-card);
  --bg-page-rgb:var(--color-slate-950-rgb);
  --bg-card-rgb:var(--color-slate-900-rgb);
  --gradient-page:linear-gradient(135deg,var(--bg-page) 0%,var(--bg-card) 100%);
  --gradient-sidebar:linear-gradient(180deg,#16202e 0%,var(--bg-page) 100%);

  /* Bordas */
  --line:var(--color-slate-700);
  --line-soft:var(--color-slate-920);
  --line-strong:var(--color-slate-600);

  /* Texto */
  --text:var(--color-slate-100);          /* primário */
  --text-2:var(--color-slate-300);        /* secundário */
  --text-muted:var(--color-slate-400);    /* rótulos, legendas (5,7:1 sobre card) */
  --text-faint:var(--color-slate-500);    /* apagado de propósito: datas, hints */
  --text-on-accent:var(--white);          /* texto sobre fundo sólido de cor */
  --text-on-brand:var(--color-slate-950); /* o .btn-primary do sistema é assim desde sempre */
  --marca-texto:var(--color-slate-950);
  --marca-texto-aba:var(--color-brand-950);   /* v2.37.1087 — texto da aba ativa do menu lateral (js/137 troca junto com a cor) */  /* v2.37.1087 — texto por cima da cor da empresa (js/137-cores troca: escuro ou branco, o que ler melhor) */
  --text-inverse:var(--color-slate-950);
  --link:var(--color-brand-400);

  /* Marca e acento. --accent é o que cada app redefine no seu :root
     (manutenção = laranja, almox JPE = teal) — regra do CLAUDE.md §8. */
  --brand:var(--color-brand-500);
  --brand-light:var(--color-brand-400);
  --brand-lighter:var(--color-brand-300);
  --brand-dark:var(--color-brand-700);
  --brand-rgb:var(--color-brand-500-rgb);
  --brand-light-rgb:var(--color-brand-400-rgb);
  --brand-dark-rgb:var(--color-brand-700-rgb);
  --accent:var(--brand);
  --accent-light:var(--brand-light);
  --accent-dark:var(--brand-dark);
  --accent-rgb:var(--brand-rgb);
  --gradient-brand:linear-gradient(135deg,var(--brand),var(--brand-dark));
  --gradient-brand-light:linear-gradient(135deg,var(--brand),var(--brand-light));
  --gradient-accent:linear-gradient(135deg,var(--accent),var(--accent-dark));

  /* Feedback / intenção — o trio: sólida (borda, ponto, ícone), -bg (fundo
     translúcido do badge), -text (texto do badge). -rgb pra alfas próprios. */
  --success:var(--color-emerald-500);  --success-bg:rgba(16,185,129,.18); --success-text:var(--color-emerald-300);
  --success-strong:var(--color-emerald-600); --success-rgb:var(--color-emerald-500-rgb);
  --danger:var(--color-red-500);       --danger-bg:rgba(239,68,68,.18);   --danger-text:var(--color-red-300);
  --danger-strong:var(--color-red-600); --danger-deep:var(--color-red-700); --danger-rgb:var(--color-red-500-rgb);
  --warning:var(--color-amber-500);    --warning-bg:rgba(245,158,11,.18); --warning-text:var(--color-amber-400);
  --warning-strong:var(--color-amber-700); --warning-rgb:var(--color-amber-500-rgb);
  --info:var(--color-blue-500);        --info-bg:rgba(59,130,246,.18);    --info-text:var(--color-blue-300);
  --info-strong:var(--color-blue-600); --info-rgb:var(--color-blue-500-rgb);
  --neutral:var(--color-slate-400);    --neutral-bg:rgba(148,163,184,.15); --neutral-text:var(--color-slate-300);
  --neutral-rgb:var(--color-slate-400-rgb);

  /* Matizes de categoria (tipo de manutenção, série, selo) — mesmo trio */
  --orange:var(--color-orange-500);    --orange-bg:rgba(249,115,22,.18);  --orange-text:var(--color-orange-300);
  --orange-rgb:var(--color-orange-500-rgb);
  --violet:var(--color-violet-500);    --violet-bg:rgba(139,92,246,.18);  --violet-text:var(--color-violet-300);
  --violet-rgb:var(--color-violet-500-rgb);
  --purple:var(--color-purple-500);    --purple-bg:rgba(168,85,247,.18);  --purple-text:var(--color-purple-400);
  --purple-rgb:var(--color-purple-500-rgb);
  --teal:var(--color-teal-500);        --teal-bg:rgba(20,184,166,.18);    --teal-text:var(--color-teal-300);
  --teal-rgb:var(--color-teal-500-rgb); --teal-light:var(--color-teal-400); --teal-dark:var(--color-teal-600);
  --cyan:var(--color-cyan-500);        --cyan-bg:rgba(6,182,212,.2);      --cyan-text:var(--color-cyan-300);
  --cyan-rgb:var(--color-cyan-500-rgb);
  --green:var(--color-green-500);      --green-bg:rgba(34,197,94,.18);    --green-text:var(--color-green-300);
  --green-rgb:var(--color-green-500-rgb);
  --pink:var(--color-pink-500);        --pink-text:var(--color-pink-400);
  --stone:var(--color-stone-400);      --stone-bg:rgba(168,162,158,.18);  --stone-text:var(--color-stone-300);
  --stone-rgb:var(--color-stone-400-rgb);
  --whatsapp:var(--color-green-500);   /* botão do WhatsApp (era #25d366) */
  /* tons extras das mesmas famílias, que o código já usava (sólido mais forte / texto mais claro) */
  --danger-dark:var(--color-red-900);          --danger-strong-rgb:var(--color-red-600-rgb);
  --warning-text-rgb:var(--color-amber-400-rgb);
  --orange-strong:var(--color-orange-600);     --orange-light:var(--color-orange-400);
  --success-light:var(--color-emerald-400);
  --green-light:var(--color-green-400);        --green-strong:var(--color-green-600);
  --violet-strong:var(--color-violet-600);     --violet-light:var(--color-violet-400);
  --cyan-strong:var(--color-cyan-600);
  --teal-light-rgb:var(--color-teal-400-rgb);
  --rose:var(--color-rose-500);                --lime:var(--color-lime-400);
  /* cor do PAPELÃO — o material desenhado na caixa 3D e nos cards de papel (domínio, não UI) */
  --papelao:#c9a05a;  --papelao-dark:#a97e50;  --papelao-light:#efd9b0;  --papelao-rgb:201,160,90;
  /* v2.37.935 — o FUNDO dos desenhos técnicos (as 3 vistas do palete, a carga, a faca): o mesmo tom que o js/19
     usa na borda entre as caixas, pra junta aparecer como fundo. Domínio, não UI — não trocar por --bg-page. */
  --desenho-fundo:var(--color-slate-975);
  /* v2.37.972 — 🧱 o PAPELÃO do 3D do Montador (js/118): capa kraft, miolo da onda, borda e o papel branco.
     Cor FÍSICA do material (a mesma que o js/70 desenha à mão em #cfa66d) — não muda com o tema. */
  --color-kraft-100:#f3f1ea; --color-kraft-300:#d9c39a; --color-kraft-500:#cfa66d; --color-kraft-700:#8f6e3f;
  --papelao-capa:var(--color-kraft-500); --papelao-miolo:var(--color-kraft-700); --papelao-borda:var(--color-kraft-300); --papelao-branco:var(--color-kraft-100);

  /* Ações (botões) */
  --action-primary:var(--gradient-accent);
  --action-primary-text:var(--text-on-brand);
  --action-primary-shadow:rgba(var(--accent-rgb),.3);
  --action-primary-shadow-hover:rgba(var(--accent-rgb),.45);
  --action-ghost-bg:var(--bg-raised);      --action-ghost-text:var(--text-2);    --action-ghost-line:var(--line);
  --action-ghost-hover:var(--bg-raised-2);
  --action-danger-bg:rgba(239,68,68,.15);  --action-danger-text:var(--danger);   --action-danger-line:rgba(239,68,68,.3);
  --action-success-bg:rgba(16,185,129,.15);--action-success-text:var(--color-green-500); --action-success-line:rgba(16,185,129,.3);
  --action-info-bg:rgba(59,130,246,.15);   --action-info-text:var(--info-text);  --action-info-line:rgba(59,130,246,.3);
  --action-disabled-text:var(--text-faint);
  --focus-ring:var(--accent);

  /* Tabelas */
  --table-head-bg:var(--bg-raised);
  --table-head-text:var(--text-muted);
  --table-zebra:rgba(255,255,255,.02);
  --table-row-hover:rgba(255,255,255,.04);
  --table-row-selected:rgba(var(--accent-rgb),.12);
  --table-cell-edited:var(--warning-bg);
  --table-line:var(--line);

  /* Formulários */
  --input-bg:var(--bg-raised);
  --input-bg-focus:var(--bg-raised-2);
  --input-border:var(--line);
  --input-border-focus:var(--accent);
  --input-border-error:var(--danger);
  --input-placeholder:var(--text-faint);
  --input-readonly-text:var(--text-muted);

  /* Toast */
  --toast-bg:var(--bg-card);
  --toast-line:var(--line);
  --toast-ok:var(--success);
  --toast-err:var(--danger);
  --toast-err-bg:var(--color-red-950);
  --toast-err-text:var(--color-red-100);
  --toast-err-line:var(--color-red-900);

  /* Sombras */
  --shadow-sm:0 4px 14px rgba(0,0,0,.25);
  --shadow-md:0 10px 30px rgba(0,0,0,.35);
  --shadow-lg:0 20px 55px rgba(0,0,0,.5);

  /* ------------------------------------------------------------------
     STATUS DE NEGÓCIO (português). Um trio por status, igual em TODO módulo.
     ------------------------------------------------------------------ */

  /* Pedido (statusOp) */
  /* ⚠️ os status LARANJA apontam pra primitiva, não pro --orange: o main.css e o operador ainda
     sobrescrevem --orange com o azul-escuro fóssil (--brand-dark), e o status não pode herdar isso. */
  --status-esperando:var(--stone);                 --status-esperando-bg:var(--stone-bg);       --status-esperando-text:var(--stone-text);
  --status-programado:var(--neutral);              --status-programado-bg:var(--neutral-bg);    --status-programado-text:var(--neutral-text);
  --status-reprogramado:var(--color-orange-500);             --status-reprogramado-bg:var(--orange-bg);   --status-reprogramado-text:var(--orange-text);
  --status-bloqueado:var(--violet);                --status-bloqueado-bg:var(--violet-bg);      --status-bloqueado-text:var(--violet-text);
  --status-material:var(--cyan);                   --status-material-bg:var(--cyan-bg);         --status-material-text:var(--cyan-text);
  --status-em-producao:var(--info);                --status-em-producao-bg:var(--info-bg);      --status-em-producao-text:var(--info-text);
  --status-pronto:var(--warning);                  --status-pronto-bg:var(--warning-bg);        --status-pronto-text:var(--warning-text);
  --status-pronto-carregar:var(--teal);            --status-pronto-carregar-bg:var(--teal-bg);  --status-pronto-carregar-text:var(--teal-text);
  --status-carregado:var(--green);                 --status-carregado-bg:var(--green-bg);       --status-carregado-text:var(--green-text);
  --status-entregue:var(--success);                --status-entregue-bg:var(--success-bg);      --status-entregue-text:var(--success-text);
  --status-atrasado:var(--danger);                 --status-atrasado-bg:var(--danger-bg);       --status-atrasado-text:var(--danger-text);
  --status-urgente:var(--warning);                 --status-urgente-bg:rgba(245,158,11,.2);     --status-urgente-text:var(--warning-text);
  --status-parcial:var(--warning);                 --status-parcial-bg:rgba(245,158,11,.25);    --status-parcial-text:var(--warning-text);
  --status-cancelado:var(--danger);                --status-cancelado-bg:var(--danger-bg);      --status-cancelado-text:var(--danger-text);
  --status-pausado:var(--color-orange-500);                  --status-pausado-bg:var(--orange-bg);        --status-pausado-text:var(--orange-text);
  /* borda do <select> de status (35% da sólida) */
  --status-esperando-line:rgba(168,162,158,.35);   --status-programado-line:rgba(148,163,184,.3);
  --status-reprogramado-line:rgba(249,115,22,.35); --status-bloqueado-line:rgba(139,92,246,.35);
  --status-material-line:rgba(6,182,212,.4);       --status-em-producao-line:rgba(59,130,246,.35);
  --status-pronto-line:rgba(245,158,11,.4);        --status-pronto-carregar-line:rgba(20,184,166,.35);
  --status-carregado-line:rgba(34,197,94,.4);      --status-entregue-line:rgba(16,185,129,.35);
  /* Cadastro (caixa, cliente, chapa, máquina, operador) */
  --status-ativo:var(--success);                   --status-ativo-bg:var(--success-bg);         --status-ativo-text:var(--success-text);
  --status-inativo:var(--danger);                  --status-inativo-bg:rgba(239,68,68,.15);     --status-inativo-text:var(--danger-text);

  /* Estoque (chapas, caixas no PA, almoxarifados, papel) */
  --estoque-ok:var(--success);       --estoque-ok-bg:var(--success-bg);       --estoque-ok-text:var(--success-text);
  --estoque-baixo:var(--warning);    --estoque-baixo-bg:var(--warning-bg);    --estoque-baixo-text:var(--warning-text);
  --estoque-critico:var(--danger);   --estoque-critico-bg:var(--danger-bg);   --estoque-critico-text:var(--danger-text);
  --estoque-zerado:var(--danger);    --estoque-zerado-bg:var(--danger-bg);    --estoque-zerado-text:var(--danger-text);

  /* Lançamentos / movimentos de estoque */
  --lanc-entrada:var(--success);     --lanc-entrada-bg:var(--success-bg);     --lanc-entrada-text:var(--success-text);
  --lanc-saida:var(--color-orange-500);        --lanc-saida-bg:var(--orange-bg);        --lanc-saida-text:var(--orange-text);
  --lanc-ajuste:var(--warning);      --lanc-ajuste-bg:var(--warning-bg);      --lanc-ajuste-text:var(--warning-text);
  --lanc-estorno:var(--neutral);     --lanc-estorno-bg:var(--neutral-bg);     --lanc-estorno-text:var(--neutral-text);
  /* Financeiro (dinheiro entrando/saindo — separado do estoque de propósito) */
  --fin-receita:var(--success);      --fin-receita-text:var(--success-text);
  --fin-despesa:var(--danger);       --fin-despesa-text:var(--danger-text);

  /* Orçamento */
  --orc-pendente:var(--color-orange-500);             --orc-pendente-bg:var(--orange-bg);       --orc-pendente-text:var(--orange-text);
  --orc-aguardando-aceite:var(--warning);   --orc-aguardando-aceite-bg:var(--warning-bg); --orc-aguardando-aceite-text:var(--warning-text);
  --orc-aceito:var(--green);                --orc-aceito-bg:var(--green-bg);          --orc-aceito-text:var(--green-text);
  --orc-reprovado:var(--danger);            --orc-reprovado-bg:var(--danger-bg);      --orc-reprovado-text:var(--danger-text);
  --orc-convertido:var(--brand-light);      --orc-convertido-bg:rgba(51,181,232,.16); --orc-convertido-text:var(--brand-lighter);
  --orc-enviado:var(--info);                --orc-enviado-bg:var(--info-bg);          --orc-enviado-text:var(--info-text);

  /* Manutenção */
  --prio-urgente:var(--danger);      --prio-urgente-bg:var(--danger-bg);      --prio-urgente-text:var(--danger-text);
  --prio-normal:var(--warning);      --prio-normal-bg:var(--warning-bg);      --prio-normal-text:var(--warning-text);
  --prio-baixa:var(--success);       --prio-baixa-bg:var(--success-bg);       --prio-baixa-text:var(--success-text);
  --manut-eletrica:var(--info);      --manut-eletrica-bg:var(--info-bg);      --manut-eletrica-text:var(--info-text);
  --manut-mecanica:var(--violet);    --manut-mecanica-bg:var(--violet-bg);    --manut-mecanica-text:var(--violet-text);
  --manut-aberto:var(--warning);     --manut-aberto-bg:var(--warning-bg);     --manut-aberto-text:var(--warning-text);
  --manut-andamento:var(--brand-light); --manut-andamento-bg:rgba(51,181,232,.16); --manut-andamento-text:var(--brand-lighter);
  --manut-resolvido:var(--green);    --manut-resolvido-bg:var(--green-bg);    --manut-resolvido-text:var(--green-text);
  --manut-preventiva:var(--neutral); --manut-preventiva-bg:var(--neutral-bg); --manut-preventiva-text:var(--neutral-text);

  /* Compras (solicitação → OC) */
  --compra-solicitada:var(--warning); --compra-solicitada-bg:var(--warning-bg); --compra-solicitada-text:var(--warning-text);
  --compra-revisao:var(--color-orange-500);     --compra-revisao-bg:var(--orange-bg);     --compra-revisao-text:var(--color-orange-400);
  --compra-comprada:var(--info);      --compra-comprada-bg:var(--info-bg);      --compra-comprada-text:var(--info-text);
  --compra-recebida:var(--green);     --compra-recebida-bg:var(--green-bg);     --compra-recebida-text:var(--green-text);
  --compra-cancelada:var(--danger);   --compra-cancelada-bg:var(--danger-bg);   --compra-cancelada-text:var(--danger-text);

  /* Bobinas de papel */
  --bobina-disponivel:var(--success); --bobina-disponivel-bg:var(--success-bg); --bobina-disponivel-text:var(--color-green-400);
  --bobina-em-uso:var(--warning);     --bobina-em-uso-bg:var(--warning-bg);     --bobina-em-uso-text:var(--warning-text);
  --bobina-toco:var(--danger);        --bobina-toco-bg:var(--danger-bg);        --bobina-toco-text:var(--danger-text);
  --bobina-consumida:var(--neutral);  --bobina-consumida-bg:var(--neutral-bg);  --bobina-consumida-text:var(--text-muted);

  /* Laudo de qualidade */
  --laudo-aprovado:var(--success);    --laudo-aprovado-bg:var(--success-bg);    --laudo-aprovado-text:var(--success-text);
  --laudo-reprovado:var(--danger);    --laudo-reprovado-bg:var(--danger-bg);    --laudo-reprovado-text:var(--danger-text);

  /* Gráficos — UMA paleta de séries (era 8). Série N = mesma posição de antes. */
  --chart-1:var(--color-brand-500);  --chart-2:var(--color-blue-500);   --chart-3:var(--color-emerald-500);
  --chart-4:var(--color-violet-500); --chart-5:var(--color-pink-500);   --chart-6:var(--color-teal-500);
  --chart-7:var(--color-orange-500); --chart-8:var(--color-cyan-500);   --chart-9:var(--color-rose-500);
  --chart-10:var(--color-amber-500);
  --chart-grid:var(--line);
  --chart-axis:var(--text-muted);
  --chart-label:var(--text-faint);

  /* Impressão / PDF — papel branco, sempre. Valem dentro de @media print e
     nos documentos gerados em janela nova (o js/00-tokens.js injeta este
     arquivo lá). Fixos: NÃO mudam com o tema. */
  --print-bg:#ffffff;
  --print-text:#0f172a;
  --print-text-2:#1e293b;
  --print-muted:#475569;
  --print-faint:#64748b;     /* era #777/#888/#999 — agora passa no AA (4,8:1) */
  --print-line:#cbd5e1;
  --print-line-soft:#e2e8f0;
  --print-head-bg:#f1f5f9;
  --print-zebra:#f8fafc;
  --print-band-bg:#1e293b;   /* faixa escura de título de grupo */
  --print-band-text:#ffffff;
  --print-brand:#009fe3;
  --print-brand-dark:#00668e;
  --print-success:#16a34a;   --print-success-bg:#dcfce7; --print-success-text:#15803d;
  --print-danger:#dc2626;    --print-danger-bg:#fee2e2;  --print-danger-text:#991b1b;
  --print-warning:#b45309;   --print-warning-bg:#fef3c7; --print-warning-text:#92400e;
  --print-info:#2563eb;      --print-info-bg:#dbeafe;    --print-info-text:#1d4ed8;

  /* ------------------------------------------------------------------
     ALIASES LEGADOS — os nomes que o código já usava (9.233 var() em 22
     :root). Continuam valendo pra sempre; apontam pra camada semântica.
     Código NOVO usa os nomes de cima.
     ------------------------------------------------------------------ */
  --bg-0:var(--bg-page);  --bg-1:var(--bg-card);  --bg-2:var(--bg-raised);  --bg-3:var(--bg-raised-2);
  --text-1:var(--text);   --text-3:var(--text-muted);  --text-4:var(--text-faint);
  /* ⚠️ --amber, --amber-2 e --orange guardavam AZUIS desde o rebrand. Os nomes
     mentem; o valor é o que sempre foi (marca). Não usar em código novo. */
  --amber:var(--brand);   --amber-2:var(--brand-light);  --amber-1:var(--brand);
  --red:var(--danger);    --red-2:var(--danger-strong);
  --green-2:var(--color-green-500);
  --blue:var(--info);     --blue-2:var(--brand-light);
  --azul:var(--brand);    --azul-2:var(--brand-light);   --azul-esc:var(--brand-dark);  --azul-d:var(--brand-dark);
  --laranja:var(--orange);  --laranja-2:var(--color-orange-400);
  --ciano:var(--cyan);    --yellow:var(--warning);  --amarelo:var(--warning);
  --vermelho:var(--danger); --verde:var(--success);   --verde2:var(--color-green-500);
  --teal-2:var(--teal-light); --teal-l:var(--teal-light); --teal-d:var(--teal-dark);
  --purple-2:var(--color-purple-400);
  --card:var(--bg-card);  --fundo:var(--bg-page);  --linha:var(--line);  --borda:var(--line);  --border:var(--line);
  --txt:var(--text);      --txt2:var(--text-muted); --txt3:var(--text-faint);
  --tx:var(--text);       --tx2:var(--text-muted);  --bord:var(--line);  --bg1:var(--bg-page);  --bg2:var(--bg-card);
  --cinza:var(--text-faint); --ambar:var(--warning-strong); --alerta:var(--warning-strong); --erro:var(--danger-deep);
  --shadow:var(--shadow-md);
}

/* =====================================================================
   TEMA CLARO — <html data-theme="light">
   Financeiro (conciliação, DRE, RH, ponto) e almoxarifado JPE. Só a camada
   semântica muda; os status ganham fundo claro e texto escuro (AA ≥ 4,5:1).
   ===================================================================== */
:root[data-theme="light"]{
  --bg-page:var(--color-slate-100);
  --bg-card:var(--color-white);
  --bg-raised:var(--color-slate-50);
  --bg-raised-2:var(--color-slate-200);
  --bg-page-rgb:241,245,249;
  --bg-card-rgb:255,255,255;
  --gradient-page:var(--bg-page);
  --line:var(--color-slate-200);
  --line-soft:var(--color-slate-100);
  --line-strong:var(--color-slate-300);
  --text:var(--color-slate-950);
  --text-2:var(--color-slate-900);
  --text-muted:var(--color-slate-600);
  --text-faint:var(--color-slate-500);
  --text-on-brand:var(--white);
  --text-inverse:var(--color-slate-100);
  --link:var(--brand-dark);
  --success:var(--color-green-600);  --success-bg:var(--color-green-100);  --success-text:var(--color-green-700);
  --danger:var(--color-red-600);     --danger-bg:var(--color-red-100);     --danger-text:var(--color-red-700);
  --warning:var(--color-amber-700);  --warning-bg:var(--color-amber-100);  --warning-text:var(--color-amber-800);
  --info:var(--color-blue-600);      --info-bg:var(--color-blue-100);      --info-text:var(--color-blue-700);
  --neutral:var(--color-slate-500);  --neutral-bg:var(--color-slate-200);  --neutral-text:var(--color-slate-600);
  --orange:var(--color-orange-600);  --orange-bg:var(--color-orange-100);  --orange-text:var(--color-orange-700);
  --violet:var(--color-violet-600);  --violet-bg:var(--color-violet-100);  --violet-text:var(--color-violet-700);
  --teal:var(--color-teal-600);      --teal-bg:var(--color-teal-100);      --teal-text:var(--color-teal-700);
  --cyan:var(--color-cyan-600);      --cyan-bg:var(--color-cyan-100);      --cyan-text:var(--color-cyan-700);
  --green:var(--color-green-600);    --green-bg:var(--color-green-100);    --green-text:var(--color-green-700);
  --stone:var(--color-stone-500);    --stone-bg:var(--color-slate-200);    --stone-text:var(--color-stone-500);
  --brand-lighter:var(--color-brand-700);
  --action-ghost-bg:var(--color-white);
  --table-zebra:rgba(0,0,0,.02);
  --table-row-hover:rgba(0,0,0,.04);
  --toast-bg:var(--color-slate-950);
  --toast-line:var(--color-slate-950);
  --shadow-sm:0 4px 14px rgba(0,0,0,.08);
  --shadow-md:0 10px 30px rgba(0,0,0,.12);
  --shadow-lg:0 20px 55px rgba(0,0,0,.18);
  --cinza:var(--text-faint);
}

/* =====================================================================
   IMPRESSÃO — no papel os status viram tarja clara + texto escuro (é o
   td.p-status.* que o main.css já tinha). O mesmo token, outro valor.
   ===================================================================== */
@media print{
  :root{
    --status-esperando-bg:var(--color-slate-100);   --status-esperando-text:var(--color-stone-500);
    --status-programado-bg:transparent;            --status-programado-text:var(--print-muted);
    --status-reprogramado-bg:var(--color-orange-100);--status-reprogramado-text:var(--color-orange-700);
    --status-bloqueado-bg:var(--color-violet-100);  --status-bloqueado-text:var(--color-violet-700);
    --status-material-bg:var(--color-cyan-100);     --status-material-text:var(--color-cyan-700);
    --status-em-producao-bg:var(--color-blue-100);  --status-em-producao-text:var(--color-blue-700);
    --status-pronto-bg:var(--color-amber-100);      --status-pronto-text:var(--color-amber-800);
    --status-pronto-carregar-bg:var(--color-teal-100);--status-pronto-carregar-text:var(--color-teal-700);
    --status-carregado-bg:var(--color-green-100);   --status-carregado-text:var(--color-green-700);
    --status-entregue-bg:var(--color-green-100);    --status-entregue-text:var(--color-green-700);
    --status-atrasado-bg:var(--color-red-100);      --status-atrasado-text:var(--color-red-800);
    --status-urgente-bg:var(--color-amber-100);     --status-urgente-text:var(--color-amber-800);
    --status-cancelado-bg:var(--color-red-100);     --status-cancelado-text:var(--color-red-800);
    --success-bg:var(--color-green-100);  --success-text:var(--color-green-700);
    --danger-bg:var(--color-red-100);     --danger-text:var(--color-red-800);
    --warning-bg:var(--color-amber-100);  --warning-text:var(--color-amber-800);
    --info-bg:var(--color-blue-100);      --info-text:var(--color-blue-700);
  }
}

/* =====================================================================
   CLASSES DE BADGE — o MESMO badge em todos os módulos.
   Uso: <span class="badge b-entregue">Entregue</span>
   Regra de acessibilidade: cor nunca é o único indicador — o TEXTO do badge
   já diz o status; ícone/emoji é bem-vindo.
   ===================================================================== */
.badge{padding:3px 8px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;white-space:nowrap;display:inline-block}
.badge.badge-lg{font-size:12px;padding:4px 10px;border-radius:6px}
/* Pedido */
.b-esperando_programacao,.b-esperando{background:var(--status-esperando-bg);color:var(--status-esperando-text)}
.b-programado{background:var(--status-programado-bg);color:var(--status-programado-text)}
.b-reprogramado{background:var(--status-reprogramado-bg);color:var(--status-reprogramado-text)}
.b-bloqueado_financeiro,.b-bloqueado{background:var(--status-bloqueado-bg);color:var(--status-bloqueado-text)}
.b-material_disponivel,.b-material{background:var(--status-material-bg);color:var(--status-material-text)}
.b-em_producao{background:var(--status-em-producao-bg);color:var(--status-em-producao-text)}
.b-pronto{background:var(--status-pronto-bg);color:var(--status-pronto-text)}
.b-pronto_carregar{background:var(--status-pronto-carregar-bg);color:var(--status-pronto-carregar-text)}
.b-carregado{background:var(--status-carregado-bg);color:var(--status-carregado-text)}
.b-entregue{background:var(--status-entregue-bg);color:var(--status-entregue-text)}
.b-atrasado{background:var(--status-atrasado-bg);color:var(--status-atrasado-text)}
.b-urgente{background:var(--status-urgente-bg);color:var(--status-urgente-text)}
.b-parcial{background:var(--status-parcial-bg);color:var(--status-parcial-text)}
.b-cancelado{background:var(--status-cancelado-bg);color:var(--status-cancelado-text)}
.b-pausado{background:var(--status-pausado-bg);color:var(--status-pausado-text)}
.b-ativo{background:var(--status-ativo-bg);color:var(--status-ativo-text)}
.b-inativo{background:var(--status-inativo-bg);color:var(--status-inativo-text)}
/* Estoque */
.b-estoque-ok{background:var(--estoque-ok-bg);color:var(--estoque-ok-text)}
.b-estoque-baixo{background:var(--estoque-baixo-bg);color:var(--estoque-baixo-text)}
.b-estoque-critico{background:var(--estoque-critico-bg);color:var(--estoque-critico-text)}
.b-estoque-zerado{background:var(--estoque-zerado-bg);color:var(--estoque-zerado-text)}
/* Lançamentos */
.b-entrada{background:var(--lanc-entrada-bg);color:var(--lanc-entrada-text)}
.b-saida{background:var(--lanc-saida-bg);color:var(--lanc-saida-text)}
.b-ajuste{background:var(--lanc-ajuste-bg);color:var(--lanc-ajuste-text)}
.b-estorno{background:var(--lanc-estorno-bg);color:var(--lanc-estorno-text)}
/* Orçamento */
.b-orc-pendente{background:var(--orc-pendente-bg);color:var(--orc-pendente-text)}
.b-orc-aguardando{background:var(--orc-aguardando-aceite-bg);color:var(--orc-aguardando-aceite-text)}
.b-orc-aceito{background:var(--orc-aceito-bg);color:var(--orc-aceito-text)}
.b-orc-reprovado{background:var(--orc-reprovado-bg);color:var(--orc-reprovado-text)}
.b-orc-convertido{background:var(--orc-convertido-bg);color:var(--orc-convertido-text)}
.b-orc-enviado{background:var(--orc-enviado-bg);color:var(--orc-enviado-text)}
/* Manutenção / compras / bobinas / laudo */
.b-prio-urgente,.b-prio-alta{background:var(--prio-urgente-bg);color:var(--prio-urgente-text)}
.b-prio-normal,.b-prio-media{background:var(--prio-normal-bg);color:var(--prio-normal-text)}
.b-prio-baixa{background:var(--prio-baixa-bg);color:var(--prio-baixa-text)}
.b-eletrica{background:var(--manut-eletrica-bg);color:var(--manut-eletrica-text)}
.b-mecanica{background:var(--manut-mecanica-bg);color:var(--manut-mecanica-text)}
.b-andamento{background:var(--manut-andamento-bg);color:var(--manut-andamento-text)}
.b-resolvido{background:var(--manut-resolvido-bg);color:var(--manut-resolvido-text)}
.b-solicitada{background:var(--compra-solicitada-bg);color:var(--compra-solicitada-text)}
.b-comprada{background:var(--compra-comprada-bg);color:var(--compra-comprada-text)}
.b-recebida{background:var(--compra-recebida-bg);color:var(--compra-recebida-text)}
.b-disponivel{background:var(--bobina-disponivel-bg);color:var(--bobina-disponivel-text)}
.b-em_uso{background:var(--bobina-em-uso-bg);color:var(--bobina-em-uso-text)}
.b-toco{background:var(--bobina-toco-bg);color:var(--bobina-toco-text)}
.b-consumida{background:var(--bobina-consumida-bg);color:var(--bobina-consumida-text)}
.b-aprovado{background:var(--laudo-aprovado-bg);color:var(--laudo-aprovado-text)}
.b-reprovado{background:var(--laudo-reprovado-bg);color:var(--laudo-reprovado-text)}
/* Genéricos */
.b-ok,.b-sucesso{background:var(--success-bg);color:var(--success-text)}
.b-erro{background:var(--danger-bg);color:var(--danger-text)}
.b-aviso{background:var(--warning-bg);color:var(--warning-text)}
.b-info{background:var(--info-bg);color:var(--info-text)}
.b-neutro{background:var(--neutral-bg);color:var(--neutral-text)}

/* Impressão: badge continua legível em preto e branco (borda + texto, não só cor) */
@media print{
  .badge{border:1px solid var(--print-line);background:var(--print-head-bg) !important;color:var(--print-text) !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* v2.37.926 — 🩹 sentinela da CURA DO BOOT (sistema.html): a ÚLTIMA regra desta folha. Se ela não chegar, a folha veio pela metade e o sistema refaz o download sozinho. NÃO mover daqui. */
:root{--jp-css-tokens-fim:ok}
