
.modalInitialFilterBody[data-v-a433bd79] {
    display: flex;
    height: -moz-max-content;
    height: max-content;
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.5rem
}
.modalInitialFilterBody .Input[data-v-a433bd79] {
    flex: 1 1 0%
}
.modalInitialFilterRow[data-v-a433bd79] {
    display: flex;
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.5rem
}
.modalInitialFilterFooter[data-v-a433bd79] {
    display: flex;
    width: 100%;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem
}


.campaigns-table-container[data-v-7e722238] {
  display: flex;
  flex-direction: column;
}
.campaigns-loading[data-v-7e722238] {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 3rem 1rem;
  color: hsl(var(--muted-foreground));
  font-size: 0.875rem;
}

/* ============ Tabela desktop (wrapper do ListViewDefault) ============ */
.campaigns-table-desktop[data-v-7e722238] {
  display: none;
}
@media (min-width: 1024px) {
.campaigns-table-desktop[data-v-7e722238] { display: block;
}
}

/* Usa o visual nativo do ListViewDefault (igual /reports/tickets): headers com
   ícones de sort, sem uppercase e sem fundo de zebra. Sem override de raio/sombra
   — mantém o border-radius padrão do ListViewDefault. */

/* Busca da toolbar (InputDefault) — mais larga. */
.campaigns-search[data-v-7e722238] {
  width: 380px;
  max-width: 100%;
}

/* Grupo de filtros de status com fundo (segmented control, como estava antes). */
.campaigns-table-desktop[data-v-7e722238] .lvd__tabs {
  gap: 2px;
  padding: 4px;
  border-radius: 12px;
  border: 1px solid hsl(var(--border));
  background: hsl(var(--muted) / 0.6);
}

/* Tab ativa realça sobre o fundo do grupo. */
.campaigns-table-desktop[data-v-7e722238] .lvd__tab--active {
  background: hsl(var(--card));
  border-color: transparent;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.06);
}

/* ============ Badge A/B ============ */
.campaigns-badge-ab[data-v-7e722238] {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  border-radius: 9999px;
  padding: 0.125rem 0.5rem;
  font-size: 0.75rem;
  font-weight: 500;
  white-space: nowrap;
  background: hsl(var(--primary) / 0.12);
  color: hsl(var(--primary));
}
.campaigns-badge-ab[data-v-7e722238] svg { width: 0.75rem; height: 0.75rem;
}

/* ============ Chips de tag ============ */
.campaigns-tag-chip[data-v-7e722238] {
  border-radius: 9999px;
  background: hsl(var(--muted));
  color: hsl(var(--muted-foreground));
  padding: 0.125rem 0.375rem;
  font-size: 11px;
  white-space: nowrap;
}

/* ============ Ícone de canal ============ */
.campaigns-channel-icon[data-v-7e722238] {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 0.5rem;
}
/* Icone do canal por tipo — mesmas imagens/paleta dos cards de tipo de canal
   da tela de criacao (CampaignStepConfig). O fundo vem inline (iconBg). */
.campaigns-channel-icon[data-v-7e722238] {
  overflow: hidden;
}
.campaigns-channel-icon__img[data-v-7e722238] {
  width: 1.125rem;
  height: 1.125rem;
  -o-object-fit: contain;
     object-fit: contain;
}
/* sms_image.png tem muito padding branco (~1.7:1): zoom pra preencher o box,
   igual ao --cover da tela de criacao. */
.campaigns-channel-icon__img--cover[data-v-7e722238] {
  width: 1.25rem;
  height: 1.25rem;
  -o-object-fit: cover;
     object-fit: cover;
  transform: scale(1.55);
}

/* ============ Barra de entrega ============ */
.campaigns-delivery-track[data-v-7e722238] {
  height: 0.375rem;
  width: 100%;
  overflow: hidden;
  border-radius: 9999px;
  background: hsl(var(--muted));
}
.campaigns-delivery-fill[data-v-7e722238] {
  height: 100%;
  border-radius: 9999px;
  background: hsl(var(--primary));
  transition: width 200ms ease;
}
/* Entrega completa (100%) fica verde, como no mockup. */
.campaigns-delivery-fill--full[data-v-7e722238] {
  background: #22c55e; /* green-500 */
}

/* ============ Célula de performance ============ */
.campaigns-perf[data-v-7e722238] {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  min-width: 0;
  width: 100%;
}
.campaigns-perf__head[data-v-7e722238] {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  font-size: 0.75rem;
  min-width: 0;
}
.campaigns-perf__counts[data-v-7e722238] {
  display: flex;
  align-items: baseline;
  gap: 0.25rem;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.campaigns-perf__delivered[data-v-7e722238] {
  font-size: 0.8125rem;
  font-weight: 700;
  color: hsl(var(--foreground));
}
.campaigns-perf__total[data-v-7e722238] {
  color: hsl(var(--muted-foreground));
  white-space: nowrap;
}
.campaigns-perf__rate[data-v-7e722238] {
  font-weight: 700;
  color: hsl(var(--primary));
  flex-shrink: 0;
}
.campaigns-perf__rate--full[data-v-7e722238] {
  color: #16a34a; /* green-600 */
}
.campaigns-perf__rate--muted[data-v-7e722238] {
  color: hsl(var(--muted-foreground));
}
.campaigns-perf__waiting[data-v-7e722238] {
  color: hsl(var(--muted-foreground));
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.campaigns-perf__failed[data-v-7e722238] {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.7rem;
  color: #e11d48; /* rose-600 */
  white-space: nowrap;
}
.campaigns-perf__failed-icon[data-v-7e722238] {
  width: 0.75rem;
  height: 0.75rem;
  flex-shrink: 0;
}
.campaigns-perf__base[data-v-7e722238] {
  font-size: 0.7rem;
  color: hsl(var(--muted-foreground));
  white-space: nowrap;
}

/* ============ Chip de estratégia / tipo ============
   Chip com borda (estilo "botao" do mockup); o icone carrega a cor do tipo. */
.campaigns-strategy-chip[data-v-7e722238] {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  border: 1px solid hsl(var(--border));
  border-radius: 0.5rem;
  background: hsl(var(--card));
  padding: 0.3rem 0.625rem;
  font-size: 0.75rem;
  font-weight: 500;
  color: hsl(var(--foreground));
  white-space: nowrap;
  max-width: 100%;
}
.campaigns-strategy-chip__icon[data-v-7e722238] {
  width: 0.875rem;
  height: 0.875rem;
  flex-shrink: 0;
}
/* Envio Direto */
.campaigns-strategy-chip--direct .campaigns-strategy-chip__icon[data-v-7e722238] { color: #3b82f6;
}
/* Agendado */
.campaigns-strategy-chip--scheduled .campaigns-strategy-chip__icon[data-v-7e722238] { color: #f59e0b;
}
/* Automático */
.campaigns-strategy-chip--auto .campaigns-strategy-chip__icon[data-v-7e722238] { color: #eab308;
}

/* ============ Célula de status (badge + data do disparo) ============ */
.campaigns-status-cell[data-v-7e722238] {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  min-width: 0;
}
.campaigns-status-cell__date[data-v-7e722238] {
  font-size: 0.75rem;
  color: hsl(var(--muted-foreground));
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

/* ============ Badge de status ============
   Mesmo padrao do relatorio de chamadas (ReportsCalls): pill com dot colorido,
   fundo tint-50 + texto -700 e dot solido -500. */
.campaigns-status-badge[data-v-7e722238] {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  border-radius: 9999px;
  padding: 0.125rem 0.5rem;
  font-size: 0.75rem;
  font-weight: 500;
  white-space: nowrap;
}
.campaigns-status-badge__dot[data-v-7e722238] {
  width: 0.375rem;
  height: 0.375rem;
  border-radius: 9999px;
  flex-shrink: 0;
  background: currentColor;
}

/* Concluida */
.campaigns-status-badge--success[data-v-7e722238] {
  background: #ecfdf5; /* emerald-50 */
  color: #047857;      /* emerald-700 */
}
.campaigns-status-badge--success .campaigns-status-badge__dot[data-v-7e722238] {
  background: #10b981; /* emerald-500 */
}

/* Pendente / Agendada */
.campaigns-status-badge--warning[data-v-7e722238] {
  background: #fffbeb; /* amber-50 */
  color: #b45309;      /* amber-700 */
}
.campaigns-status-badge--warning .campaigns-status-badge__dot[data-v-7e722238] {
  background: #f59e0b; /* amber-500 */
}

/* Em andamento */
.campaigns-status-badge--info[data-v-7e722238] {
  background: #f0f9ff; /* sky-50 */
  color: #0369a1;      /* sky-700 */
}
.campaigns-status-badge--info .campaigns-status-badge__dot[data-v-7e722238] {
  background: #0ea5e9; /* sky-500 */
}

/* Falha */
.campaigns-status-badge--destructive[data-v-7e722238] {
  background: #fff1f2; /* rose-50 */
  color: #be123c;      /* rose-700 */
}
.campaigns-status-badge--destructive .campaigns-status-badge__dot[data-v-7e722238] {
  background: #f43f5e; /* rose-500 */
}

/* Na fila / Pausada */
.campaigns-status-badge--secondary[data-v-7e722238] {
  background: #f1f5f9; /* slate-100 */
  color: #475569;      /* slate-600 */
}
.campaigns-status-badge--secondary .campaigns-status-badge__dot[data-v-7e722238] {
  background: #94a3b8; /* slate-400 */
}

/* ============ Botões de ação ============ */
.campaigns-action-btn[data-v-7e722238] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 0.5rem;
  border: none;
  background: transparent;
  color: hsl(var(--foreground));
  cursor: pointer;
  transition: background-color 150ms ease;
}
.campaigns-action-btn[data-v-7e722238]:hover { background: hsl(var(--muted));
}
.campaigns-action-btn[data-v-7e722238] svg { width: 1rem; height: 1rem;
}

/* ============ Cards mobile ============ */
.campaigns-cards-mobile[data-v-7e722238] {
  display: grid;
  gap: 0.75rem;
}
/* Esconde os cards (e o empty state duplicado) a partir do desktop.
   Precisa vir DEPOIS da regra base acima pra vencer por ordem de fonte. */
@media (min-width: 1024px) {
.campaigns-cards-mobile[data-v-7e722238] { display: none;
}
}
.campaigns-mobile-card[data-v-7e722238] {
  border-radius: 1rem;
  border: 1px solid hsl(var(--border));
  background: hsl(var(--card));
  padding: 1rem;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  cursor: pointer;
}

/* ============ Empty state ============ */
.campaigns-empty[data-v-7e722238] {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  padding: 2rem 1rem;
}
.campaigns-empty-icon[data-v-7e722238] {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border-radius: 1rem;
  background: hsl(var(--muted));
  color: hsl(var(--muted-foreground));
}

/* ============ Paginação ============ */
.campaigns-pagination-wrapper[data-v-7e722238] {
  margin-top: 0.5rem;
  display: flex;
  justify-content: center;
}

/* O componente Pagination renderiza um <nav> block (100% width); centraliza a
   lista interna. :deep pra alcançar o markup do componente filho (scoped). */
.campaigns-pagination-wrapper[data-v-7e722238] .page-nav-pagination {
  justify-content: center;
}

.campaigns-menu-portal {
  position: fixed;
  z-index: 1100;
  overflow: hidden;
  border-radius: 0.75rem;
  border: 1px solid hsl(var(--border));
  background: hsl(var(--popover));
  padding: 0.25rem;
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
  animation: campaigns-menu-enter 0.12s ease-out;
}
@keyframes campaigns-menu-enter {
from { opacity: 0; transform: translateY(-4px);
}
to { opacity: 1; transform: translateY(0);
}
}
.campaigns-menu-portal .campaigns-menu-item {
  display: flex;
  width: 100%;
  align-items: center;
  gap: 0.5rem;
  border-radius: 0.5rem;
  border: none;
  background: transparent;
  padding: 0.5rem 0.625rem;
  text-align: left;
  font-size: 0.875rem;
  color: hsl(var(--foreground));
  cursor: pointer;
  transition: background-color 150ms ease;
}
.campaigns-menu-portal .campaigns-menu-item svg { width: 1rem; height: 1rem;
}
.campaigns-menu-portal .campaigns-menu-item:hover { background: hsl(var(--muted));
}
.campaigns-menu-portal .campaigns-menu-item--destructive { color: hsl(var(--destructive));
}
.campaigns-menu-portal .campaigns-menu-item--destructive:hover { background: hsl(var(--destructive) / 0.1);
}

.kpi-card[data-v-d02c44f7] {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 0.5rem;
  border-radius: 0.875rem;
  border: 1px solid hsl(var(--border));
  background: hsl(var(--card));
  padding: 0.75rem 0.875rem;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
}
.kpi-card__body[data-v-d02c44f7] {
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
  min-width: 0;
}
.kpi-card__label[data-v-d02c44f7] {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: hsl(var(--muted-foreground));
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kpi-card__value[data-v-d02c44f7] {
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: hsl(var(--foreground));
}
.kpi-card__foot[data-v-d02c44f7] {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem;
  min-height: 1.25rem;
}
.kpi-card__icon[data-v-d02c44f7] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.kpi-card__icon[data-v-d02c44f7] svg {
  width: 1.125rem;
  height: 1.125rem;
}

/* Badge (ex.: "● Ativas") */
.kpi-card__badge[data-v-d02c44f7] {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  border-radius: 9999px;
  padding: 0.125rem 0.5rem;
  font-size: 0.6875rem;
  font-weight: 500;
  white-space: nowrap;
}
.kpi-card__badge-dot[data-v-d02c44f7] {
  width: 0.3125rem;
  height: 0.3125rem;
  border-radius: 9999px;
  background: currentColor;
  flex-shrink: 0;
}

/* ===== Tones: icone e badge ===== */
.kpi-card--neutral .kpi-card__icon[data-v-d02c44f7] { color: hsl(var(--muted-foreground));
}
.kpi-card--neutral .kpi-card__badge[data-v-d02c44f7] { background: hsl(var(--muted)); color: hsl(var(--muted-foreground));
}
.kpi-card--primary .kpi-card__icon[data-v-d02c44f7] { color: hsl(var(--primary));
}
.kpi-card--primary .kpi-card__badge[data-v-d02c44f7] { background: hsl(var(--primary) / 0.12); color: hsl(var(--primary));
}
.kpi-card--success .kpi-card__icon[data-v-d02c44f7] { color: hsl(var(--success));
}
.kpi-card--success .kpi-card__badge[data-v-d02c44f7] { background: hsl(var(--success) / 0.12); color: hsl(var(--success));
}

/* No Bee, --warning-foreground e branco (feito p/ fundo solido); sobre o tint
   usa a propria cor --warning pra ter contraste. */
.kpi-card--warning .kpi-card__icon[data-v-d02c44f7] { color: hsl(var(--warning));
}
.kpi-card--warning .kpi-card__badge[data-v-d02c44f7] { background: hsl(var(--warning) / 0.18); color: hsl(var(--warning));
}
.kpi-card--info .kpi-card__icon[data-v-d02c44f7] { color: hsl(var(--info));
}
.kpi-card--info .kpi-card__badge[data-v-d02c44f7] { background: hsl(var(--info) / 0.12); color: hsl(var(--info));
}
.kpi-card--destructive .kpi-card__icon[data-v-d02c44f7] { color: hsl(var(--destructive));
}
.kpi-card--destructive .kpi-card__badge[data-v-d02c44f7] { background: hsl(var(--destructive) / 0.12); color: hsl(var(--destructive));
}

.campaignsContainer[data-v-5d723e04] {
  display: flex;
  flex-direction: column;
}

/* Shell da listagem — ocupa toda a largura disponível (sem cap central). */
.campaigns-shell[data-v-5d723e04] {
  width: 100%;
  margin: 0;
  padding: 1.5rem 1rem;
  box-sizing: border-box;
}
@media (min-width: 768px) {
.campaigns-shell[data-v-5d723e04] {
    /* Padding vertical enxuto no desktop pra a paginacao caber sem scroll;
       mantem o respiro horizontal de 2rem. */
    padding: 1rem 2rem;
}
}

