/* =========================================================================
   LABORCLÍNICO - PADRÃO VISUAL (DESIGN SYSTEM)
   Carregado depois de style.css. Telas migradas usam somente estas classes
   (prefixo ds-) e os tokens abaixo, sem estilos inline.

   Escala tipográfica: 12 / 13 / 14 / 16 / 20 px
   Espaçamento:        4 / 8 / 12 / 16 / 24 / 32 px
   Alturas de controle: 32 (compacto) e 36 (padrão)
   ========================================================================= */

:root, [data-theme="dark"] {
  --fs-xs: 12px;
  --fs-sm: 13px;
  --fs-md: 14px;
  --fs-lg: 16px;
  --fs-xl: 20px;

  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 24px;
  --sp-6: 32px;

  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-pill: 999px;

  --control-h: 36px;
  --control-h-sm: 32px;

  /* Cores de status (texto / fundo suave / borda) */
  --st-success: #34d399;
  --st-success-bg: rgba(16, 185, 129, 0.14);
  --st-warning: #fbbf24;
  --st-warning-bg: rgba(245, 158, 11, 0.14);
  --st-danger: #f87171;
  --st-danger-bg: rgba(239, 68, 68, 0.14);
  --st-info: #60a5fa;
  --st-info-bg: rgba(59, 130, 246, 0.14);
  --st-neutral: #94a3b8;
  --st-neutral-bg: rgba(148, 163, 184, 0.14);
  --st-purple: #a78bfa;
  --st-purple-bg: rgba(139, 92, 246, 0.14);

  /* Marca Banco do Brasil (só para identificar o módulo de boletos) */
  --brand-bb: #60a5fa;
  --brand-bb-bg: rgba(59, 130, 246, 0.12);
}

[data-theme="light"] {
  --st-success: #047857;
  --st-success-bg: #ecfdf5;
  --st-warning: #b45309;
  --st-warning-bg: #fffbeb;
  --st-danger: #b91c1c;
  --st-danger-bg: #fef2f2;
  --st-info: #1d4ed8;
  --st-info-bg: #eff6ff;
  --st-neutral: #475569;
  --st-neutral-bg: #f1f5f9;
  --st-purple: #6d28d9;
  --st-purple-bg: #f5f3ff;

  --brand-bb: #003882;
  --brand-bb-bg: rgba(0, 56, 130, 0.08);
}

/* -------------------------------------------------------------------------
   PÁGINA
   ------------------------------------------------------------------------- */
.ds-page {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

/* Empilhamento vertical que funciona com display:block (o JS exibe telas/painéis com style.display = 'block') */
.ds-stack > * + * {
  margin-top: var(--sp-4);
}

.ds-stack > [style*="display: none"] + *,
.ds-stack > .ds-tabs + * {
  margin-top: var(--sp-3);
}

.ds-page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sp-3);
}

/* Contexto da tela (o título fica na barra superior global .main-topbar) */
.ds-page-context {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}

.ds-page-context .ds-page-subtitle {
  margin: 0 0 0 var(--sp-1);
}

.ds-page-title {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
  margin: 0;
  font-size: var(--fs-xl);
  font-weight: 700;
  color: var(--text-main);
  line-height: 1.3;
}

.ds-page-subtitle {
  margin: 2px 0 0;
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

.ds-page-actions {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}

/* -------------------------------------------------------------------------
   CARTÃO / PAINEL
   ------------------------------------------------------------------------- */
.ds-card {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: var(--sp-4);
}

.ds-card-flush {
  padding: 0;
  overflow: hidden;
}

/* -------------------------------------------------------------------------
   FILTROS
   ------------------------------------------------------------------------- */
.ds-filters {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}

.ds-filter-row {
  display: flex;
  align-items: flex-end;
  gap: var(--sp-3);
  flex-wrap: wrap;
}

.ds-field {
  display: flex;
  flex-direction: column;
  gap: var(--sp-1);
  min-width: 0;
}

.ds-field-grow {
  flex: 1 1 220px;
}

.ds-label {
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--text-muted);
  white-space: nowrap;
}

.ds-control,
.ds-field .input-control {
  height: var(--control-h);
  font-size: var(--fs-sm);
}

.ds-date-range {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
}

.ds-date-range .input-control {
  width: 148px;
}

.ds-date-range-sep {
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

.ds-search {
  position: relative;
}

.ds-search .input-control {
  padding-left: 34px;
}

.ds-search-icon {
  position: absolute;
  left: 11px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--text-sub);
  pointer-events: none;
  display: inline-flex;
}

.ds-filter-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-2);
  flex-wrap: wrap;
  padding-top: var(--sp-3);
  border-top: 1px solid var(--border-color);
}

.ds-chips {
  display: flex;
  align-items: center;
  gap: var(--sp-1);
  flex-wrap: wrap;
}

/* -------------------------------------------------------------------------
   BOTÕES (complementa .btn de style.css com tamanhos e variações fixos)
   ------------------------------------------------------------------------- */
.ds-page .btn {
  height: var(--control-h);
  padding: 0 14px;
  font-size: var(--fs-sm);
}

.ds-page .btn.btn-sm {
  height: var(--control-h-sm);
  padding: 0 10px;
  font-size: var(--fs-xs);
}

.ds-page .btn svg {
  flex-shrink: 0;
}

.ds-page .btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.btn-ghost {
  background: transparent;
  border-color: transparent;
  color: var(--text-muted);
}

.btn-ghost:hover {
  background: var(--bg-card-hover);
  color: var(--text-main);
}

.btn-danger-outline {
  background: transparent;
  border-color: var(--st-danger);
  color: var(--st-danger);
}

.btn-danger-outline:hover {
  background: var(--st-danger-bg);
}

/* -------------------------------------------------------------------------
   ABAS
   ------------------------------------------------------------------------- */
.ds-tabs {
  display: inline-flex;
  gap: var(--sp-1);
  padding: var(--sp-1);
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  max-width: 100%;
  overflow-x: auto;
}

.ds-tabs .segmented-btn {
  font-size: var(--fs-sm);
  padding: 6px 14px;
  white-space: nowrap;
}

.ds-tab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 6px;
  border-radius: var(--radius-pill);
  background: var(--st-neutral-bg);
  color: var(--text-muted);
  font-size: var(--fs-xs);
  font-weight: 700;
}

.segmented-btn.active .ds-tab-count {
  background: var(--accent-primary);
  color: #ffffff;
}

/* -------------------------------------------------------------------------
   BARRA DE AÇÕES (seleção em lote)
   ------------------------------------------------------------------------- */
.ds-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-3);
  flex-wrap: wrap;
}

.ds-toolbar-group {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}

.ds-selection-bar {
  padding: var(--sp-2) var(--sp-3);
}

.ds-select-md {
  width: 230px;
  flex: 0 0 auto;
}

.ds-selection-count {
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--text-main);
}

/* -------------------------------------------------------------------------
   BADGES / ETIQUETAS
   ------------------------------------------------------------------------- */
.ds-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1);
  height: 22px;
  padding: 0 8px;
  border-radius: var(--radius-pill);
  font-size: var(--fs-xs);
  font-weight: 600;
  white-space: nowrap;
  background: var(--st-neutral-bg);
  color: var(--st-neutral);
}

.ds-badge-success { background: var(--st-success-bg); color: var(--st-success); }
.ds-badge-warning { background: var(--st-warning-bg); color: var(--st-warning); }
.ds-badge-danger  { background: var(--st-danger-bg);  color: var(--st-danger); }
.ds-badge-info    { background: var(--st-info-bg);    color: var(--st-info); }
.ds-badge-purple  { background: var(--st-purple-bg);  color: var(--st-purple); }
.ds-badge-bb      { background: var(--brand-bb-bg);   color: var(--brand-bb); }

.ds-text-success { color: var(--st-success); }
.ds-text-warning { color: var(--st-warning); }
.ds-text-danger  { color: var(--st-danger); }
.ds-text-info    { color: var(--st-info); }
.ds-text-neutral { color: var(--st-neutral); }

.ds-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: currentColor;
  display: inline-block;
}

/* -------------------------------------------------------------------------
   MENU SUSPENSO
   ------------------------------------------------------------------------- */
.ds-menu-wrap {
  position: relative;
  display: inline-block;
}

.ds-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  z-index: 1050;
  min-width: 230px;
  padding: var(--sp-1);
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
}

.ds-menu .ds-menu-item,
.ds-menu-item {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  width: 100%;
  padding: 8px 10px;
  border: none;
  border-radius: var(--radius-sm);
  background: none;
  color: var(--text-main);
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  font-weight: 500;
  text-align: left;
  cursor: pointer;
}

.ds-menu .ds-menu-item:hover,
.ds-menu-item:hover {
  background: var(--bg-card-hover);
}

.ds-menu .ds-menu-item.ds-text-danger { color: var(--st-danger); }

.ds-menu-divider {
  height: 1px;
  margin: var(--sp-1) 0;
  background: var(--border-color);
}

.ds-menu-header {
  padding: 6px 10px 2px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--text-sub);
}

/* Menu flutuante posicionado via JS (left/top absolutos na página) */
.ds-menu.ds-menu-floating {
  position: absolute;
  right: auto;
  top: auto;
  z-index: 10500;
  padding: var(--sp-1);
}

.ds-menu-item .ds-dot {
  flex-shrink: 0;
}

/* -------------------------------------------------------------------------
   INDICADORES (KPIs)
   ------------------------------------------------------------------------- */
.ds-kpis .metric-label {
  font-size: var(--fs-xs);
}

.ds-kpi-hint {
  font-weight: 500;
  color: var(--text-sub);
}

/* -------------------------------------------------------------------------
   TABELAS
   ------------------------------------------------------------------------- */
.ds-table-card {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  overflow: hidden;
}

.ds-table-card .table-scroll-wrapper {
  border: none;
  border-radius: 0;
}

.ds-table-card .data-table thead th,
.ds-table-card .data-table tbody td {
  padding: 10px 12px;
}

.data-table .ds-col-check { width: 40px; text-align: center; }
.data-table .ds-col-center { text-align: center; }
.data-table .ds-col-right { text-align: right; }
.data-table .ds-col-wide { min-width: 200px; }

.data-table .ds-num {
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  color: var(--mono-cell-color);
  white-space: nowrap;
}

.data-table .ds-money {
  font-weight: 700;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.ds-text-strong { font-weight: 600; color: var(--text-main); }
.ds-text-purple { color: var(--st-purple); }
.ds-muted { color: var(--text-muted); }
.ds-nowrap { white-space: nowrap; }

.ds-cell-sub {
  margin-top: 3px;
  font-size: var(--fs-xs);
  color: var(--text-muted);
  line-height: 1.3;
}

.ds-badge-sm {
  height: 18px;
  padding: 0 6px;
  font-size: 11px;
}

.ds-link {
  color: var(--accent-blue);
  font-weight: 600;
  text-decoration: none;
}

.ds-link:hover {
  text-decoration: underline;
}

.ds-row-actions {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1);
}

.ds-row-actions .btn {
  height: 28px;
  padding: 0 10px;
  font-size: var(--fs-xs);
}

.ds-row-actions .btn-ghost.btn-icon,
.ds-row-actions .btn-toggle-row-menu {
  width: 28px;
  padding: 0;
}

.data-table tbody tr.ds-row-danger td {
  background-color: var(--st-danger-bg);
}

.data-table tbody tr.ds-row-danger:hover td {
  background-color: var(--st-danger-bg);
  filter: brightness(1.05);
}

.data-table input[type="checkbox"] {
  width: 15px;
  height: 15px;
  cursor: pointer;
  accent-color: var(--accent-primary);
}

/* -------------------------------------------------------------------------
   RESPONSIVO
   ------------------------------------------------------------------------- */
@media (max-width: 720px) {
  .ds-page-header,
  .ds-toolbar {
    align-items: stretch;
  }
  .ds-page-actions,
  .ds-toolbar-group {
    width: 100%;
  }
  .ds-date-range .input-control {
    width: 100%;
  }
  .ds-date-range {
    width: 100%;
  }
  .ds-field {
    flex: 1 1 100%;
  }
}

/* -------------------------------------------------------------------------
   POP-UPS (MODAIS)
   Cabeçalho neutro (sem gradiente), corpo com seções e rodapé com ações.
   ------------------------------------------------------------------------- */
.modal-overlay.ds-modal-overlay {
  z-index: 10600;
  background: rgba(15, 23, 42, 0.6);
  backdrop-filter: blur(2px);
}

.modal-card.ds-modal {
  width: 100%;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border-color);
  background: var(--bg-modal);
  overflow: hidden;
}

.modal-card.ds-modal-lg { max-width: 820px; }
.modal-card.ds-modal-md { max-width: 560px; }

.modal-header.ds-modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  background: var(--bg-modal);
  border-bottom: 1px solid var(--border-color);
}

.ds-modal-heading h3 {
  margin: 0;
  font-size: var(--fs-lg);
  font-weight: 700;
  color: var(--text-main);
}

.ds-modal-subtitle {
  margin: 2px 0 0;
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

.ds-modal-header .btn-close-modal {
  color: var(--text-muted);
  font-size: 22px;
  line-height: 1;
}

.modal-body.ds-modal-body {
  padding: var(--sp-4) var(--sp-5);
  max-height: 72vh;
  overflow-y: auto;
}

.ds-modal-body > * + * {
  margin-top: var(--sp-4);
}

.modal-footer.ds-modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: var(--sp-2);
  padding: var(--sp-3) var(--sp-5);
  background: var(--bg-modal-footer);
  border-top: 1px solid var(--border-color);
}

/* Resumo no topo do pop-up */
.ds-summary {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--sp-3);
  flex-wrap: wrap;
}

.ds-summary-title {
  font-size: var(--fs-lg);
  font-weight: 700;
  color: var(--text-main);
}

.ds-summary-side {
  text-align: right;
}

/* Grade de números */
.ds-stat-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sp-2);
}

.ds-stat {
  padding: var(--sp-3);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-main);
}

.ds-stat-value {
  margin-top: 2px;
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--text-main);
  font-variant-numeric: tabular-nums;
}

.ds-stat-highlight {
  background: var(--st-success-bg);
  border-color: transparent;
}

.ds-stat-highlight .ds-stat-value {
  font-size: var(--fs-lg);
  color: var(--st-success);
}

.ds-stat-grid-compact .ds-stat {
  padding: var(--sp-2) var(--sp-3);
}

.ds-stat-grid-compact .ds-stat-value {
  font-size: var(--fs-sm);
}

/* Seções */
.ds-section {
  padding-top: var(--sp-4);
  border-top: 1px solid var(--border-color);
}

.ds-section > * + * {
  margin-top: var(--sp-3);
}

.ds-section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}

.ds-section-title {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--text-main);
}

.ds-subpanel {
  padding: var(--sp-3);
  border: 1px dashed var(--border-color);
  border-radius: var(--radius-md);
}

.ds-subpanel > * + * {
  margin-top: var(--sp-2);
}

.ds-subpanel-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}

.ds-subpanel .ds-cell-sub,
.ds-section-header .ds-cell-sub {
  margin-top: 0;
}

.ds-select-sm {
  width: 160px;
  flex: 0 0 auto;
}

/* Avisos */
.ds-alert {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--sp-3);
  flex-wrap: wrap;
  padding: var(--sp-3);
  border-radius: var(--radius-md);
  border-left: 3px solid currentColor;
  font-size: var(--fs-sm);
  line-height: 1.5;
}

.ds-alert-body {
  color: var(--text-main);
}

.ds-alert-body > strong:first-child {
  display: block;
  margin-bottom: 2px;
}

.ds-alert-warning { background: var(--st-warning-bg); color: var(--st-warning); }
.ds-alert-danger  { background: var(--st-danger-bg);  color: var(--st-danger); }
.ds-alert-success { background: var(--st-success-bg); color: var(--st-success); }
.ds-alert-info    { background: var(--st-info-bg);    color: var(--st-info); }
.ds-alert-purple  { background: var(--st-purple-bg);  color: var(--st-purple); }

/* Grupos de ações */
.ds-action-groups {
  display: grid;
  gap: var(--sp-3);
}

.ds-action-group {
  display: grid;
  grid-template-columns: 150px 1fr;
  align-items: center;
  gap: var(--sp-3);
}

.ds-action-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

.ds-action-group-danger {
  padding-top: var(--sp-3);
  border-top: 1px dashed var(--border-color);
}

.ds-modal .btn {
  height: var(--control-h);
  padding: 0 14px;
  font-size: var(--fs-sm);
}

.ds-modal .btn.btn-sm {
  height: var(--control-h-sm);
  padding: 0 10px;
  font-size: var(--fs-xs);
}

.ds-modal .btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* Lista de dados */
.ds-dl {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sp-2) var(--sp-3);
  margin: 0;
}

.ds-dl dt {
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--text-muted);
}

.ds-dl dd {
  margin: 2px 0 0;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--text-main);
  word-break: break-all;
}

.ds-code {
  padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-main);
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  color: var(--mono-cell-color);
  word-break: break-all;
}

@media (max-width: 720px) {
  .ds-stat-grid,
  .ds-dl {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ds-action-group {
    grid-template-columns: 1fr;
    gap: var(--sp-1);
  }
  .ds-summary-side {
    text-align: left;
  }
  .modal-header.ds-modal-header,
  .modal-body.ds-modal-body,
  .modal-footer.ds-modal-footer {
    padding-left: var(--sp-4);
    padding-right: var(--sp-4);
  }
}

/* =========================================================================
   LAYOUT ERP (telas de lista): cabeçalho com abas, faixa de resumo,
   barra de filtros em uma linha, barra de seleção sob demanda, tabela limpa
   ========================================================================= */
.ds-erp {
  max-width: none; /* usa a largura toda (monitores grandes) */
}

.ds-erp.ds-stack > * + * {
  margin-top: var(--sp-3);
}

.ds-erp-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--sp-3);
  flex-wrap: wrap;
  border-bottom: 1px solid var(--border-color);
}

.ds-page-actions {
  padding-bottom: var(--sp-2);
}

/* Abas sublinhadas */
.ds-underline-tabs {
  display: flex;
  gap: var(--sp-5);
  overflow-x: auto;
  scrollbar-width: none;
}

.ds-underline-tabs::-webkit-scrollbar {
  display: none;
}

.ds-underline-tabs .segmented-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-2) 0 var(--sp-3);
  margin-bottom: -1px;
  border: none;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background: none;
  box-shadow: none;
  color: var(--text-muted);
  font-size: var(--fs-md);
  font-weight: 600;
  white-space: nowrap;
}

.ds-underline-tabs .segmented-btn:hover {
  color: var(--text-main);
}

.ds-underline-tabs .segmented-btn.active {
  background: none;
  border: none;
  border-bottom: 2px solid var(--accent-primary);
  box-shadow: none;
  color: var(--text-main);
}

.ds-underline-tabs .segmented-btn.active .ds-tab-count {
  background: var(--st-neutral-bg);
  color: var(--text-main);
}

/* Faixa de resumo (substitui os cards de indicadores) */
.ds-summary-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-card);
}

.ds-summary-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--sp-3) var(--sp-4);
  min-width: 0;
}

.ds-summary-item + .ds-summary-item {
  border-left: 1px solid var(--border-color);
}

.ds-summary-label {
  font-size: var(--fs-xs);
  color: var(--text-muted);
}

.ds-summary-value {
  font-size: var(--fs-lg);
  font-weight: 600;
  color: var(--text-main);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ds-summary-sub {
  font-size: var(--fs-xs);
  color: var(--text-sub);
}

/* Barra de filtros em uma linha */
.ds-filterbar {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}

.ds-filterbar .input-control {
  height: var(--control-h-sm);
  font-size: var(--fs-sm);
  border-radius: var(--radius-sm);
}

.ds-filterbar-search {
  flex: 1 1 260px;
  min-width: 200px;
}

.ds-select-auto {
  width: auto;
  flex: 0 0 auto;
  padding-right: 28px;
}

.ds-select-wide {
  max-width: 260px;
}

.ds-filterbar-extra {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-basis: 100%;
}

.ds-filterbar-extra[hidden] {
  display: none;
}

.ds-filterbar .ds-date-range .input-control {
  width: 150px;
}

.ds-filter-chips {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
  min-height: 20px;
  font-size: var(--fs-xs);
  color: var(--text-muted);
}

.ds-filter-period {
  color: var(--text-muted);
}

.ds-filter-chips .active-filter-badge {
  font-size: var(--fs-xs);
}

/* Barra de seleção (aparece só com itens selecionados) */
.ds-bulkbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-3);
  flex-wrap: wrap;
  padding: var(--sp-2) var(--sp-3);
  border-radius: var(--radius-md);
  background: var(--st-info-bg);
}

.ds-bulkbar[hidden] {
  display: none;
}

/* Botões compactos e de ícone */
.ds-page .btn.btn-icon,
.btn.btn-icon {
  width: var(--control-h-sm);
  height: var(--control-h-sm);
  padding: 0;
}

.ds-erp .btn {
  height: var(--control-h-sm);
  font-size: var(--fs-sm);
}

/* Tabela limpa */
.ds-table-clean thead th {
  background: transparent;
  font-size: var(--fs-xs);
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  color: var(--text-muted);
}

.ds-table-card .ds-table-clean tbody td {
  padding: 10px 12px;
  font-size: var(--fs-sm);
}

.ds-table-clean tbody tr {
  cursor: pointer;
}

.ds-table-clean .ds-col-actions {
  width: 44px;
  text-align: right;
}

.ds-table-clean .btn-toggle-row-menu {
  opacity: 0.55;
}

.ds-table-clean tbody tr:hover .btn-toggle-row-menu {
  opacity: 1;
}

.ds-table-clean tbody tr.ds-row-alert td:first-child {
  box-shadow: inset 3px 0 0 var(--st-danger);
}

.ds-table-clean .ds-money {
  font-weight: 600;
}

.ds-table-foot {
  display: flex;
  justify-content: flex-start;
}

/* Status discreto: ponto colorido + texto */
.ds-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--text-main);
  white-space: nowrap;
}

.ds-status .ds-dot { width: 7px; height: 7px; }
.ds-status-success .ds-dot { color: var(--st-success); }
.ds-status-warning .ds-dot { color: var(--st-warning); }
.ds-status-danger  .ds-dot { color: var(--st-danger); }
.ds-status-info    .ds-dot { color: var(--st-info); }
.ds-status-neutral .ds-dot { color: var(--st-neutral); }

.ds-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

@media (max-width: 900px) {
  .ds-summary-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ds-summary-item:nth-child(3) {
    border-left: none;
  }
  .ds-summary-item:nth-child(n + 3) {
    border-top: 1px solid var(--border-color);
  }
}

@media (max-width: 720px) {
  .ds-erp-head {
    align-items: stretch;
  }
  .ds-select-auto,
  .ds-select-wide {
    flex: 1 1 calc(50% - var(--sp-2));
    max-width: none;
  }
  .ds-erp .ds-page-actions {
    width: auto;
  }
  .ds-summary-item {
    padding: var(--sp-2) var(--sp-3);
  }
  .ds-summary-value {
    font-size: var(--fs-md);
  }
  .ds-underline-tabs {
    gap: var(--sp-4);
  }
  .ds-filterbar .ds-date-range .input-control {
    width: 100%;
  }
}

/* =========================================================================
   PÁGINA DE DETALHES (substitui pop-ups de detalhe)
   ========================================================================= */
.ds-detail-page {
  flex-direction: column;
  gap: var(--sp-4);
}

.ds-backlink {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1);
  padding: 0;
  border: none;
  background: none;
  color: var(--text-muted);
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  font-weight: 500;
  cursor: pointer;
}

.ds-backlink:hover {
  color: var(--text-main);
}

.ds-detail-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--sp-3);
  flex-wrap: wrap;
  padding-bottom: var(--sp-4);
  border-bottom: 1px solid var(--border-color);
}

.ds-detail-heading h2 {
  margin: 0;
  font-size: var(--fs-xl);
  font-weight: 700;
  color: var(--text-main);
}

.ds-detail-header .ds-page-actions {
  padding-bottom: 0;
}

.ds-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: var(--sp-4);
  align-items: start;
}

.ds-detail-main,
.ds-detail-side {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
  min-width: 0;
}

.ds-panel {
  padding: var(--sp-4);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-card);
}

.ds-panel > * + * {
  margin-top: var(--sp-3);
}

.ds-panel .ds-cell-sub {
  margin-top: var(--sp-1);
}

.ds-panel-danger {
  border-color: var(--st-danger-bg);
}

.ds-side-actions {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.ds-side-actions-row {
  flex-direction: row;
  gap: var(--sp-2);
}

.ds-side-link {
  display: block;
  width: 100%;
  padding: 7px var(--sp-2);
  margin: 0 calc(-1 * var(--sp-2));
  width: calc(100% + 2 * var(--sp-2));
  border: none;
  border-radius: var(--radius-sm);
  background: none;
  color: var(--text-main);
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  text-align: left;
  cursor: pointer;
}

.ds-side-link:hover {
  background: var(--bg-card-hover);
}

.ds-side-link:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.ds-side-link.ds-text-danger {
  color: var(--st-danger);
}

.ds-detail-page .btn {
  height: var(--control-h-sm);
  font-size: var(--fs-sm);
}

@media (max-width: 1000px) {
  .ds-detail-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Pop-ups de detalhe exibidos como página (ver ui-paginas.js) */
.modal-overlay.ds-modal-page {
  position: static !important;
  inset: auto !important;
  z-index: auto !important;
  background: none !important;
  backdrop-filter: none !important;
  padding: 0 !important;
  align-items: stretch !important;
  justify-content: stretch !important;
  overflow: visible !important;
}

.modal-overlay.ds-modal-page.ds-modal-page-hidden {
  display: none !important;
}

.ds-modal-page > .modal-card {
  width: 100% !important;
  max-width: 1200px !important;
  max-height: none !important;
  margin: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  overflow: visible !important;
  animation: none !important;
}

.ds-modal-page .ds-modal-page-back {
  margin-bottom: var(--sp-3);
}

.ds-modal-page .modal-header {
  padding: 0 0 var(--sp-4) !important;
  margin-bottom: var(--sp-4);
  background: none !important;
  border-bottom: 1px solid var(--border-color) !important;
  color: var(--text-main) !important;
}

.ds-modal-page .modal-header h3 {
  font-size: var(--fs-xl) !important;
  color: var(--text-main) !important;
}

.ds-modal-page .modal-header .modal-subtitle {
  color: var(--text-muted) !important;
}

.ds-modal-page .modal-header .modal-header-icon,
.ds-modal-page .modal-header .btn-close-modal {
  display: none !important;
}

.ds-modal-page .modal-body {
  max-height: none !important;
  overflow: visible !important;
  padding: 0 !important;
}

.ds-modal-page .modal-footer {
  position: static !important;
  margin-top: var(--sp-4);
  padding: var(--sp-4) 0 0 !important;
  background: none !important;
  border-top: 1px solid var(--border-color) !important;
}

/* =========================================================================
   SHELL: MENU LATERAL E BARRA SUPERIOR
   ========================================================================= */
.app-sidebar {
  background: var(--bg-card);
}

.nav-section-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: none;
  color: var(--text-sub);
  padding: 14px 10px 4px;
}

.nav-item {
  height: 34px;
  min-height: 34px;
  max-height: 34px;
  padding: 0 10px;
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--text-muted);
}

.nav-item:hover {
  background: var(--bg-card-hover);
  color: var(--text-main);
}

.nav-item.active {
  background: color-mix(in srgb, var(--accent-primary) 12%, var(--bg-card-hover));
  color: var(--text-main);
  font-weight: 600;
  box-shadow: inset 3px 0 0 var(--accent-primary);
}
.nav-item.active .nav-badge {
  background: color-mix(in srgb, var(--accent-primary) 18%, transparent);
  color: var(--text-main);
  border-color: transparent;
}

.nav-item.active svg {
  stroke: var(--accent-primary);
}

.nav-icon {
  width: 16px;
  min-width: 16px;
  height: 16px;
  opacity: 0.85;
}

.nav-badge,
.nav-item:not(.active) .nav-badge,
.nav-badge-accent,
.nav-badge-purple {
  background: var(--st-neutral-bg) !important;
  color: var(--text-muted) !important;
  border: none !important;
  font-size: 11px;
  font-weight: 600;
  padding: 1px 7px;
}

.app-main-content {
  padding: var(--sp-4) var(--sp-5);
}

.main-topbar {
  margin-bottom: var(--sp-4);
  padding-bottom: var(--sp-3);
}

.topbar-title {
  font-size: var(--fs-xl);
  font-weight: 700;
  letter-spacing: -0.2px;
}

.topbar-subtitle {
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

@media (max-width: 720px) {
  .app-main-content {
    padding: var(--sp-3) var(--sp-4);
  }
}

/* =========================================================================
   CAMADA GLOBAL: componentes legados no novo padrão (todas as telas)
   ========================================================================= */

/* Botões */
.btn {
  height: var(--control-h-sm);
  padding: 0 12px;
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
  font-weight: 500;
}

.btn-sm {
  height: 28px;
  padding: 0 10px;
  font-size: var(--fs-xs);
}

.btn-xs {
  height: 26px;
  padding: 0 8px;
  font-size: var(--fs-xs);
}

.btn-primary {
  background: var(--accent-primary) !important;
  border-color: transparent !important;
  color: #ffffff !important;
  box-shadow: none !important;
}

.btn-primary:hover {
  background: var(--accent-primary-hover) !important;
}

.btn-outline {
  background: var(--bg-card);
}

/* Campos */
.input-control {
  height: var(--control-h);
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
}

/* Indicadores: cards sem ícones, mais leves */
.metrics-grid {
  gap: var(--sp-2);
}

.metric-card {
  padding: var(--sp-3) var(--sp-4) !important;
  border-radius: var(--radius-md) !important;
  box-shadow: none !important;
  border: 1px solid var(--border-color) !important;
  background: var(--bg-card) !important;
}

.metric-card::before,
.metric-card::after {
  display: none !important;
}

.metric-card:hover {
  transform: none !important;
  box-shadow: none !important;
}

.metric-icon-box {
  display: none !important;
}

.metric-label {
  font-size: var(--fs-xs) !important;
  font-weight: 500 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  color: var(--text-muted) !important;
}

.metric-value {
  font-size: var(--fs-lg) !important;
  font-weight: 600 !important;
  color: var(--text-main) !important;
}

.metric-sub {
  font-size: var(--fs-xs) !important;
  color: var(--text-sub) !important;
}

/* Tabelas */
.data-table {
  font-size: var(--fs-sm);
}

.data-table thead th {
  background: var(--bg-card);
  font-size: var(--fs-xs);
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  color: var(--text-muted);
  padding: 10px 12px;
}

.data-table tbody td {
  padding: 10px 12px;
}

.table-container,
.table-scroll-wrapper {
  border-radius: var(--radius-md);
}

/* Etiquetas legadas: neutras e discretas */
.badge-tag-clean {
  border-radius: var(--radius-pill) !important;
  font-size: var(--fs-xs) !important;
  font-weight: 600 !important;
  padding: 2px 8px !important;
  border: none !important;
}

/* Abas segmentadas legadas como abas sublinhadas */
.segmented-control {
  background: transparent !important;
  border: none !important;
  border-bottom: 1px solid var(--border-color) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  gap: var(--sp-5) !important;
  display: flex !important;
  width: 100%;
}

.segmented-btn {
  padding: var(--sp-2) 0 var(--sp-3) !important;
  margin-bottom: -1px;
  border: none !important;
  border-bottom: 2px solid transparent !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
  font-size: var(--fs-md) !important;
  font-weight: 600 !important;
  color: var(--text-muted) !important;
}

.segmented-btn.active {
  border-bottom-color: var(--accent-primary) !important;
  color: var(--text-main) !important;
}

.segmented-btn .dot-indicator {
  display: none;
}

/* Atalhos de período */
.dash-period-quick {
  gap: 2px;
  padding: 2px;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
}

.btn-period-quick {
  height: 26px;
  padding: 0 10px;
  border: none !important;
  border-radius: 4px !important;
  background: none !important;
  font-size: var(--fs-xs) !important;
  font-weight: 500 !important;
  color: var(--text-muted) !important;
  box-shadow: none !important;
}

.btn-period-quick.active {
  background: var(--bg-card-hover) !important;
  color: var(--text-main) !important;
  font-weight: 600 !important;
}

/* Diálogos (pop-ups que continuam como pop-up): cabeçalho neutro */
.modal-overlay:not(.ds-modal-page) {
  background: rgba(15, 23, 42, 0.55) !important;
  backdrop-filter: blur(2px) !important;
}

.modal-overlay:not(.ds-modal-page) .modal-card {
  border: 1px solid var(--border-color) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: var(--shadow-lg) !important;
}

.modal-overlay .modal-header {
  background: var(--bg-modal) !important;
  color: var(--text-main) !important;
  border-bottom: 1px solid var(--border-color) !important;
  padding: var(--sp-4) var(--sp-5) !important;
}

.modal-overlay .modal-header h3 {
  color: var(--text-main) !important;
  font-size: var(--fs-lg) !important;
  font-weight: 700 !important;
}

.modal-overlay .modal-header .modal-subtitle {
  color: var(--text-muted) !important;
  font-size: var(--fs-sm) !important;
}

.modal-overlay .modal-header .btn-close-modal {
  color: var(--text-muted) !important;
}

.modal-overlay .modal-header .modal-header-icon {
  display: none !important;
}

.modal-overlay .modal-footer {
  background: var(--bg-modal-footer) !important;
  border-top: 1px solid var(--border-color) !important;
}

/* =========================================================================
   DASHBOARD
   ========================================================================= */
.cockpit-alerts-panel {
  padding: 0 !important;
  border: none !important;
  background: none !important;
  box-shadow: none !important;
}

.cockpit-alerts-header {
  margin-bottom: var(--sp-2) !important;
  padding: 0 !important;
  border: none !important;
}

.cockpit-title {
  font-size: var(--fs-md) !important;
  font-weight: 700 !important;
  color: var(--text-main) !important;
}

.cockpit-subtitle,
.cockpit-date-badge,
.live-status-dot {
  display: none !important;
}

.cockpit-alerts-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)) !important;
  gap: 0 !important;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-card);
  overflow: hidden;
}

.cockpit-card {
  padding: var(--sp-3) var(--sp-4) !important;
  border: none !important;
  border-right: 1px solid var(--border-color) !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
  transform: none !important;
}

.cockpit-card:last-child {
  border-right: none !important;
}

.cockpit-card:hover {
  background: var(--bg-card-hover) !important;
}

.cockpit-card-icon,
.cockpit-arrow {
  display: none !important;
}

.cockpit-tag {
  padding: 0 !important;
  background: none !important;
  font-size: var(--fs-xs) !important;
  font-weight: 600 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
}

.cockpit-count {
  font-size: var(--fs-xs) !important;
  color: var(--text-sub) !important;
}

.cockpit-value {
  font-size: var(--fs-lg) !important;
  font-weight: 600 !important;
  color: var(--text-main) !important;
}

.cockpit-meta {
  font-size: var(--fs-xs) !important;
  color: var(--text-muted) !important;
}

.dash-filter-bar {
  padding: 0 !important;
  border: none !important;
  background: none !important;
  box-shadow: none !important;
  gap: var(--sp-2) !important;
}

.dash-filter-title {
  font-size: var(--fs-sm) !important;
  font-weight: 500 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  color: var(--text-muted) !important;
}

.dash-filter-right .input-control {
  height: var(--control-h-sm) !important;
}

.analytics-card {
  border: 1px solid var(--border-color) !important;
  border-radius: var(--radius-md) !important;
  box-shadow: none !important;
  background: var(--bg-card) !important;
}

.analytics-header h3 {
  font-size: var(--fs-md) !important;
  font-weight: 700 !important;
}

.analytics-header p {
  font-size: var(--fs-xs) !important;
  color: var(--text-muted) !important;
}

.analytics-badge {
  background: var(--st-neutral-bg) !important;
  color: var(--text-muted) !important;
  border: none !important;
  font-size: var(--fs-xs) !important;
}

/* =========================================================================
   TELAS DE LISTA LEGADAS (Pacientes & Caixa, Convênios, Contas a Pagar...)
   Indicadores viram faixa, filtros em linha compacta, abas sublinhadas,
   tabela em cartão discreto.
   ========================================================================= */
.tab-view > * + * {
  margin-top: var(--sp-3);
}

.tab-view > .metrics-grid,
.metrics-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)) !important;
  gap: 0 !important;
  margin-bottom: 0 !important;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-card);
  overflow: hidden;
}

.metrics-grid > .metric-card {
  border: none !important;
  border-right: 1px solid var(--border-color) !important;
  border-radius: 0 !important;
  min-height: 0 !important;
}

.metrics-grid > .metric-card:last-of-type {
  border-right: none !important;
}

.quick-status-filter-container {
  margin-bottom: 0 !important;
  gap: 0 !important;
}

.quick-filter-label {
  display: none !important;
}

.segmented-badge {
  border: none !important;
  background: var(--st-neutral-bg) !important;
  color: var(--text-muted) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
}

.filters-panel {
  padding: 0 !important;
  margin-bottom: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
}

.filters-grid {
  display: flex !important;
  flex-wrap: wrap;
  align-items: flex-end !important;
  gap: var(--sp-2) !important;
}

.filter-group {
  gap: 2px !important;
  flex: 0 1 auto;
  min-width: 140px;
}

.filter-group.filter-search-group {
  flex: 1 1 240px;
}

.filter-group label {
  font-size: 11px !important;
  font-weight: 500 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  color: var(--text-muted) !important;
}

.filter-group .input-control {
  height: var(--control-h-sm) !important;
  font-size: var(--fs-sm) !important;
}

.filter-actions .btn {
  height: var(--control-h-sm) !important;
}

.search-input-wrapper .input-control {
  padding-left: 32px !important;
}

.search-icon {
  left: 10px !important;
  width: 14px;
  height: 14px;
}

.table-container {
  border-radius: var(--radius-md) !important;
  box-shadow: none !important;
}

.table-toolbar {
  padding: var(--sp-2) var(--sp-3) !important;
  background: var(--bg-card) !important;
}

.selection-indicator {
  font-size: var(--fs-sm) !important;
  font-weight: 600 !important;
  color: var(--text-main) !important;
}

/* Botões da barra da tabela: sem gradientes nem cores fortes */
.table-toolbar .btn:not(.btn-primary) {
  background: var(--bg-card);
}

/* =========================================================================
   TIPAGEM SANGUÍNEA
   ========================================================================= */
.tipagem-header-clean .tipagem-page-title {
  display: none !important;
}

.tipagem-page-desc {
  margin: 0 !important;
  font-size: var(--fs-sm) !important;
  color: var(--text-muted) !important;
}

.tipagem-steps-guide {
  padding: 0 !important;
  border: none !important;
  background: none !important;
  box-shadow: none !important;
  gap: var(--sp-3) !important;
}

.step-num {
  width: 22px !important;
  height: 22px !important;
  font-size: var(--fs-xs) !important;
  box-shadow: none !important;
}

.step-title {
  font-size: var(--fs-sm) !important;
  font-weight: 600 !important;
}

.step-desc {
  font-size: var(--fs-xs) !important;
}

.tipagem-hero-search-card,
.tipagem-card-panel,
.tipagem-action-panel,
.tipagem-history-section {
  border: 1px solid var(--border-color) !important;
  border-radius: var(--radius-md) !important;
  box-shadow: none !important;
  background: var(--bg-card) !important;
}

.tipagem-hero-search-card {
  padding: var(--sp-4) !important;
}

.search-icon-box {
  display: none !important;
}

.search-label {
  font-size: var(--fs-xs) !important;
  font-weight: 500 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  color: var(--text-muted) !important;
}

.tipagem-clean-input {
  height: var(--control-h) !important;
  font-size: var(--fs-md) !important;
  border-radius: var(--radius-sm) !important;
}

.btn-clean-primary {
  height: var(--control-h) !important;
  padding: 0 16px !important;
  border-radius: var(--radius-sm) !important;
  background: var(--accent-primary) !important;
  box-shadow: none !important;
  font-size: var(--fs-sm) !important;
  font-weight: 500 !important;
}

.btn-clean-primary:hover {
  background: var(--accent-primary-hover) !important;
  transform: none !important;
}

/* =========================================================================
   AUDITORIA / FATIADOR (barras de tabela)
   ========================================================================= */
.table-header-bar,
.fatiador-toolbar {
  padding: var(--sp-2) var(--sp-3) !important;
  background: var(--bg-card) !important;
  border-bottom: 1px solid var(--border-color) !important;
  box-shadow: none !important;
}

.table-results-count {
  font-size: var(--fs-sm) !important;
  font-weight: 600 !important;
  color: var(--text-main) !important;
}

/* Fatiador: painel de busca sem card pesado e sem título repetido */
.convenios-fetch-panel {
  padding: 0 !important;
  border: none !important;
  background: none !important;
  box-shadow: none !important;
}

.fetch-panel-header {
  padding: 0 0 var(--sp-3) !important;
  border-bottom: none !important;
  background: none !important;
}

.fetch-title-group > svg,
.fetch-panel-title {
  display: none !important;
}

.fetch-panel-sub {
  font-size: var(--fs-sm) !important;
  color: var(--text-muted) !important;
}

.fetch-actions-quick .btn {
  color: var(--text-main) !important;
  border-color: var(--border-color) !important;
}

.convenios-controls-bar {
  padding: 0 !important;
  border: none !important;
  background: none !important;
  gap: var(--sp-2) !important;
}

/* =========================================================================
   DIÁLOGOS DO SISTEMA (ui-dialogos.js)
   ========================================================================= */
.modal-overlay.ds-dialog-overlay {
  /* acima da tela de login (25000) e abaixo dos avisos (30000): "Esqueci minha senha" abria escondido atrás do login */
  z-index: 27000 !important;
  align-items: center;
  justify-content: center;
  padding: var(--sp-4);
}

.modal-card.ds-dialog {
  width: 100%;
  max-width: 440px;
  padding: 0;
  overflow: hidden;
}

.ds-dialog-body {
  padding: var(--sp-5) var(--sp-5) var(--sp-4);
}

.ds-dialog-title {
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-lg);
  font-weight: 700;
  color: var(--text-main);
}

.ds-dialog-text {
  font-size: var(--fs-sm);
  line-height: 1.55;
  color: var(--text-muted);
}

.ds-dialog-text p + p {
  margin-top: var(--sp-2);
}

.ds-dialog-input {
  margin-top: var(--sp-3);
  width: 100%;
}

textarea.ds-dialog-input {
  height: auto;
  padding: var(--sp-2);
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
}

.ds-dialog-erro {
  margin-top: var(--sp-2);
  font-size: var(--fs-xs);
  color: var(--st-danger);
}

.ds-dialog-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--sp-2);
  padding: var(--sp-3) var(--sp-5);
  background: var(--bg-modal-footer);
  border-top: 1px solid var(--border-color);
}

/* =========================================================================
   BUSCA GERAL (ui-busca.js)
   ========================================================================= */
.topbar-right {
  flex: 0 1 420px;
  justify-content: flex-end;
}

.ds-busca {
  position: relative;
  width: 100%;
  max-width: 420px;
}

.ds-busca-icone {
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  color: var(--text-sub);
  pointer-events: none;
}

.ds-busca-input {
  width: 100%;
  height: var(--control-h-sm);
  padding: 0 64px 0 32px;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
  color: var(--text-main);
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  outline: none;
}

.ds-busca-input:focus {
  border-color: var(--border-focus);
}

.ds-busca-atalho {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  padding: 1px 6px;
  border: 1px solid var(--border-color);
  border-radius: 4px;
  font-family: var(--font-sans);
  font-size: 11px;
  color: var(--text-sub);
  pointer-events: none;
}

.ds-busca-resultados {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  z-index: 3000;
  max-height: 420px;
  overflow-y: auto;
  padding: var(--sp-1);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-card);
  box-shadow: var(--shadow-lg);
}

.ds-busca-resultados[hidden] {
  display: none;
}

.ds-busca-grupo {
  padding: 8px 10px 4px;
  font-size: 11px;
  font-weight: 600;
  color: var(--text-sub);
}

.ds-busca-item {
  display: flex;
  flex-direction: column;
  gap: 1px;
  width: 100%;
  padding: 7px 10px;
  border: none;
  border-radius: var(--radius-sm);
  background: none;
  text-align: left;
  font-family: var(--font-sans);
  cursor: pointer;
}

.ds-busca-item.ativo,
.ds-busca-item:hover {
  background: var(--bg-card-hover);
}

.ds-busca-titulo {
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--text-main);
}

.ds-busca-detalhe {
  font-size: var(--fs-xs);
  color: var(--text-muted);
}

.ds-busca-vazio {
  padding: var(--sp-3);
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

@media (max-width: 720px) {
  .main-topbar {
    flex-wrap: wrap;
    gap: var(--sp-2);
  }
  .topbar-right {
    flex: 1 1 100%;
  }
  .ds-busca {
    max-width: none;
  }
  .ds-busca-atalho {
    display: none;
  }
}

/* =========================================================================
   PAGINAÇÃO (ui-paginacao.js)
   ========================================================================= */
tr.ds-pag-oculta {
  display: none !important;
}

.ds-paginacao {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  flex-wrap: wrap;
  padding: var(--sp-2) 0;
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

.ds-paginacao[hidden] {
  display: none;
}

.ds-paginacao-aviso {
  flex: 1;
  color: var(--st-warning);
  font-weight: 600;
}

.ds-paginacao-botoes {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
}

/* Linha do tempo da cobrança */
.ds-timeline {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sp-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.ds-timeline-item {
  display: flex;
  gap: var(--sp-2);
  position: relative;
}

.ds-timeline-marca {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1.5px solid var(--border-color);
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted);
  background: var(--bg-card);
}

.ds-timeline-feito .ds-timeline-marca {
  border-color: var(--st-success);
  background: var(--st-success);
  color: #ffffff;
}

.ds-timeline-alerta .ds-timeline-marca {
  border-color: var(--st-danger);
  color: var(--st-danger);
}

.ds-timeline-ignorado {
  opacity: 0.55;
}

.ds-timeline-titulo {
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--text-main);
}

.ds-timeline-alerta .ds-timeline-titulo {
  color: var(--st-danger);
}

.ds-timeline-acao {
  margin-top: 2px;
  padding: 0;
  border: none;
  background: none;
  font-family: var(--font-sans);
  font-size: var(--fs-xs);
  cursor: pointer;
}

@media (max-width: 900px) {
  .ds-timeline {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* =========================================================================
   TELAS DE GESTÃO (ui-recursos.js)
   ========================================================================= */
.ds-regua-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--sp-3);
  align-items: end;
}

.ds-check {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  font-size: var(--fs-sm);
  color: var(--text-main);
  cursor: pointer;
}

.ds-check input {
  width: 16px;
  height: 16px;
  accent-color: var(--accent-primary);
}

#receber-tbody tr[data-convenio] {
  cursor: pointer;
}

.ds-ativ-det {
  max-width: 420px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ds-esqueci-senha {
  display: block;
  margin: var(--sp-3) auto 0;
  padding: 0;
  border: none;
  background: none;
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  cursor: pointer;
}

.ds-aviso-servicos {
  margin-bottom: var(--sp-3);
}

/* Aba "Prontas para emitir": ações e faturas de grupo */
.ds-row-actions-wrap {
  flex-wrap: wrap;
  justify-content: flex-end;
}

.data-table .ds-col-acoes-aptas {
  text-align: right;
  width: 150px;
}

.ds-col-acoes-aptas .ds-row-actions-wrap {
  display: flex;
  max-width: 100%;
  margin-left: auto;
}

#tabela-faturas-aptas .ds-num {
  font-size: 11px;
}

.ds-expandir-grupo {
  margin-top: 2px;
  padding: 0;
  border: none;
  background: none;
  font-family: var(--font-sans);
  font-size: var(--fs-xs);
  cursor: pointer;
}

.data-table td.ds-subtabela-celula {
  padding: 0 12px 12px !important;
  background: var(--bg-main);
}

.ds-subtabela {
  padding: var(--sp-3);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-card);
}

.ds-subtabela-cabecalho {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--sp-2);
  flex-wrap: wrap;
  margin-bottom: var(--sp-2);
}

.ds-subtabela .data-table tbody td,
.ds-subtabela .data-table thead th {
  padding: 6px 8px;
}

.btn-ghost.ds-text-danger {
  color: var(--st-danger);
}

.ds-table-card #tabela-faturas-aptas thead th,
.ds-table-card #tabela-faturas-aptas tbody td {
  padding-left: 8px;
  padding-right: 8px;
}

/* A subtabela do grupo não alarga a tabela principal: rola dentro do próprio quadro */
.data-table td.ds-subtabela-celula {
  max-width: 0;
}

.ds-subtabela {
  overflow-x: auto;
}

/* Fatiador: guia já digitada no portal e autorizações por exame */
.ds-fatiador-marcacao { display: flex; align-items: center; gap: var(--sp-2, 8px); flex-wrap: wrap; margin: var(--sp-2, 8px) 0; }
.ds-card-digitada { opacity: .7; }
.ds-card-digitada:hover { opacity: 1; }
.ds-exame-autorizacao { margin-left: var(--sp-2, 8px); white-space: nowrap; }
#fatiador-aviso-limite[hidden] { display: none; }

/* Cartão de conferência de cancelamentos (Atividades) */
#conferir-cancel-card .ds-card-header { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3, 12px); padding: var(--sp-3, 12px) var(--sp-4, 16px); flex-wrap: wrap; }
#conferir-cancel-resultado { padding: 0 var(--sp-4, 16px) var(--sp-3, 12px); display: grid; gap: var(--sp-3, 12px); }
#conferir-cancel-resultado[hidden] { display: none; }

/* Ordenação por coluna (ui-ordenacao.js) */
table.data-table thead th:not(.ds-col-check):not(.no-sort) { cursor: pointer; user-select: none; }
table.data-table thead th:not(.ds-col-check):not(.no-sort):hover { color: var(--text-main); }
table.data-table thead th.ds-ord-asc::after,
table.data-table thead th.ds-ord-desc::after { display: inline-block; margin-left: 4px; font-size: 0.8em; opacity: .75; }
table.data-table thead th.ds-ord-asc::after { content: "▲"; }
table.data-table thead th.ds-ord-desc::after { content: "▼"; }

/* Fluxo da cobrança em etapas: 4 pontos (NF, Boleto, E-mail, Recebido) + próximo passo */
.ds-status-linha { display: flex; align-items: center; gap: 10px; white-space: nowrap; }
.ds-etapas { display: inline-flex; align-items: center; gap: 3px; cursor: help; }
.ds-etapa { width: 7px; height: 7px; border-radius: 50%; display: inline-block; background: var(--border-color); }
.ds-etapa-feito { background: var(--st-success, #16a34a); }
.ds-etapa-atual { background: transparent; box-shadow: inset 0 0 0 1.5px var(--primary, #10b981); }
.ds-etapa-pulado { background: var(--text-sub, #94a3b8); opacity: .45; }
.ds-etapas-texto { margin-left: 5px; font-size: 11px; color: var(--text-sub); }

/* Ações da linha: principal + menu "⋯" */
.ds-row-actions { display: flex; align-items: center; justify-content: flex-end; gap: 4px; flex-wrap: nowrap; }
details.ds-mais-acoes { position: relative; }
details.ds-mais-acoes > summary { list-style: none; cursor: pointer; }
details.ds-mais-acoes > summary::-webkit-details-marker { display: none; }
.ds-mais-acoes-menu { position: fixed; z-index: 50; min-width: 190px; padding: 4px; display: grid; background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.18); }
.ds-mais-acoes-menu .ds-menu-item { text-align: left; background: none; border: 0; padding: 8px 10px; border-radius: 6px; font: inherit; font-size: var(--fs-sm, 13px); color: var(--text-main); cursor: pointer; white-space: nowrap; }
.ds-mais-acoes-menu .ds-menu-item:hover { background: var(--bg-hover, rgba(127,127,127,.12)); }
.ds-mais-acoes-menu .ds-menu-item.ds-text-danger { color: var(--st-danger, #dc2626); }


/* ===================================================================
   Telas ERP: barra de filtros em uma linha e tabela densa sem rolagem dupla
   =================================================================== */
@media (min-width: 1100px) {
  .ds-erp .ds-filterbar { flex-wrap: nowrap; }
  .ds-erp .ds-filterbar-search { flex: 1 1 200px; min-width: 160px; }
  .ds-erp .ds-filterbar .ds-select-auto { flex: 0 1 auto; min-width: 0; max-width: 190px; text-overflow: ellipsis; }
  .ds-erp .ds-filterbar .ds-select-wide { max-width: 230px; }
  .ds-erp .ds-filterbar-extra { flex-basis: auto; }
}
/* A página rola; a tabela não tem barra própria (antes: 65vh com rolagem dentro da rolagem) */
.ds-erp .table-scroll-wrapper { max-height: none; }
.ds-erp .ds-table-clean thead th { white-space: nowrap; }
.ds-erp .ds-table-card .ds-table-clean tbody td { padding: 8px 10px; vertical-align: middle; }
/* Uma linha por registro: nomes longos cortados com "…" (nome completo ao passar o mouse) */
.ds-erp .ds-table-clean td .ds-text-strong,
.ds-erp .ds-table-clean td .ds-cell-sub { display: block; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ds-erp .ds-table-clean td.ds-nowrap, .ds-erp .ds-table-clean td.ds-num, .ds-erp .ds-table-clean td.ds-col-right { white-space: nowrap; }
.ds-erp .ds-table-clean td.ds-num { font-size: 12px; }
.ds-erp .ds-table-clean td .ds-text-strong { max-width: 220px; }
@media (max-width: 1440px) {
  .ds-erp .ds-etapas-texto { display: none; }
  .ds-erp .ds-table-card .ds-table-clean tbody td,
  .ds-erp .ds-table-card .ds-table-clean thead th { padding-left: 8px; padding-right: 8px; }
}
.ds-bulkbar.ds-bulkbar-fixa { background: transparent; border: 0; padding: 0; gap: var(--sp-2); }
.ds-bulkbar-fixa .ds-toolbar-group { margin-left: auto; }
.ds-riscado { text-decoration: line-through; opacity: .7; }
.ds-erp .ds-cell-sub .ds-link { padding: 0; border: 0; background: none; font: inherit; color: var(--primary, #10b981); cursor: pointer; }
.ds-erp [hidden] { display: none !important; }
#view-faturas .ds-table-clean td .ds-text-strong,
#view-faturas .ds-table-clean td .ds-cell-sub { max-width: 230px; }
#view-faturas .ds-table-clean td .ds-text-strong,
#view-faturas .ds-table-clean td .ds-cell-sub { max-width: 190px; }
.ds-erp .ds-table-clean td.ds-num { font-size: 11.5px; letter-spacing: -.1px; }
@media (max-width: 1440px) {
  #view-faturas .ds-table-card .ds-table-clean tbody td,
  #view-faturas .ds-table-card .ds-table-clean thead th { padding-left: 6px; padding-right: 6px; }
}

/* ===================== Fatiador ===================== */
.ds-list-toolbar { display: flex; align-items: center; gap: var(--sp-4, 16px); flex-wrap: wrap; font-size: var(--fs-sm, 13px); }
.ds-list-toolbar .ds-select-auto { margin-left: auto; height: var(--control-h-sm); font-size: var(--fs-sm); }
#view-fatiador .ds-page-actions details.ds-mais-acoes > summary { height: var(--control-h-sm); display: inline-flex; align-items: center; }
#view-fatiador .view-mode-switch { display: inline-flex; border: 1px solid var(--border-color); border-radius: var(--radius-sm, 6px); overflow: hidden; }
#view-fatiador .view-mode-switch .btn-switch { border: 0; background: transparent; padding: 0 12px; height: var(--control-h-sm); font-size: var(--fs-sm); color: var(--text-muted); cursor: pointer; }
#view-fatiador .view-mode-switch .btn-switch.active { background: var(--bg-hover, rgba(127,127,127,.14)); color: var(--text-main); font-weight: 600; }
#view-fatiador .cards-grid-fatiador { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: var(--sp-3, 12px); }
#view-fatiador .patient-card { display: flex; flex-direction: column; gap: 8px; padding: 14px 16px; border: 1px solid var(--border-color); border-radius: var(--radius-lg, 10px); background: var(--bg-card); box-shadow: none; }
#view-fatiador .patient-card .card-top { display: flex; flex-direction: column; gap: 4px; }
#view-fatiador .patient-card .card-header-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0; }
#view-fatiador .patient-card .patient-name { margin: 0; font-size: var(--fs-md, 14px); font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#view-fatiador .patient-card .badge-convenio { flex-shrink: 0; font-size: 11px; padding: 2px 8px; border-radius: 999px; }
.ds-card-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 12px; color: var(--text-muted); }
.ds-card-meta strong { color: var(--text-main); font-weight: 600; }
#view-fatiador .exames-container { margin-top: 6px; border-top: 1px solid var(--border-color); padding-top: 6px; }
#view-fatiador .exames-header { display: flex; justify-content: space-between; align-items: center; font-size: 12px; color: var(--text-muted); margin-bottom: 4px; }
#view-fatiador .exames-scroll-list { max-height: 210px; overflow-y: auto; border: 0; padding: 0; background: transparent; }
#view-fatiador .exame-item-row { display: flex; align-items: center; gap: 8px; padding: 4px 2px; border: 0; border-bottom: 1px solid color-mix(in srgb, var(--border-color) 55%, transparent); font-size: 12.5px; cursor: pointer; }
#view-fatiador .exame-item-row:last-child { border-bottom: 0; }
#view-fatiador .exame-item-row.unchecked { opacity: .5; }
#view-fatiador .exame-tuss-tag { font-family: var(--font-mono, monospace); font-size: 11px; color: var(--text-muted); background: none; border: 0; padding: 0; min-width: 78px; }
#view-fatiador .exame-tuss-tag.warning { color: var(--st-warning, #d97706); }
#view-fatiador .exame-name-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ds-card-rodape { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 8px; border-top: 1px solid var(--border-color); }
.ds-card-rodape .ds-fatiador-marcacao { margin: 0; }
#view-fatiador .btn-copy-lote { width: auto; margin: 0; }
#view-fatiador .ds-card-digitada { opacity: .6; }
.ds-mais-acoes-menu a.ds-menu-item { display: block; text-decoration: none; }
.ds-filterbar-info { margin-left: auto; font-size: var(--fs-sm, 13px); color: var(--text-muted); white-space: nowrap; }
#view-nfse-avulsa .ds-table-clean td .ds-text-strong,
#view-nfse-avulsa .ds-table-clean td .ds-cell-sub { max-width: 200px; }
@media (max-width: 1440px) {
  #view-nfse-avulsa .ds-table-card .ds-table-clean tbody td,
  #view-nfse-avulsa .ds-table-card .ds-table-clean thead th { padding-left: 6px; padding-right: 6px; }
}
.ds-filterbar-info { align-self: center; }
.ds-page-hint { margin: -6px 0 0; font-size: var(--fs-sm, 13px); color: var(--text-muted); }
.ds-erp .ds-table-clean tr.ds-row-apagada td { opacity: .6; }
#view-grupos-faturas .ds-table-clean td .ds-text-strong,
#view-grupos-faturas .ds-table-clean td .ds-cell-sub { max-width: 220px; }
#view-contas-pagar .ds-table-clean td .ds-text-strong,
#view-contas-pagar .ds-table-clean td .ds-cell-sub { max-width: 165px; }
@media (max-width: 1440px) {
  #view-contas-pagar .ds-table-card .ds-table-clean tbody td,
  #view-contas-pagar .ds-table-card .ds-table-clean thead th { padding-left: 6px; padding-right: 6px; }
}

/* =====================================================================
   POP-UPS: visual único (cabeçalho, seções, campos, rodapé)
   Os estilos decorativos que cada pop-up tinha no HTML foram retirados.
   ===================================================================== */
.modal-overlay:not(.ds-dialog-overlay):not(.ds-modal-page) {
  background: rgba(8, 12, 20, .55);
  backdrop-filter: blur(2px);
  padding: 24px;
}
.modal-overlay:not(.ds-dialog-overlay):not(.ds-modal-page) .modal-card {
  width: min(560px, 100%);
  max-height: calc(100vh - 48px);
  display: flex; flex-direction: column;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: 12px;
  box-shadow: 0 24px 64px rgba(0, 0, 0, .35);
  overflow: hidden;
}
.modal-overlay:not(.ds-dialog-overlay):not(.ds-modal-page) .modal-card.modal-card-large { width: min(980px, 100%); }
.modal-overlay .modal-header {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 16px 20px; margin: 0;
  background: transparent; border-bottom: 1px solid var(--border-color);
}
.modal-overlay .modal-header-icon { display: none; }
.modal-overlay .modal-header h3,
.modal-overlay .modal-header .modal-title { margin: 0; font-size: 16px; font-weight: 700; color: var(--text-main); line-height: 1.3; }
.modal-overlay .modal-subtitle, .modal-overlay .modal-desc { margin: 2px 0 0; font-size: var(--fs-sm, 13px); color: var(--text-muted); font-weight: 400; }
.modal-overlay .btn-close-modal {
  margin-left: auto; flex-shrink: 0; width: 30px; height: 30px; border-radius: 8px;
  border: 0; background: transparent; color: var(--text-muted); cursor: pointer; font-size: 18px; line-height: 1;
}
.modal-overlay .btn-close-modal:hover { background: var(--bg-hover, rgba(127,127,127,.14)); color: var(--text-main); }
.modal-overlay .modal-body, .modal-overlay .modal-body-scroll { padding: 16px 20px; overflow-y: auto; flex: 1 1 auto; display: flex; flex-direction: column; gap: 14px; }
.modal-overlay .modal-footer {
  display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap;
  padding: 12px 20px; margin: 0; border-top: 1px solid var(--border-color); background: transparent;
}
.modal-overlay .modal-footer .btn { height: var(--control-h-sm, 32px); font-size: var(--fs-sm, 13px); }
.modal-overlay .modal-footer .btn-secondary { background: transparent; border: 1px solid var(--border-color); color: var(--text-main); }

/* Seções e campos */
.modal-overlay .detail-section { border: 1px solid var(--border-color); border-radius: 10px; padding: 12px 14px; background: transparent; }
.modal-overlay .detail-section-title { margin: 0 0 10px; font-size: 12px; font-weight: 600; letter-spacing: .02em; text-transform: uppercase; color: var(--text-muted); }
.modal-overlay .detail-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px 16px; }
.modal-overlay .detail-field { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.modal-overlay .detail-field-full { grid-column: 1 / -1; }
.modal-overlay .detail-label { font-size: 12px; color: var(--text-muted); font-weight: 500; }
.modal-overlay .detail-value { font-size: var(--fs-sm, 13px); color: var(--text-main); font-weight: 500; overflow-wrap: anywhere; }
.modal-overlay .form-group { display: flex; flex-direction: column; gap: 4px; margin: 0; }
.modal-overlay .form-group > label, .modal-overlay label.form-label { font-size: 12px; font-weight: 500; color: var(--text-muted); }
.modal-overlay .input-control { height: var(--control-h, 36px); font-size: var(--fs-sm, 13px); border-radius: 8px; }
.modal-overlay textarea.input-control { height: auto; min-height: 72px; }
.modal-overlay .mono-val { font-family: var(--font-mono, ui-monospace, monospace); font-size: 12.5px; }

/* Caixas de valores (bruto / retenção / líquido) */
.modal-overlay .financial-highlight-box,
.modal-overlay .fin-box-item { border: 1px solid var(--border-color); border-radius: 10px; padding: 10px 12px; background: transparent; }
.modal-overlay .fin-box-label, .modal-overlay .barcode-box-label { font-size: 12px; color: var(--text-muted); }
.modal-overlay .fin-box-val { font-size: 16px; font-weight: 700; color: var(--text-main); }
.modal-overlay .fin-box-hint { font-size: 11.5px; color: var(--text-muted); }
.modal-overlay .highlight-ret { color: var(--st-danger, #dc2626); }
.modal-overlay .highlight-liq { color: var(--st-success, #16a34a); }

/* Opções em cartão (cobrança, modo teste/oficial) */
.modal-overlay .cobranca-radio-card { border: 1px solid var(--border-color); border-radius: 10px; padding: 10px 12px; background: transparent; cursor: pointer; }
.modal-overlay .cobranca-radio-card:has(input:checked) { border-color: var(--primary, #10b981); box-shadow: inset 0 0 0 1px var(--primary, #10b981); }
.modal-overlay .ws-chip, .modal-overlay .btn-quick-venc, .modal-overlay .btn-quick-venc-lote {
  border: 1px solid var(--border-color); border-radius: 999px; background: transparent; color: var(--text-muted);
  font-size: 12px; padding: 3px 10px; cursor: pointer;
}
.modal-overlay .ws-chip.active, .modal-overlay .btn-quick-venc.active, .modal-overlay .btn-quick-venc-lote.active { color: var(--text-main); border-color: var(--text-main); }

/* Tabelas dentro dos pop-ups */
.modal-overlay .data-table thead th { font-size: 12px; font-weight: 600; color: var(--text-muted); text-transform: none; letter-spacing: 0; background: transparent; }
.modal-overlay .data-table td { font-size: var(--fs-sm, 13px); vertical-align: middle; }
.modal-overlay .nf-status-banner { border-radius: 10px; padding: 10px 12px; border: 1px solid var(--border-color); background: transparent; }
.ds-acoes-links { display: inline-flex; gap: 12px; align-items: center; }
.ds-link { background: none; border: 0; padding: 0; font: inherit; font-size: var(--fs-sm, 13px); color: var(--primary, #10b981); cursor: pointer; text-decoration: none; }
.ds-link:hover { text-decoration: underline; }
.modal-overlay .ds-cell-sub .ds-link { font-size: inherit; }
.modal-overlay .ws-table-row td { padding: 10px 10px; }
.modal-overlay .ws-table-row .ds-text-strong, .modal-overlay .ws-table-row .ds-cell-sub { max-width: 380px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Os botões do pop-up de emissão viraram links simples (o estilo antigo os desenhava como pílulas coloridas) */
.ds-link.btn-open-edit-tomador, .ds-link.btn-open-edit-imp, .ds-link.btn-open-discriminar-exames,
.ds-link.btn-restore-single-tomador, .ds-link.btn-restore-single-descritivo, .ds-link.btn-view-pdf-ws, .ds-link.btn-copy-whatsapp-ws,
.ds-link.btn-open-edit-tomador:hover, .ds-link.btn-open-discriminar-exames:hover, .ds-link.btn-restore-single-tomador:hover, .ds-link.btn-restore-single-descritivo:hover {
  background: none !important; border: 0 !important; padding: 0 !important; box-shadow: none !important;
  color: var(--primary, #10b981) !important; font-size: var(--fs-sm, 13px) !important; font-weight: 500 !important; border-radius: 0 !important;
}
.modal-overlay .ds-cell-sub .ds-link.btn-restore-single-tomador, .modal-overlay .ds-cell-sub .ds-link.btn-restore-single-descritivo { font-size: inherit !important; }
/* Pop-up de emissão: cartões de modo (teste/oficial) e área da tabela seguem o tema */
#modal-nfse-webservice #lbl-mode-teste, #modal-nfse-webservice #lbl-mode-oficial {
  background: transparent !important; color: var(--text-main) !important;
  border: 1px solid var(--border-color) !important; border-radius: 10px !important; padding: 10px 12px !important; cursor: pointer;
}
#modal-nfse-webservice #lbl-mode-teste:has(input:checked) { border-color: var(--primary, #10b981) !important; box-shadow: inset 0 0 0 1px var(--primary, #10b981); }
#modal-nfse-webservice #lbl-mode-oficial:has(input:checked) { border-color: var(--st-warning, #d97706) !important; box-shadow: inset 0 0 0 1px var(--st-warning, #d97706); }
#modal-nfse-webservice #lbl-mode-teste *, #modal-nfse-webservice #lbl-mode-oficial * { color: inherit !important; }
#modal-nfse-webservice #lbl-mode-teste small, #modal-nfse-webservice #lbl-mode-oficial small,
#modal-nfse-webservice #lbl-mode-teste span + span, #modal-nfse-webservice #lbl-mode-oficial span + span { color: var(--text-muted) !important; }
.modal-overlay .ws-table-wrapper { background: transparent !important; border: 1px solid var(--border-color); border-radius: 10px; }
.modal-overlay .btn-warning { background: transparent; border: 1px solid var(--st-warning, #d97706); color: var(--st-warning, #d97706); }
#modal-nfse-webservice #lbl-mode-teste div > span, #modal-nfse-webservice #lbl-mode-oficial div > span { color: var(--text-muted) !important; font-size: 12px; }
/* Opções em cartão coloridas pelo código (regime tributário): seguem o tema */
#modal-editar-impostos-ws label[id^="lbl-regime-"] {
  background: transparent !important; color: var(--text-main) !important;
  border: 1px solid var(--border-color) !important; border-radius: 10px !important; cursor: pointer;
}
#modal-editar-impostos-ws label[id^="lbl-regime-"] * { color: inherit !important; background: transparent !important; }
#modal-editar-impostos-ws label[id^="lbl-regime-"]:has(input:checked) { border-color: var(--primary, #10b981) !important; box-shadow: inset 0 0 0 1px var(--primary, #10b981); }
#modal-grupo-fatura #btn-fechar-preview { background: transparent !important; border: 1px solid var(--border-color) !important; color: var(--text-main) !important; }
/* Textos de ajuda dentro dos pop-ups: pequenos e discretos (perderam o tamanho junto com o estilo inline) */
.modal-overlay .modal-body { font-size: var(--fs-sm, 13px); color: var(--text-main); }
.modal-overlay .form-group > span, .modal-overlay .form-group > p, .modal-overlay .form-group > small,
.modal-overlay .modal-body p, .modal-overlay .modal-body small { font-size: 12px; color: var(--text-muted); margin: 0; line-height: 1.45; }
.modal-overlay .form-group label span { font-size: var(--fs-sm, 13px); color: var(--text-main); }
.modal-overlay .modal-body strong { font-weight: 600; }
.modal-overlay .detail-value strong, .modal-overlay .fin-box-val { color: var(--text-main); }

/* ===================== BPA (SIA/SUS) ===================== */
.ds-bpa-grid { display: grid; grid-template-columns: minmax(280px, 380px) 1fr; gap: var(--sp-3, 12px); align-items: stretch; }
.ds-bpa-grid-igual { grid-template-columns: 1fr 1fr; }
@media (max-width: 900px) { .ds-bpa-grid, .ds-bpa-grid-igual { grid-template-columns: 1fr; } }
.ds-bpa-arquivo { display: flex; flex-direction: column; gap: var(--sp-3, 12px); }
.ds-bpa-arquivo #btn-bpa-processar { width: 100%; justify-content: center; }
.ds-dropzone { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; text-align: center; padding: 24px 16px; border: 1.5px dashed var(--border-color); border-radius: var(--radius-md, 8px); color: var(--text-muted); cursor: pointer; transition: border-color .15s, background .15s; }
.ds-dropzone:hover, .ds-dropzone:focus-visible, .ds-dropzone.is-over { border-color: var(--accent-primary); background: color-mix(in srgb, var(--accent-primary) 6%, transparent); outline: none; }
.ds-dropzone .ds-text-strong { color: var(--text-main); }
.ds-dropzone-arquivo { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: center; }
.ds-bpa-opcoes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 20px; margin-top: var(--sp-3, 12px); }
@media (max-width: 1100px) { .ds-bpa-opcoes { grid-template-columns: 1fr; } }
.ds-bpa-opcao { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; font-size: var(--fs-sm, 13px); }
.ds-bpa-opcao input { width: 16px; height: 16px; margin-top: 2px; accent-color: var(--accent-primary); flex-shrink: 0; }
.ds-bpa-opcao > span { display: flex; flex-direction: column; min-width: 0; }
.ds-bpa-opcao input:disabled + span { opacity: .75; }
.ds-bpa-scroll { max-height: 520px; overflow-y: auto; }
#view-bpa .ds-filterbar .ds-toolbar-group { display: inline-flex; gap: 6px; }
#view-bpa .ds-table-clean td .ds-text-strong { max-width: 240px; }
#view-bpa .ds-bpa-antes { color: var(--st-danger, #dc2626); }
#view-bpa .ds-bpa-depois { color: var(--text-main); font-weight: 600; }
#view-bpa .ds-bpa-valor { font-family: var(--font-mono, monospace); font-size: 12px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ds-bpa-base-acoes .ds-acoes-links { display: inline-flex; gap: 6px; margin-top: 4px; }
.ds-bpa-lista { max-height: 260px; overflow-y: auto; border: 1px solid var(--border-color); border-radius: var(--radius-md, 8px); }
.ds-bpa-lista:empty { display: none; }
.ds-bpa-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 12px; font-size: var(--fs-sm, 13px); }
.ds-bpa-item + .ds-bpa-item { border-top: 1px solid var(--border-color); }
.ds-bpa-item .ds-num { font-family: var(--font-mono, monospace); }
.ds-bpa-item-vazio { padding: 10px 12px; font-size: var(--fs-sm, 13px); color: var(--text-muted); }
.ds-bpa-cid { width: 80px; text-transform: uppercase; }
#view-bpa .ds-card .ds-filter-row .ds-field-grow { flex: 1 1 110px; }

/* Monitores grandes: as colunas de texto mostram mais antes de cortar com "..." */
@media (min-width: 1680px) {
  .ds-erp .ds-table-clean td .ds-text-strong,
  .ds-erp .ds-table-clean td .ds-cell-sub { max-width: 380px !important; }
}
@media (min-width: 2200px) {
  .ds-erp .ds-table-clean td .ds-text-strong,
  .ds-erp .ds-table-clean td .ds-cell-sub { max-width: 520px !important; }
}

/* Histórico da Tipagem (tela não-ERP): nomes/colunas em uma linha com reticências */
#view-tipagem .ds-table-clean td .ds-text-strong,
#view-tipagem .ds-table-clean td .ds-cell-sub { display: block; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#view-tipagem .ds-table-clean td.ds-num, #view-tipagem .ds-table-clean td.ds-nowrap { white-space: nowrap; }
@media (max-width: 1440px) {
  #view-tipagem .ds-table-card .ds-table-clean tbody td,
  #view-tipagem .ds-table-card .ds-table-clean thead th { padding-left: 6px; padding-right: 6px; }
  #view-tipagem .ds-table-clean td .ds-text-strong,
  #view-tipagem .ds-table-clean td .ds-cell-sub { max-width: 130px; }
}

/* ================= Conciliação bancária (ui-conciliacao.js) — modelo extrato ↔ lançamento ================= */
#view-conciliacao .cz-resumo { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--border-color); border-radius: var(--radius-md, 8px); background: var(--bg-card); overflow: hidden; }
#view-conciliacao .cz-resumo > div { padding: 12px 16px; border-right: 1px solid var(--border-color); display: flex; flex-direction: column; gap: 2px; min-width: 0; }
#view-conciliacao .cz-resumo > div:last-child { border-right: 0; }
#view-conciliacao .cz-resumo .cz-rot { font-size: var(--fs-xs, 11px); text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); }
#view-conciliacao .cz-resumo .cz-num { font-size: 20px; font-weight: 700; color: var(--text-main); font-variant-numeric: tabular-nums; }
#view-conciliacao .cz-resumo .cz-sub { font-size: var(--fs-xs, 11px); color: var(--text-muted); }
#view-conciliacao .cz-resumo .is-fecha { color: var(--st-success); }
#view-conciliacao .cz-resumo .is-difere { color: var(--st-danger); }
#view-conciliacao .cz-barra { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
#view-conciliacao .cz-cont { display: inline-block; min-width: 20px; padding: 0 6px; margin-left: 4px; border-radius: 999px; background: var(--st-neutral-bg); color: var(--text-muted); font-size: var(--fs-xs, 11px); font-weight: 600; text-align: center; }
#view-conciliacao .segmented-btn.active .cz-cont { background: var(--accent-primary); color: #fff; }
#view-conciliacao .cz-filtros input[type="date"] { max-width: 150px; }
#view-conciliacao .cz-cabecalho { display: grid; grid-template-columns: minmax(0, 1fr) 36px minmax(0, 1.35fr); padding: 0 2px; font-size: var(--fs-xs, 11px); text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); font-weight: 600; }
#view-conciliacao .cz-lista { display: flex; flex-direction: column; gap: 8px; }
/* dia */
#view-conciliacao .cz-dia { display: flex; align-items: center; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; margin-top: 10px; padding: 8px 12px; border-radius: var(--radius-md, 8px); background: var(--st-neutral-bg); font-size: var(--fs-sm, 13px); }
#view-conciliacao .cz-dia:first-child { margin-top: 0; }
#view-conciliacao .cz-dia-data { font-weight: 700; color: var(--text-main); }
#view-conciliacao .cz-dia-data small { font-weight: 400; color: var(--text-muted); margin-left: 6px; }
#view-conciliacao .cz-dia-saldos { display: flex; gap: 6px 18px; flex-wrap: wrap; color: var(--text-muted); font-variant-numeric: tabular-nums; }
#view-conciliacao .cz-dia-saldos b { color: var(--text-main); font-weight: 600; }
/* item = extrato ↔ lançamento */
#view-conciliacao .cz-item { display: grid; grid-template-columns: minmax(0, 1fr) 36px minmax(0, 1.35fr); align-items: stretch; }
#view-conciliacao .cz-elo { display: flex; align-items: center; justify-content: center; color: var(--text-muted); }
#view-conciliacao .cz-elo svg { width: 18px; height: 18px; }
#view-conciliacao .cz-card { border: 1px solid var(--border-color); border-radius: var(--radius-md, 8px); background: var(--bg-card); padding: 10px 14px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
#view-conciliacao .cz-banco { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; align-content: start; }
#view-conciliacao .cz-pilha { display: flex; flex-direction: column; gap: 6px; }
#view-conciliacao .cz-desc { font-weight: 600; color: var(--text-main); overflow-wrap: anywhere; }
#view-conciliacao .cz-meta { font-size: var(--fs-xs, 11px); color: var(--text-muted); }
#view-conciliacao .cz-valor { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
#view-conciliacao .cz-valor.is-entrada { color: var(--st-success); }
#view-conciliacao .cz-valor.is-saida { color: var(--st-danger); }
#view-conciliacao .cz-topo { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
#view-conciliacao .cz-titulo { font-size: var(--fs-xs, 11px); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
#view-conciliacao .cz-campos { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px 14px; margin: 0; }
#view-conciliacao .cz-campos > div { min-width: 0; }
#view-conciliacao .cz-campos dt { font-size: var(--fs-xs, 11px); color: var(--text-muted); }
#view-conciliacao .cz-campos dd { margin: 0; font-size: var(--fs-sm, 13px); color: var(--text-main); overflow-wrap: anywhere; }
#view-conciliacao .cz-campos .cz-largo { grid-column: 1 / -1; }
#view-conciliacao .cz-falta { color: var(--st-warning); font-weight: 600; }
#view-conciliacao .cz-acoes { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
#view-conciliacao .cz-acoes .btn { height: var(--control-h-sm, 30px); padding: 0 12px; font-size: var(--fs-sm, 13px); }
#view-conciliacao .cz-aviso { font-size: var(--fs-sm, 13px); }
/* estados do cartão do Bitlab */
#view-conciliacao .cz-sis.is-ok { border-color: color-mix(in srgb, var(--st-success) 45%, var(--border-color)); background: color-mix(in srgb, var(--st-success) 5%, var(--bg-card)); }
#view-conciliacao .cz-sis.is-ok .cz-titulo { color: var(--st-success); }
#view-conciliacao .cz-sis.is-sug { border-color: var(--st-info); border-style: dashed; }
#view-conciliacao .cz-sis.is-sug .cz-titulo { color: var(--st-info); }
#view-conciliacao .cz-sis.is-aceito { border-color: var(--st-success); box-shadow: inset 3px 0 0 var(--st-success); }
#view-conciliacao .cz-sis.is-aceito .cz-titulo { color: var(--st-success); }
#view-conciliacao .cz-sis.is-acao { border-color: var(--st-warning); box-shadow: inset 3px 0 0 var(--st-warning); }
#view-conciliacao .cz-sis.is-acao .cz-titulo { color: var(--st-warning); }
#view-conciliacao .cz-sis.is-dup { border-color: var(--st-danger); box-shadow: inset 3px 0 0 var(--st-danger); }
#view-conciliacao .cz-sis.is-dup .cz-titulo { color: var(--st-danger); }
#view-conciliacao .cz-sis.is-ign .cz-titulo { color: var(--text-muted); }
#view-conciliacao .cz-item.is-conciliado { opacity: .6; }
#view-conciliacao .cz-item.is-conciliado:hover { opacity: 1; }
#view-conciliacao .cz-item.is-ignorado { opacity: .55; }
#view-conciliacao .cz-item.is-ignorado .cz-desc { text-decoration: line-through; }
#view-conciliacao .cz-vazio { border: 1.5px dashed var(--border-color); background: transparent; color: var(--text-muted); justify-content: center; font-style: italic; }
#view-conciliacao .cz-item.is-bitlab .cz-sis { background: var(--st-neutral-bg); }
#view-conciliacao .cz-grupo { font-size: var(--fs-xs, 11px); font-weight: 700; color: var(--st-purple, var(--st-info)); background: var(--st-purple-bg, var(--st-info-bg)); border-radius: 999px; padding: 1px 8px; }
#view-conciliacao .cz-item.is-grupo .cz-elo { color: var(--st-purple, var(--st-info)); }
#view-conciliacao .cz-chips { display: flex; flex-wrap: wrap; gap: 6px; }
#view-conciliacao .cz-chip { border: 1px solid var(--border-color); background: var(--bg-card); color: var(--text-main); border-radius: 999px; padding: 3px 10px; font-size: var(--fs-sm, 13px); cursor: pointer; text-align: left; }
#view-conciliacao .cz-chip:hover { border-color: var(--accent-primary); background: var(--bg-card-hover, var(--st-neutral-bg)); }
/* formulário inline */
#view-conciliacao .cz-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px 10px; }
#view-conciliacao .cz-form .cz-largo { grid-column: span 2; }
#view-conciliacao .cz-form .cz-inteiro { grid-column: 1 / -1; }
#view-conciliacao .cz-form .ds-field { margin: 0; }
#view-conciliacao .cz-form .is-faltando .ds-control, #view-conciliacao .cz-form .is-faltando input { border-color: var(--st-warning); }
#view-conciliacao details.cz-registros summary { cursor: pointer; font-size: var(--fs-xs, 11px); color: var(--text-muted); }
#view-conciliacao details.cz-registros pre { white-space: pre-wrap; font-size: 11px; max-height: 260px; overflow: auto; }
/* seletor com busca (cliente/fornecedor) */
#view-conciliacao .conc-busca { position: relative; }
#view-conciliacao .conc-busca-lista { position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 2px); max-height: 260px; overflow-y: auto; background: var(--bg-card); border: 1px solid var(--border-color); border-radius: var(--radius-md, 8px); box-shadow: 0 8px 24px rgba(0,0,0,.14); }
#view-conciliacao .conc-busca-op { display: flex; gap: 8px; align-items: baseline; padding: 7px 10px; cursor: pointer; font-size: var(--fs-sm, 13px); color: var(--text-main); }
#view-conciliacao .conc-busca-op .conc-busca-cd { color: var(--text-muted); font-family: var(--font-mono, monospace); font-size: var(--fs-xs, 11px); min-width: 34px; }
#view-conciliacao .conc-busca-op.is-ativo, #view-conciliacao .conc-busca-op:hover { background: var(--bg-card-hover, var(--st-neutral-bg)); }
#view-conciliacao .conc-busca-op mark { background: transparent; color: var(--accent-primary); font-weight: 700; }
#view-conciliacao .conc-busca-vazio { padding: 10px; color: var(--text-muted); font-size: var(--fs-sm, 13px); }
@media (max-width: 900px) {
  #view-conciliacao .cz-resumo { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #view-conciliacao .cz-resumo > div:nth-child(2) { border-right: 0; }
  #view-conciliacao .cz-resumo > div:nth-child(-n+2) { border-bottom: 1px solid var(--border-color); }
  #view-conciliacao .cz-cabecalho { display: none; }
  #view-conciliacao .cz-item { grid-template-columns: minmax(0, 1fr); }
  #view-conciliacao .cz-elo { height: 22px; transform: rotate(90deg); }
  #view-conciliacao .cz-form .cz-largo { grid-column: 1 / -1; }
}
/* Conciliação: cartões das contas bancárias (topo do painel) */
#view-conciliacao .cz-contas { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
#view-conciliacao .cz-contas:empty { display: none; }
#view-conciliacao .cz-conta { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 12px 14px; text-align: left; font: inherit; color: var(--text-main); background: var(--bg-card); border: 1px solid var(--border-color); border-radius: var(--radius-md, 8px); cursor: pointer; min-width: 0; }
#view-conciliacao .cz-conta:hover { border-color: var(--accent-primary); }
#view-conciliacao .cz-conta.is-ativa { border-color: var(--accent-primary); box-shadow: inset 0 0 0 1px var(--accent-primary); }
#view-conciliacao .cz-conta-nome { font-size: var(--fs-xs, 11px); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
#view-conciliacao .cz-conta-saldo { font-size: 20px; font-weight: 700; font-variant-numeric: tabular-nums; }
#view-conciliacao .cz-conta-sit { font-size: var(--fs-sm, 13px); font-weight: 600; margin-top: 4px; }
#view-conciliacao .cz-conta-sit.is-ok { color: var(--st-success); }
#view-conciliacao .cz-conta-sit.is-erro { color: var(--st-danger); }
#view-conciliacao .cz-conta-sit.is-neutro { color: var(--text-muted); }
#view-conciliacao .cz-topo-filtros { flex-wrap: wrap; align-items: flex-end; }
#view-conciliacao .cz-topo-filtros .ds-date-range { display: inline-flex; gap: 8px; }
#view-conciliacao .cz-topo-filtros .ds-date-range[hidden] { display: none; }
#view-conciliacao .cz-item.is-sem-extrato { opacity: .7; }

/* ===== Verificação em dois passos ===== */
.login-form[hidden] { display: none !important; }
.login-2fa-ajuda { margin: 0; font-size: 0.9rem; color: var(--text-muted); line-height: 1.45; }
.login-input-codigo { font-size: 1.4rem; letter-spacing: 0.35em; text-align: center; font-variant-numeric: tabular-nums; }
.login-link-voltar { background: none; border: 0; color: var(--text-muted); font-size: 0.85rem; cursor: pointer; text-decoration: underline; padding: 4px; }
.login-link-voltar:hover { color: var(--text-main); }
#btn-topbar-2fa:hover { background: rgba(16, 185, 129, 0.12); color: var(--accent-primary); border-color: rgba(16, 185, 129, 0.3); }
#btn-topbar-2fa.is-ativo { color: var(--accent-primary); }
#btn-topbar-2fa.is-pendente { color: var(--accent-amber); }
.ds-2fa-chave { font-family: ui-monospace, Consolas, monospace; font-size: 1.05rem; letter-spacing: 0.08em; word-break: break-all; }

.exame-item-row.exame-dup { background: rgba(245, 158, 11, 0.10); }
.exame-item-row .exame-dup-badge[hidden] { display: none; }
.fatiador-dup-aviso[hidden] { display: none; }

/* ===== Regras de NFS-e e boleto (ui-regras.js) ===== */
.rg-intro { max-width: 900px; }
.rg-grupo .ds-card-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.rg-status { margin-top: 6px; }
.rg-futura { margin-top: 4px; font-size: 0.82rem; color: var(--accent-amber); }
.rg-corpo { padding: 4px 16px 12px; }
.rg-secao { margin-top: 12px; }
.rg-secao-titulo { font-size: 0.78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-muted); margin-bottom: 4px; }
.rg-tabela { width: 100%; }
.rg-tabela td { padding: 6px 8px; border-bottom: 1px solid var(--border-color); }
.rg-rotulo { width: 45%; }
.rg-valor { font-variant-numeric: tabular-nums; }
.rg-exemplo { margin-top: 8px; padding: 8px 10px; border-radius: 8px; background: var(--bg-input); font-size: 0.85rem; }
.rg-campos { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px 14px; }
.rg-rodape-form { margin-top: 14px; grid-template-columns: 200px 1fr; }
.rg-erros { margin-top: 10px; color: var(--accent-danger); font-size: 0.85rem; }
.rg-erros[hidden] { display: none; }
.rg-acoes { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.rg-historico { padding: 0 16px 12px; }
.rg-historico summary { cursor: pointer; font-weight: 600; padding: 8px 0; }
.rg-historico table { width: 100%; }
.rg-historico td, .rg-historico th { padding: 6px 8px; vertical-align: top; text-align: left; }
@media (max-width: 640px) { .rg-rodape-form { grid-template-columns: 1fr; } .rg-grupo .ds-card-header { flex-direction: column; } }

/* Fatiador: filtro mudou e ainda não buscou */
.ds-busca-pendente { box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.35); animation: dsPulsoBusca 1.6s ease-in-out infinite; }
@keyframes dsPulsoBusca { 50% { box-shadow: 0 0 0 6px rgba(16, 185, 129, 0.12); } }
@media (prefers-reduced-motion: reduce) { .ds-busca-pendente { animation: none; } }
