    /* ── CADASTROS / MATRIZ / CONFIRMAR / NOVA HOMOLOGAÇÃO ───────────── */
    .icon-btn {
      display: inline-flex; align-items: center; justify-content: center;
      width: 32px; height: 32px; border-radius: 6px; border: 1px solid transparent;
      background: transparent; color: var(--text-dim); cursor: pointer; transition: all .15s ease;
    }
    .icon-btn:hover { background: var(--surface-2); color: var(--text); }
    .icon-btn:active { transform: scale(0.95); }
    .icon-btn svg { width: 18px; height: 18px; }

    .icon-btn-sm {
      display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 6px;
      border: none; background: transparent; color: var(--text-mut); cursor: pointer; margin-right: 4px;
      transition: background .12s, color .12s;
    }
    .icon-btn-sm:hover { background: var(--surface-3); color: var(--text); }
    .icon-btn-sm.danger:hover { color: var(--danger); background: var(--danger-bg); }
    .icon-btn-sm svg { width: 16px; height: 16px; }

    .subtabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 16px; }
    .subtab {
      display: inline-flex; align-items: center; gap: 7px;
      padding: 6px 13px; border-radius: 999px; font-size: var(--fs-xs); font-weight: 600;
      border: 1px solid var(--border); background: var(--surface); color: var(--text-dim); cursor: pointer;
    }
    .subtab:hover { background: var(--surface-2); }
    .subtab.active { background: var(--accent); border-color: var(--accent); color: #fff; }
    /* Filtros do status da aprovação (Matriz): a cor do status fica só na
       bolinha — a mesma do selo da lista —, e o botão segue a regra de
       interação como os outros (roxo quando ativo). */
    .subtabs-sep { width: 1px; align-self: stretch; background: var(--border); margin: 2px 4px; }
    .subtab.st-proc::before, .subtab.st-analise::before, .subtab.st-aprovado::before {
      content: ''; width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0;
    }
    .subtab.st-proc::before     { background: var(--info-fill); }
    .subtab.st-analise::before  { background: var(--violet-fill); }
    .subtab.st-aprovado::before { background: var(--ok-fill); }
    .subtab.st-proc.active::before,
    .subtab.st-analise.active::before,
    .subtab.st-aprovado.active::before { background: rgba(255,255,255,.85); }

    .modal-overlay {
      position: fixed; inset: 0; background: rgba(15,23,42,.5); display: none;
      align-items: center; justify-content: center; z-index: 100; padding: 20px;
    }
    .modal-overlay.open { display: flex; }
    .modal-box {
      background: var(--surface); border-radius: 12px; width: 100%; max-width: 480px;
      max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 50px rgba(15,23,42,.25);
    }
    .modal-box .modal-head { padding: 16px 20px; border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center; }
    .modal-box .modal-head h3 { font-size: var(--fs-lg); }
    .modal-box .modal-body { padding: 18px 20px; }
    .modal-box .modal-foot { padding: 14px 20px; border-top: 1px solid var(--border); display: flex; gap: 10px; justify-content: flex-end; }
    .modal-box .modal-foot .btn { width: auto; padding: 9px 18px; }

    .confirmar-card {
      display: flex; justify-content: space-between; align-items: center; gap: 14px;
      padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius);
      background: var(--surface); margin-bottom: 10px; flex-wrap: wrap;
    }
    .confirmar-card .info .nm { font-weight: 600; font-size: var(--fs-md); }
    .confirmar-card .actions { display: flex; gap: 8px; flex-wrap: wrap; }
    .confirmar-card .actions .btn { width: auto; padding: 8px 14px; font-size: var(--fs-xs); }

    @keyframes fade  { from { opacity: 0; transform: translateY(4px); } }
    @keyframes selIn { from { opacity: 0; transform: translateY(-4px); } }
    @keyframes pulso { 50% { opacity: .35; } }

    /* ── Matriz · Legado: a lista de todas as empresas (aba-matriz-lista.js) ─────────────────── */
    .ml-barra { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
    .ml-busca { width: 300px; }
    .ml-filtros { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
    .ml-chip { border: 1px solid var(--border); background: var(--surface); color: var(--text-dim); font: inherit; font-size: var(--fs-xs); font-weight: 600;
      padding: 5px 10px; border-radius: 999px; cursor: pointer; transition: background .2s, border-color .2s, color .2s; }
    .ml-chip .n { margin-left: 2px; font-weight: 500; color: var(--text-mut); }
    .ml-chip:hover { border-color: var(--accent-border); color: var(--text); }
    .ml-chip.on { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-strong); }
    .ml-chip.on .n { color: var(--accent-strong); }
    .ml-conta { margin-left: auto; font-size: var(--fs-xs); color: var(--text-mut); }
    .ml-recarregar, .ml-exportar { width: auto; }
    .ml-recarregar { padding: 6px 9px; }
    .ml-card { padding: 0; overflow: hidden; }
    .ml-tabela { min-height: 220px; overflow: auto; }        /* a altura máxima vem do JS (ajustarAltura): preenche o que sobra da tela */
    .ml-tbl th, .ml-tbl td { white-space: nowrap; }
    .ml-tbl th { padding: 8px 7px; }
    .ml-tbl td { padding: 6px 7px; }                       /* linhas compactas: cabem mais empresas na tela */
    /* células de texto longo cortam com reticências (o texto inteiro está no title): assim toda linha tem a mesma altura, compacta */
    .ml-tbl td.ml-c-etapa, .ml-tbl td.ml-c-material, .ml-tbl td.ml-c-contato, .ml-tbl td.ml-col-nome { overflow: hidden; text-overflow: ellipsis; }
    .ml-tbl td.ml-c-etapa { max-width: 170px; }
    .ml-tbl td.ml-c-material { max-width: 100px; }
    .ml-tbl td.ml-c-contato { max-width: 120px; }
    .ml-tbl td.ml-c-acoes { padding-left: 2px; padding-right: 6px; }
    .ml-tbl td.ml-c-etapa > b, .ml-tbl td.ml-col-nome > b, .ml-tbl td.ml-c-etapa > small, .ml-tbl td.ml-col-nome > small { display: block; overflow: hidden; text-overflow: ellipsis; }
    .ml-tbl th.ml-quebra { white-space: normal; line-height: 1.2; min-width: 64px; }
    .ml-tbl tbody tr { cursor: pointer; }
    .ml-tbl tbody tr:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
    .ml-tbl small { display: block; margin-top: 1px; font-size: var(--fs-xs); font-weight: 400; color: var(--text-mut); }
    .ml-tbl b { font-weight: 600; }
    .ml-tbl th.num, .ml-tbl td.num { text-align: center; }
    .ml-col-nome { position: sticky; left: 0; z-index: 2; min-width: 170px; max-width: 200px; background: var(--surface); }
    .ml-tbl thead th.ml-col-nome { z-index: 4; background: var(--surface-2); }
    .ml-tbl tbody tr:hover td.ml-col-nome { background: var(--surface-2); }
    .ml-tbl .pill + .pill { margin-left: 6px; }
    .ml-cnpj { position: relative; display: inline-flex; align-items: center; font-family: var(--mono); font-size: var(--fs-xs); color: var(--text-dim); cursor: copy; }
    .ml-cnpj svg { position: absolute; left: 100%; top: 50%; width: 13px; height: 13px; margin: -6px 0 0 5px; opacity: 0; transition: opacity .12s; }        /* solta: não ocupa largura da coluna */
    .ml-cnpj:hover svg, .ml-cnpj:focus-visible svg { opacity: .7; }
    .ml-vazio { color: var(--text-mut); }
    .ml-ok { color: var(--ok); }
    .ml-prog { display: grid; gap: 4px; min-width: 84px; font-size: var(--fs-xs); color: var(--text-mut); }
    .ml-prog b { color: var(--text); }
    .ml-prog .track { display: block; height: 5px; }
    .ml-cat-n { font-size: var(--fs-xs); color: var(--text-mut); }
    .ml-cat-n b { font-weight: 700; color: var(--text); }
    .ml-cat-n.cheia b { color: var(--ok); }
    .ml-cat-pt { display: inline-block; width: 8px; height: 8px; margin-right: 5px; border-radius: 2px; }
    .ml-email { display: inline-block; max-width: 104px; overflow: hidden; text-overflow: ellipsis; vertical-align: bottom; }
    .ml-pdf { display: grid; place-items: center; width: 28px; height: 28px; border: none; border-radius: 8px; background: none; color: var(--text-mut); cursor: pointer; }
    .ml-pdf svg { width: 16px; height: 16px; }
    .ml-pdf:hover, .ml-pdf:focus-visible { background: var(--accent-soft); color: var(--accent-strong); outline: none; }
    .ml-tbl tfoot td { position: sticky; bottom: 0; z-index: 1; background: var(--surface-2); border-top: 1px solid var(--border-strong); font-size: var(--fs-xs); font-weight: 700; color: var(--text-dim); }
    .ml-tbl tfoot td.ml-col-nome { z-index: 3; background: var(--surface-2); }
