:root{
  /* Paleta da marca One4 (logo): navy profundo + teal ("one"/"tech") + azul ("4"). */
  --bg:#0a1a2b; --panel:#102436; --panel2:#16324c; --line:#21425f;
  --txt:#e9f1f8; --muted:#8fa6bd; --brand:#159fb2; --brand2:#2ba3dd;
  --ok:#2fbf71; --run:#f5a623; --err:#ef4d5a; --rev:#a06bff; --pend:#6b7ba0;
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--txt)}
a{color:inherit;text-decoration:none}

/* Brand */
.brand{font-weight:800;font-size:1.5rem;letter-spacing:-.5px}
.brand span{color:var(--brand)}
.brand-sub{color:var(--muted);margin:.2rem 0 1.4rem;font-size:.85rem}

/* Login */
.login-wrap{min-height:100vh;display:grid;place-items:center;
  background:radial-gradient(900px 500px at 50% -10%,#1c2c54 0,var(--bg) 60%)}
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;
  padding:2.2rem;width:340px;box-shadow:0 20px 50px rgba(0,0,0,.4)}
.login-card label{display:block;font-size:.8rem;color:var(--muted);margin:.9rem 0 .3rem}
.login-card input{width:100%;padding:.7rem .8rem;border-radius:9px;border:1px solid var(--line);
  background:var(--bg);color:var(--txt);font-size:.95rem}
.login-card button{width:100%;margin-top:1.4rem;padding:.75rem;border:0;border-radius:9px;
  background:var(--brand);color:#fff;font-weight:600;font-size:.95rem;cursor:pointer}
.login-card button:hover{background:var(--brand2)}
.hint{text-align:center;color:var(--muted);font-size:.78rem;margin:1rem 0 0}
.alert{background:rgba(239,77,90,.12);border:1px solid var(--err);color:#ffb8be;
  padding:.6rem .8rem;border-radius:9px;font-size:.85rem}

/* Topbar */
.topbar{display:flex;align-items:center;gap:1.2rem;padding:1rem 2rem;
  background:var(--panel);border-bottom:1px solid var(--line)}
.tenant-switch{margin-left:1rem;display:flex;align-items:center;gap:.5rem}
.tenant-switch label{color:var(--muted);font-size:.8rem}
.tenant-switch select{background:var(--bg);color:var(--txt);border:1px solid var(--line);
  border-radius:8px;padding:.45rem .7rem;font-size:.9rem}
.logout{margin-left:auto;color:var(--muted);font-size:.9rem}
.logout:hover{color:var(--txt)}

/* Nav */
.nav{display:flex;gap:.3rem;margin-left:1rem}
.nav a{padding:.45rem .9rem;border-radius:8px;font-size:.9rem;color:var(--muted)}
.nav a:hover{color:var(--txt);background:var(--panel2)}
.nav a.active{color:#fff;background:var(--brand)}

/* Acionar page */
.sub{margin:-.4rem 0 1.2rem;font-size:.85rem}
.acionar-form .grid2{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
.acionar-form label{display:block;font-size:.78rem;color:var(--muted);margin:.7rem 0 .3rem}
.acionar-form input[type=text],.acionar-form input[name]:not([type=radio]):not([type=checkbox]),.acionar-form input[type=number],
.acionar-form input[type=password]{width:100%;padding:.6rem .7rem;border-radius:8px;
  border:1px solid var(--line);background:var(--bg);color:var(--txt)}
.acionar-form input[type=file]{width:100%;padding:.5rem;border-radius:8px;border:1px dashed var(--line);
  background:var(--bg);color:var(--muted);font-size:.85rem}
fieldset{border:1px solid var(--line);border-radius:12px;padding:1rem 1.2rem;margin:1.4rem 0 0}
legend{padding:0 .5rem;font-size:.85rem;font-weight:600;color:var(--brand2)}
.speds{display:block}
.check{display:inline-flex;align-items:center;gap:.5rem;margin:.3rem 1.4rem .3rem 0;
  font-size:.92rem;color:var(--txt);cursor:pointer}
/* mesmo motivo do .radio: vence `.acionar-form label{display:block}` */
.acionar-form label.check{display:inline-flex;align-items:center}
.check input{width:16px;height:16px;flex:0 0 auto;accent-color:var(--brand);margin:0}
.warn{margin:.9rem 0 0;font-size:.78rem;color:#ffcb78;background:rgba(245,166,35,.1);
  border:1px solid rgba(245,166,35,.3);border-radius:8px;padding:.6rem .8rem}
.cta{margin-top:1.4rem;padding:.8rem 1.6rem;border:0;border-radius:10px;background:var(--brand);
  color:#fff;font-weight:700;font-size:1rem;cursor:pointer}
.cta:hover{background:var(--brand2)}
.ok-banner{background:rgba(47,191,113,.12);border:1px solid var(--ok);color:#7ee6ac;
  padding:.8rem 1rem;border-radius:10px;font-size:.9rem}

/* Agendamento */
.radio{display:flex;align-items:center;gap:.5rem;margin:.4rem 0;
  font-size:.92rem;cursor:pointer}
/* specificity 0,2,1 para vencer `.acionar-form label{display:block}`, que senão
   empurra o radio para cima do texto (desalinhado). Cada radio fica colado ao
   seu label: ( ) Texto — input e span centrados verticalmente. */
.acionar-form label.radio{display:flex;align-items:center;color:var(--txt)}
.radio input{width:16px;height:16px;flex:0 0 auto;accent-color:var(--brand);margin:0}
.radio>span{color:var(--txt)}
.quando input[type=datetime-local]{margin-top:.7rem;padding:.55rem .7rem;border-radius:8px;
  border:1px solid var(--line);background:var(--bg);color:var(--txt)}
.quando input[type=datetime-local]:disabled{opacity:.4}
.agendado{margin-left:.4rem;cursor:help}

/* Carteira / empresas */
.grid-2col{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
.warn-banner{background:rgba(245,166,35,.12);border-color:var(--run);color:#ffcb78}
/* Aviso de erro (vermelho): estado crítico, ex. sem certificado (o robô não roda). */
.err-banner{background:rgba(239,77,90,.14);border:1px solid var(--err);color:#ffb8be;
  padding:.8rem 1rem;border-radius:10px;font-size:.9rem}
.cert-err{margin-top:.9rem}
code{background:var(--panel2);padding:.1rem .35rem;border-radius:5px;font-size:.85em}
.cert-disc{display:inline-block}
.cert-disc summary{list-style:none;display:inline-block}
.cert-disc summary::-webkit-details-marker{display:none}
.cert-form{display:flex;flex-direction:column;gap:.4rem;margin-top:.5rem;padding:.6rem;
  background:var(--bg);border:1px solid var(--line);border-radius:8px;min-width:220px}
.cert-form input[type=file]{font-size:.8rem;color:var(--muted)}
.cert-form input[type=password],.cert-form input[type=text]{padding:.4rem .6rem;border-radius:6px;
  border:1px solid var(--line);background:var(--panel);color:var(--txt);font-size:.85rem}
/* Página dedicada do certificado (ajuste de review 2026-07-02) */
.cert-form label{font-size:.8rem;color:var(--muted)}
.cert-form .sub2{margin:0}
.cert-form .cta{align-self:flex-start;margin-top:.4rem}
.cert-form-titulo{margin:1.1rem 0 .3rem;font-size:1rem}

/* Seleção de empresas no acionar */
.sel-acoes{margin-bottom:.6rem;font-size:.82rem;color:var(--muted);display:flex;
  align-items:center;gap:.5rem;flex-wrap:wrap}
.busca{width:100%;padding:.6rem .7rem;border-radius:8px;border:1px solid var(--line);
  background:var(--bg);color:var(--txt);margin-bottom:.6rem}
.acionar-form label.inline-check{display:inline-flex;gap:.35rem;align-items:center;margin:0;color:var(--muted)}
.inline-check input{width:15px;height:15px;accent-color:var(--brand)}
.sel-contador{margin-left:auto;color:var(--brand2);font-size:.8rem}
.emp-lista{max-height:340px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;
  padding:0 .6rem}
/* specificity 0,2,1 para vencer `.acionar-form label{display:block}` */
.acionar-form label.emp-row{display:grid;grid-template-columns:24px 1fr auto auto;align-items:center;
  gap:.7rem;margin:0;padding:.5rem .2rem;border-bottom:1px solid var(--panel2);cursor:pointer}
.emp-row input{width:16px;height:16px;accent-color:var(--brand)}
.emp-nome{font-size:.92rem;color:var(--txt)}
.emp-cnpj{font-size:.82rem;color:var(--muted)}
.acionar-form label.inline-date{display:inline-flex;flex-direction:column;gap:.2rem;margin:.3rem 1rem .3rem 0;font-size:.78rem}
.inline-date input[type=date]{padding:.55rem .7rem;border-radius:8px;border:1px solid var(--line);
  background:var(--bg);color:var(--txt)}
.periodo-inputs{margin-top:.9rem}
.competencia-fs input[type=month]{padding:.55rem .7rem;border-radius:8px;border:1px solid var(--line);
  background:var(--bg);color:var(--txt);min-width:200px}

/* Repetir / recorrência */
.repetir{margin-top:1.1rem}
.repetir label{display:block;font-size:.78rem;color:var(--muted);margin-bottom:.3rem}
.repetir select{padding:.55rem .7rem;border-radius:8px;border:1px solid var(--line);
  background:var(--bg);color:var(--txt);min-width:260px}
.sub2{margin:.5rem 0 0;font-size:.76rem}

/* Ações da tabela de agendamentos */
.acoes{display:flex;gap:.4rem;white-space:nowrap;align-items:center}
.inline{display:inline}
/* Botão de download na listagem do painel (download rápido sem abrir o detalhe) */
.btn-dl{display:inline-block;padding:.32rem .7rem;border-radius:7px;background:var(--ok);
  color:#06281a;font-weight:600;font-size:.78rem;text-decoration:none}
.btn-dl:hover{filter:brightness(1.12)}
/* Cabeçalho do detalhe: título + botão de baixar no topo */
.detalhe-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.detalhe-head h2{margin:0}
.dl-top{margin-top:0}
.btn-mini{padding:.32rem .7rem;border:1px solid var(--line);border-radius:7px;
  background:var(--panel2);color:var(--txt);font-size:.78rem;cursor:pointer}
.btn-mini:hover{border-color:var(--brand)}
.btn-mini.danger{color:#ff9aa3}
.btn-mini.danger:hover{border-color:var(--err)}
tr.pausado td{opacity:.55}

/* Lista de resultados */
.arquivos{list-style:none;padding:0;margin:1rem 0 0}
.arquivos li{display:flex;align-items:center;justify-content:space-between;
  padding:.6rem .2rem;border-bottom:1px solid var(--panel2)}
.arquivos .fname{font-size:.9rem;color:var(--txt)}
a.cta{display:inline-block;text-decoration:none}

/* Layout */
.container{max-width:1100px;margin:1.6rem auto;padding:0 1.5rem;display:grid;gap:1.2rem}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:1.3rem 1.4rem}
.card h2{margin:.1rem 0 1rem;font-size:1.05rem}
.card h3{margin:.1rem 0 1rem;font-size:.95rem;color:var(--muted)}

/* Enqueue form */
.enqueue-form{display:grid;grid-template-columns:2fr 1.4fr .8fr 1fr auto;gap:.8rem;align-items:end}
.enqueue-form label{display:block;font-size:.75rem;color:var(--muted);margin-bottom:.3rem}
.enqueue-form input{width:100%;padding:.6rem .7rem;border-radius:8px;border:1px solid var(--line);
  background:var(--bg);color:var(--txt)}
.enqueue-form button{padding:.62rem 1.2rem;border:0;border-radius:8px;background:var(--brand);
  color:#fff;font-weight:600;cursor:pointer;height:fit-content}
.enqueue-form button:hover{background:var(--brand2)}

/* Painel header + seletor de competência */
.painel-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.comp-switch{display:flex;align-items:center;gap:.5rem}
.comp-switch label{color:var(--muted);font-size:.8rem}
.comp-switch input[type=month]{background:var(--bg);color:var(--txt);border:1px solid var(--line);
  border-radius:8px;padding:.5rem .7rem}

.painel-filtros{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.tipo-toggle{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.tipo-toggle a{padding:.5rem .9rem;font-size:.85rem;color:var(--muted)}
.tipo-toggle a:hover{background:var(--panel2);color:var(--txt)}
.tipo-toggle a.on{background:var(--brand);color:#fff}
.tipo-coleta .radio{margin:.4rem 0}

/* Stat cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.9rem}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:1rem;display:flex;flex-direction:column;gap:.2rem;transition:.15s}
.stat:hover{border-color:var(--brand)}
.stat.active{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}
.stat-n{font-size:1.7rem;font-weight:800}
.stat-l{font-size:.7rem;color:var(--muted);letter-spacing:.5px}
.stat-pendente .stat-n{color:var(--pend)}
.stat-executando .stat-n{color:var(--run)}
.stat-concluido .stat-n{color:var(--ok)}
.stat-erro .stat-n{color:var(--err)}
.stat-revisao .stat-n{color:var(--rev)}
.stat-nao_solicitado .stat-n{color:var(--muted)}

/* Matriz de coleta (painel de carteira) */
.matriz th.sped-col{text-align:center;font-size:.68rem}
.matriz td.sped-cell{text-align:center}
.chip{display:inline-block;width:22px;height:22px;line-height:22px;border-radius:6px;
  font-size:.8rem;font-weight:700;text-align:center}
.chip-ok{background:rgba(47,191,113,.18);color:#7ee6ac}
.chip-err{background:rgba(239,77,90,.18);color:#ff9aa3;cursor:help}
.chip-wait{background:rgba(245,166,35,.15);color:#ffcb78}
.chip-na{background:var(--panel2);color:var(--muted)}
.badge-nao_solicitado{background:var(--panel2);color:var(--muted)}
/* Ações do painel: mesmos botões discretos dos Agendamentos (.btn-mini).
   Ver/Tentar de novo/Conferir/Acionar viram botões alinhados; .btn-dl (verde)
   mantém o destaque. Alinhamento horizontal uniforme herdado do .acoes flex. */
.acoes .link{padding:.32rem .7rem;border:1px solid var(--line);border-radius:7px;
  background:var(--panel2);color:var(--txt);font-size:.78rem;line-height:1;
  text-decoration:none;white-space:nowrap}
.acoes .link:hover{border-color:var(--brand)}
.acoes .link.reproc{color:#ffcb78}
.acoes .link.reproc:hover{border-color:var(--run)}

/* Coluna única de progresso "X/Y" no painel (decisão D-Painel) */
.matriz th.prog-col{text-align:center;font-size:.72rem}
.matriz td.prog-cell{text-align:center;white-space:nowrap}
.prog{display:inline-block;min-width:46px;padding:.18rem .55rem;border-radius:7px;
  font-size:.82rem;font-weight:700;text-align:center}
.prog-ok{background:rgba(47,191,113,.18);color:#7ee6ac}
.prog-run{background:rgba(245,166,35,.18);color:#ffcb78}
.prog-err{background:rgba(239,77,90,.18);color:#ff9aa3}
.prog-pend{background:rgba(107,123,160,.18);color:#aebad6}
.prog-rev{background:rgba(160,107,255,.18);color:#c7aaff}
.prog-na{background:transparent;color:var(--muted);font-weight:600}
.tempo{font-size:.8rem;white-space:nowrap}

/* Frescor (4.1c) — "atualizado / atualiza sozinho".
   Linha própria, discreta, alinhada à direita logo abaixo dos cards de status.
   Ajuste de review 2026-07-02: posicionamento robusto em TODOS os estados do
   painel (sem filtro c/ 7 cards, Coletadas, Falhas, Em revisão). É um bloco de
   largura total que SEMPRE fica abaixo do grid `.cards` — sem margens negativas
   (que causavam sobreposição quando o grid quebrava em várias linhas). */
.frescor-linha{display:flex;justify-content:flex-end;width:100%;clear:both;
  margin:.6rem 0 .2rem}
.frescor{margin:0;font-size:.78rem;color:var(--muted);
  display:inline-flex;align-items:center;gap:.4rem;line-height:1.2}
.frescor-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);
  box-shadow:0 0 0 0 rgba(47,191,113,.5);animation:pulso 2s infinite}
@keyframes pulso{0%{box-shadow:0 0 0 0 rgba(47,191,113,.5)}
  70%{box-shadow:0 0 0 6px rgba(47,191,113,0)}100%{box-shadow:0 0 0 0 rgba(47,191,113,0)}}

/* Detalhe — progresso, erro de job, módulos, tentar de novo, técnico */
.detalhe-acoes{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.auto-aviso{margin:0 0 .8rem;font-size:.78rem}
.progresso-linha{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;
  margin:.6rem 0 .2rem;font-size:.92rem}
.prog-txt{font-weight:600}
.tempo-det{font-size:.85rem}
.prog-bar{display:inline-block;width:160px;height:9px;border-radius:99px;
  background:var(--panel2);overflow:hidden;vertical-align:middle}
.prog-bar-fill{display:block;height:100%;border-radius:99px;transition:width .4s ease}
.prog-bar-fill.prog-ok{background:var(--ok)}
.prog-bar-fill.prog-run{background:var(--run)}
.prog-bar-fill.prog-err{background:var(--err)}
.prog-bar-fill.prog-rev{background:var(--rev)}
.prog-bar-fill.prog-pend{background:var(--pend)}

.reproc-btn{margin-top:0;padding:.55rem 1.1rem;font-size:.9rem;background:var(--run);color:#3a2606}
.reproc-btn:hover{filter:brightness(1.08);background:var(--run)}
.reproc-msg{font-size:.88rem;font-weight:600}
.reproc-msg.ok{color:#7ee6ac}

.erro-job{margin-top:1rem;padding:.8rem 1rem;border-radius:10px;
  background:rgba(239,77,90,.1);border:1px solid var(--err)}
.erro-job strong{color:#ff9aa3}
.erro-motivo{margin:.4rem 0 0;font-size:.88rem;color:#ffc6cb}

.modulos{list-style:none;padding:0;margin:.4rem 0 0}
.modulos li{padding:.55rem .2rem;border-bottom:1px solid var(--panel2);font-size:.9rem;
  display:flex;gap:.6rem;flex-wrap:wrap;align-items:baseline}
.mod-ok{color:#7ee6ac;font-weight:600}
.mod-err{color:#ff9aa3;font-weight:600}
.mod-rev{color:#c7aaff;font-weight:600}
.mod-wait{color:#ffcb78;font-weight:600}
.mod-na{color:var(--muted);font-weight:600}
.mod-msg{color:var(--muted);font-size:.85rem}

.tecnico{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:.9rem 1.4rem}
.tecnico summary{cursor:pointer;font-size:.9rem;color:var(--muted);font-weight:600;list-style:revert}
.tecnico summary:hover{color:var(--txt)}
.tecnico .kv{margin-top:.9rem}

/* Table */
table.fila{width:100%;border-collapse:collapse;font-size:.9rem}
table.fila th{text-align:left;color:var(--muted);font-weight:600;font-size:.75rem;
  padding:.5rem .6rem;border-bottom:1px solid var(--line)}
table.fila td{padding:.7rem .6rem;border-bottom:1px solid var(--panel2);vertical-align:middle}
table.fila tr:hover td{background:var(--panel2)}
.muted{color:var(--muted)}
.empty{text-align:center;color:var(--muted);padding:1.5rem!important}
.link{color:var(--brand2)}

/* Badges */
.badge{padding:.2rem .55rem;border-radius:99px;font-size:.72rem;font-weight:700}
.badge-pendente{background:rgba(107,123,160,.18);color:#aebad6}
.badge-executando{background:rgba(245,166,35,.15);color:#ffcb78}
.badge-concluido{background:rgba(47,191,113,.15);color:#7ee6ac}
.badge-erro{background:rgba(239,77,90,.15);color:#ff9aa3}
.badge-revisao{background:rgba(160,107,255,.15);color:#c7aaff}

/* Key-value detail */
.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:.8rem 2rem}
.kv div{display:flex;flex-direction:column;gap:.2rem;padding:.5rem 0;border-bottom:1px solid var(--panel2)}
.kv span{font-size:.72rem;color:var(--muted)}

/* --- Hub de produtos (item 1a) ------------------------------------------- */
.produtos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin-top:1rem}
.produto-card{position:relative;display:flex;flex-direction:column;background:var(--panel);
  border:1px solid var(--line);border-radius:14px;padding:1.3rem 1.4rem;min-height:150px;text-decoration:none;color:var(--txt)}
.produto-card h3{margin:.2rem 0 .5rem;font-size:1rem;color:var(--txt)}
.produto-card p{flex:1;font-size:.85rem}
a.produto-card:hover{border-color:var(--brand);background:var(--panel2)}
.produto-default{border-color:var(--brand)}
.produto-tag{position:absolute;top:.9rem;right:1rem;font-size:.68rem;text-transform:uppercase;
  letter-spacing:.05em;color:var(--brand2);border:1px solid var(--brand);border-radius:6px;padding:.1rem .4rem}
.produto-cta{margin-top:.8rem;font-size:.85rem;color:var(--brand2);font-weight:600}
.produto-locked{opacity:.72}
.produto-locked h3{color:var(--muted)}
.produto-lock{position:absolute;top:.8rem;right:1rem;font-size:1.1rem}
.cta-comercial{display:inline-block;align-self:flex-start;padding:.4rem .8rem;border:1px solid var(--line);
  border-radius:8px;color:var(--muted);text-decoration:none}
.cta-comercial:hover{border-color:var(--brand);color:var(--txt)}

/* Sinal de saúde por card (spec 04) — a descrição não estica: a saúde encosta no CTA */
.produto-card p{flex:none}
.produto-saude{flex:1;margin:.7rem 0 0;padding-top:.7rem;border-top:1px solid var(--line)}
.produto-saude p{margin:.15rem 0;font-size:.82rem}
.saude-falha{color:#ff9aa3;font-weight:700}
.saude-ok{color:var(--ok);font-weight:600}
.saude-curso,.saude-frescor{color:var(--muted)}
.saude-vazia{color:var(--muted);font-style:italic}
/* Card com falhas: destaque de alerta (o que pede ação) */
.produto-alerta{border-color:var(--err)}
a.produto-alerta:hover{border-color:var(--err);background:var(--panel2)}
.produto-alerta .produto-cta{color:#ff9aa3}

/* --- Acionar: divulgação progressiva, preview, revisão, feedback (spec 02) - */

/* Opções avançadas (disclosure nativo) */
.avancado{border:1px solid var(--line);border-radius:12px;margin:1.4rem 0 0;
  padding:.4rem 1.2rem 1rem}
.avancado>summary{cursor:pointer;font-weight:600;color:var(--brand2);font-size:.9rem;
  padding:.7rem .2rem;list-style:revert}
.avancado>summary:hover{color:var(--txt)}
.avancado[open]>summary{margin-bottom:.2rem}
.avancado-sub{margin:.1rem 0 .4rem}
.avancado fieldset{margin-top:1rem}
.speds-lista{margin-top:.4rem}

/* Validação inline (D3) — não recarrega, não zera o form */
.campo-erro{margin:.7rem 0 0;font-size:.82rem;color:#ff9aa3;font-weight:600}

/* Preview da lista avulsa (D1) */
.htmx-indicator{display:none}
.htmx-request #preview-loading, #preview-loading.htmx-request{display:block}
.htmx-indicator.htmx-request{display:block}
.preview-box{margin-top:.8rem;padding:.8rem 1rem;border:1px solid var(--line);
  border-radius:10px;background:var(--bg)}
.preview-box.preview-vazio{border-color:var(--err)}
.preview-contagem{margin:0 0 .5rem;font-size:.92rem}
.preview-val{color:#7ee6ac}
.preview-ign{color:#ffcb78}
.preview-erro{margin:.4rem 0 0;font-size:.85rem;color:#ff9aa3;font-weight:600}
.preview-amostra{list-style:none;padding:0;margin:.2rem 0 0}
.preview-amostra li{display:flex;justify-content:space-between;gap:1rem;
  padding:.35rem .2rem;border-bottom:1px solid var(--panel2);font-size:.86rem}
.preview-amostra .pa-cnpj{color:var(--muted)}
.preview-amostra .pa-mais{justify-content:flex-start;border:0}
.preview-ignoradas{margin-top:.6rem}
.preview-ignoradas summary{cursor:pointer;font-size:.84rem;color:var(--muted);font-weight:600}
.preview-ignoradas summary:hover{color:var(--txt)}
.preview-ignoradas ul{margin:.5rem 0 0;padding-left:1.2rem;font-size:.84rem;color:var(--muted)}
.preview-ignoradas li{padding:.15rem 0}

/* Revisão pré-disparo (4.3) — overlay */
.revisao-overlay{position:fixed;inset:0;background:rgba(6,10,20,.72);
  display:flex;align-items:center;justify-content:center;padding:1.5rem;z-index:50}
.revisao-modal{max-width:520px;width:100%;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.revisao-modal h2{margin:.1rem 0 .6rem}
.revisao-resumo{padding:.9rem 1rem;border:1px solid var(--line);border-radius:10px;
  background:var(--bg);font-size:1.05rem;text-align:center;margin:.4rem 0 .8rem}
.revisao-params{font-size:.86rem;color:var(--muted);margin:.2rem 0}
.revisao-cert{font-size:.86rem;color:var(--muted);margin:.2rem 0}
.revisao-cert-alerta{margin:.6rem 0 0;padding:.6rem .8rem;border-radius:8px;
  background:rgba(245,166,35,.12);border:1px solid var(--run);color:#ffcb78;font-size:.85rem}
.revisao-acoes{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.2rem}
.revisao-acoes .cta{margin-top:0}
/* Modal "Acionar/Reexecutar empresa": período (intervalo/mês) + SPEDs. */
.ac-campo{margin:.8rem 0}
.ac-campo .ac-lbl{display:block;font-size:.85rem;font-weight:600;color:var(--brand2);margin-bottom:.35rem}
.ac-campo .radio{margin-right:1.2rem}
.ac-datas{display:flex;gap:1.2rem;flex-wrap:wrap}
/* Carteiras (aba Carteira + editor de membros + barra do painel). */
.carteira-nova{display:flex;gap:.6rem;align-items:center;margin:.6rem 0 1rem}
.carteira-nova input[name=nome]{flex:1}
.membros-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.45rem .9rem;margin:.9rem 0}
.carteira-bar{border-left:3px solid var(--brand)}
/* Tabela de carteiras: colunas com largura clara e ações numa linha só. */
.carteiras-tbl{table-layout:auto}
.carteiras-tbl .cart-nome{font-weight:600}
.carteiras-tbl .col-num{text-align:center;width:6rem}
.carteiras-tbl .cart-status{font-size:.82rem}
.carteiras-tbl .col-acoes{width:1%;white-space:nowrap;text-align:right}
.cart-acoes .btn-mini,.cart-acoes .inline-form{display:inline-block;vertical-align:middle;margin-left:.35rem}
.inline-form{display:inline}
.ac-campo input[type=date],.ac-campo input[type=month]{margin-left:.4rem;background:var(--panel);
  border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:.4rem .5rem;font-size:.9rem}
#btn-confirmar:disabled{opacity:.6;cursor:default}
#btn-acionar:disabled{opacity:.5;cursor:not-allowed}

/* Feedback rico pós-envio (4.4) */
.feedback-card{border-color:var(--ok)}
.fb-titulo{color:#7ee6ac;margin:.1rem 0 .6rem}
.fb-contagem{font-size:1.15rem;font-weight:700;margin:.2rem 0}
.fb-linha{font-size:.95rem;color:var(--txt);margin:.2rem 0}
.fb-acoes{display:flex;gap:.8rem;align-items:center;margin-top:1.2rem;flex-wrap:wrap}
.fb-acoes .cta{margin-top:0}
.fb-acoes .btn-mini{padding:.6rem 1.1rem}

/* --- Seleção em escala no Acionar (spec 03, frente a) -------------------- */
.cat-filtro{background:var(--bg);color:var(--txt);border:1px solid var(--line);
  border-radius:7px;padding:.3rem .5rem;font-size:.82rem;margin-left:.3rem}
#marcar-todas{font-weight:600}
.acionar-form label.emp-row{grid-template-columns:24px 1fr auto auto}
.emp-cat{font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;
  padding:.1rem .4rem;border:1px solid var(--line);border-radius:6px}

/* --- Ações em lote no painel (spec 03, frente b) ------------------------- */
.lote-bar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin:.6rem 0 0;
  padding:.7rem 1rem;border:1px solid var(--line);border-radius:11px;
  background:var(--panel);font-size:.9rem}
.lote-info{color:var(--txt);font-weight:600}
.lote-teto{color:#ffcb78;font-size:.85rem;background:rgba(245,166,35,.1);
  border:1px solid rgba(245,166,35,.3);border-radius:8px;padding:.4rem .7rem}
.btn-lote{margin-left:auto;padding:.5rem 1.1rem;border:0;border-radius:9px;
  font-weight:700;font-size:.88rem;cursor:pointer}
.btn-lote-reproc{background:var(--run);color:#3a2606}
.btn-lote-dl{background:var(--ok);color:#06281a}
.btn-lote:hover{filter:brightness(1.08)}
.lote-result{border-color:var(--ok);background:rgba(47,191,113,.12);color:#7ee6ac;
  font-weight:600}
#lote-confirmar:disabled{opacity:.6;cursor:default}
