/* ============================================================================
   MODO ESCURO — Rodada 2 (2026-06-12)
   Fundo/fontes refinados + seleção de unidades + sub-páginas do master +
   módulo Financeiro (fin-*) + flags de regulação. Tudo em body.theme-dark.
   ========================================================================== */

/* ---- Paleta base refinada: fundo levemente mais frio/profundo, com mais
        separação entre camadas, e fontes um pouco mais nítidas. Re-declara as
        variáveis (este bloco vem depois, então prevalece). ---- */
body.theme-dark {
  --bg-body: #14160e;
  --bg-panel: #202514;
  --surface: #232818;
  --surface-2: #2b311f;
  --surface-3: #363d26;
  --card-bg: #2b321f;
  --field-bg: #2f361f;
  --field-border: #444e32;
  --border: #373e2a;
  --border-strong: #495331;
  --text-main: #e7f0d9;
  --text-muted: #adba96;
  --text-light: #8f977c;
}


/* ---- Sub-páginas do painel master ---- */
body.theme-dark .master-admin-form,
body.theme-dark .master-access-risk,
body.theme-dark .master-unit-manager,
body.theme-dark .master-connections-table-card,
body.theme-dark .master-connection-kpi,
body.theme-dark .master-analytics-insights,
body.theme-dark .master-attention-item {
  background: var(--card-bg) !important;
  border-color: var(--border) !important;
  color: var(--text-main) !important;
}
body.theme-dark .master-attention-item.is-critical {
  background: rgba(220, 76, 70, 0.12) !important;
  border-color: rgba(220, 76, 70, 0.32) !important;
}
body.theme-dark .master-attention-item.is-warn {
  background: rgba(197, 173, 122, 0.12) !important;
  border-color: rgba(197, 173, 122, 0.32) !important;
}
body.theme-dark .master-connection-status.is-online {
  background: rgba(52, 168, 102, 0.18) !important;
  color: #8fe0ad !important;
  border-color: rgba(52, 168, 102, 0.32) !important;
}
/* Cabeçalhos de tabela dentro do master */
body.theme-dark #view-master table th,
body.theme-dark .master-connections-table-card th {
  background: var(--surface-2) !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}

/* ---- Flags de procedimento/auditoria (regulação) ---- */
body.theme-dark .reg-proc-flag {
  background: var(--surface-3) !important;
  color: var(--text-muted) !important;
  border-color: var(--border-strong) !important;
}
body.theme-dark .reg-proc-flag.reg-unit-all {
  background: rgba(119,129,101,0.18) !important;
  color: var(--primary-light) !important;
  border-color: rgba(119,129,101,0.32) !important;
}
body.theme-dark .reg-cat-iconbtn {
  background: var(--surface-2) !important;
  color: var(--text-muted) !important;
  border-color: var(--border) !important;
}

/* ---- Alça do menu da intranet ---- */
body.theme-dark .intranet-menu-handle {
  background: var(--surface-2) !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}

/* ============================================================================
   MÓDULO FINANCEIRO (fin-*) — não tinha nenhuma regra de modo escuro
   ========================================================================== */
body.theme-dark .fin-root,
body.theme-dark .fin-page,
body.theme-dark .fin-main,
body.theme-dark .fin-side {
  background: var(--bg-body) !important;
  color: var(--text-main) !important;
}
body.theme-dark .fin-card,
body.theme-dark .fin-table-wrap,
body.theme-dark .fin-kpis,
body.theme-dark .fin-head,
body.theme-dark .fin-newcat,
body.theme-dark .fin-search,
body.theme-dark .fin-side-foot,
body.theme-dark .fin-pie-wrap,
body.theme-dark .fin-legend {
  background: var(--card-bg) !important;
  border-color: var(--border) !important;
  color: var(--text-main) !important;
}
body.theme-dark :is(.fin-root, .fin-page, .fin-card, .fin-head, .fin-side, .fin-table-wrap)
  :is(h1,h2,h3,h4,h5,h6,p,strong,b,span,div,label,li,td,th,a) {
  color: var(--text-main);
}
body.theme-dark .fin-muted,
body.theme-dark .fin-sub { color: var(--text-muted) !important; }
body.theme-dark .fin-card-title { color: var(--text-main) !important; }

/* Campos e selects do financeiro */
body.theme-dark .fin-field,
body.theme-dark .fin-select,
body.theme-dark .fin-search input {
  background: var(--field-bg) !important;
  color: var(--text-main) !important;
  border-color: var(--field-border) !important;
}
body.theme-dark .fin-field::placeholder { color: var(--text-light) !important; }

/* Botões do financeiro */
body.theme-dark .fin-btn,
body.theme-dark .fin-icbtn {
  background: var(--surface-2) !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}
body.theme-dark .fin-btn:hover,
body.theme-dark .fin-icbtn:hover { background: var(--surface-3) !important; }
body.theme-dark .fin-btn.is-primary,
body.theme-dark .fin-btn.fin-btn-primary,
body.theme-dark .fin-btn[data-variant="primary"] {
  background: var(--primary) !important;
  border-color: var(--primary-dark) !important;
  color: #fff !important;
}

/* Navegação lateral do financeiro */
body.theme-dark .fin-nav-item {
  background: transparent !important;
  color: var(--text-muted) !important;
}
body.theme-dark .fin-nav-item:hover { background: var(--surface-2) !important; color: var(--text-main) !important; }
body.theme-dark .fin-nav-item.is-active,
body.theme-dark .fin-nav-item.active {
  background: var(--primary-muted) !important;
  color: var(--primary-light) !important;
}

/* Tabela do financeiro */
body.theme-dark .fin-table th {
  background: var(--surface-2) !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}
body.theme-dark .fin-table td { border-color: var(--border) !important; color: var(--text-main) !important; }
body.theme-dark .fin-table tr:hover td { background: var(--surface-2) !important; }

/* Modal do financeiro */
body.theme-dark .fin-modal {
  background: var(--surface) !important;
  border-color: var(--border-strong) !important;
  color: var(--text-main) !important;
}
body.theme-dark .fin-modal-head,
body.theme-dark .fin-modal-foot { border-color: var(--border) !important; }

/* Badges/realces do financeiro */
body.theme-dark .fin-badge {
  background: var(--surface-3) !important;
  color: var(--text-main) !important;
  border-color: var(--border-strong) !important;
}
body.theme-dark .fin-overdue {
  background: rgba(220, 76, 70, 0.16) !important;
  color: #f2a8a3 !important;
}


/* ============================================================================
   MODO ESCURO — Rodada 3 (2026-06-12): cobertura ESTRUTURAL ampla
   Ataca por padrão (tabelas, cards, texto em cards, menus, abas, chips) para
   cobrir todos os painéis — inclusive os não visitados individualmente.
   Tudo escopado em body.theme-dark.
   ========================================================================== */

/* ---------- TABELAS (genérico forte: pega qualquer painel) ---------- */
body.theme-dark table { background: var(--card-bg) !important; color: var(--text-main) !important; border-color: var(--border) !important; }
body.theme-dark thead th,
body.theme-dark table th {
  background: var(--surface-2) !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}
body.theme-dark table td {
  background: transparent !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}
body.theme-dark tbody tr:nth-child(even) td { background: rgba(255,255,255,0.025) !important; }
body.theme-dark tbody tr:hover td { background: var(--surface-2) !important; }

/* ---------- CARDS / TICKETS / COLUNAS / CAIXAS (por padrão de nome) ---------- */
body.theme-dark :is(
  [class*="-card"], [class*="-ticket"], [class*="-column"], [class*="-box"],
  [class*="-tile"], [class*="-kpi"], [class*="-metric"], [class*="-insight"],
  [class*="-queue-item"], [class*="-panel-card"], [class*="-list-card"]
) {
  background: var(--card-bg) !important;
  border-color: var(--border) !important;
}

/* Texto legível dentro de qualquer container tipo card/linha/coluna/ticket */
body.theme-dark :is(
  [class*="-card"], [class*="-ticket"], [class*="-column"], [class*="-box"],
  [class*="-tile"], [class*="-kpi"], [class*="-metric"], [class*="-insight"],
  [class*="-queue-item"], [class*="-row"], [class*="-cell"]
) :is(h1,h2,h3,h4,h5,h6,p,strong,b,span,div,label,li,td,th,a,small) {
  color: var(--text-main);
}
body.theme-dark :is(
  [class*="-card"], [class*="-ticket"], [class*="-column"], [class*="-box"],
  [class*="-tile"], [class*="-kpi"], [class*="-metric"], [class*="-queue-item"], [class*="-row"]
) :is(.small,.meta,.sub,.muted,[class*="-cpf"],[class*="-sub"],[class*="-note"],[class*="-meta"],[class*="-time"],[class*="-date"]) {
  color: var(--text-muted) !important;
}

/* ---------- MENUS LATERAIS (intranet e variações) ---------- */
body.theme-dark .intranet-menu-item,
body.theme-dark .intranet-nav-item {
  background: transparent !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}
body.theme-dark :is(.intranet-menu-item, .intranet-nav-item) :is(span,div,strong,small,p) { color: inherit; }
body.theme-dark :is(.intranet-menu-item, .intranet-nav-item) :is(.small,.meta,.sub) { color: var(--text-muted) !important; }
body.theme-dark :is(.intranet-menu-item, .intranet-nav-item):hover {
  background: var(--surface-2) !important;
}
body.theme-dark :is(.intranet-menu-item, .intranet-nav-item).is-active,
body.theme-dark :is(.intranet-menu-item, .intranet-nav-item).active {
  background: var(--primary-muted) !important;
  color: var(--primary-light) !important;
  border-color: rgba(119,129,101,0.4) !important;
}
body.theme-dark :is(.intranet-menu-item, .intranet-nav-item).is-active :is(span,div,strong,small) { color: var(--primary-light) !important; }

/* ---------- ABAS E CHIPS (admin, transporte, regulação, etc.) ---------- */
body.theme-dark :is(.adm-tabs, .nav-tabs, .op-tr-tabs) {
  background: transparent !important;
  border-color: var(--border) !important;
}
body.theme-dark :is(.adm-tab, .op-tr-tab, .tab-btn, .reg-task-filter-chip, .reg-filters-toggle, .op-tr-tab) {
  background: var(--surface-2) !important;
  color: var(--text-muted) !important;
  border-color: var(--border) !important;
}
body.theme-dark :is(.adm-tab, .op-tr-tab, .tab-btn, .reg-task-filter-chip).is-active,
body.theme-dark :is(.adm-tab, .op-tr-tab, .tab-btn, .reg-task-filter-chip).active,
body.theme-dark :is(.adm-tab, .op-tr-tab, .reg-filters-toggle).open {
  background: var(--primary-muted) !important;
  color: var(--primary-light) !important;
  border-color: rgba(119,129,101,0.4) !important;
}
body.theme-dark .adm-session-timer {
  background: var(--surface-2) !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}

/* ---------- ÍCONES/CHIPS específicos que sobraram claros ---------- */
body.theme-dark .reg-metric-icon,
body.theme-dark .dash-kpi-ic,
body.theme-dark [class*="-metric-icon"],
body.theme-dark [class*="-icon-chip"] {
  background: var(--primary-muted) !important;
  color: var(--primary-light) !important;
}

/* ---------- STATUS de cards (mantém o hue, fundo escuro tintado) ---------- */
body.theme-dark :is([class*="status-served"], [class*="is-served"]) {
  background: rgba(52,168,102,0.14) !important; border-color: rgba(52,168,102,0.30) !important;
}
body.theme-dark :is([class*="status-waiting"], [class*="is-waiting"], [class*="is-pending"]) {
  background: rgba(197,173,122,0.13) !important; border-color: rgba(197,173,122,0.30) !important;
}
body.theme-dark :is([class*="status-called"], [class*="is-called"], [class*="is-critical"]) {
  background: rgba(220,76,70,0.14) !important; border-color: rgba(220,76,70,0.30) !important;
}

/* ---------- Colunas de Kanban: leve diferenciação ---------- */
body.theme-dark .reg-kanban-column {
  background: var(--surface) !important;
  border-color: var(--border) !important;
}
body.theme-dark .reg-task-chip {
  background: var(--surface-3) !important;
  color: var(--text-main) !important;
  border-color: var(--border-strong) !important;
}
body.theme-dark .reg-hero-insight {
  background: var(--card-bg) !important;
  border-color: var(--border) !important;
  color: var(--text-main) !important;
}

/* ============================================================================
   MODO ESCURO — Rodada 4 (2026-06-12): vencer regras scoped por #id
   Regras bespoke usam #view-xxx (especificidade alta). Aqui o texto dos cards
   e os chips/badges/botões claros recebem !important para ficarem legíveis.
   ========================================================================== */

/* ---- Texto dentro de cards/linhas: força claro (vence #view-id), exceto chips ---- */
body.theme-dark :is(
  [class*="-card"], [class*="-ticket"], [class*="-column"], [class*="-box"],
  [class*="-tile"], [class*="-kpi"], [class*="-metric"], [class*="-insight"],
  [class*="-queue-item"], [class*="-row"], [class*="-cell"], [class*="-item"]
) :is(
  h1,h2,h3,h4,h5,h6,p,strong,b,label,a,small,
  div:not([class*="-status"]):not([class*="-badge"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-tag"]):not([class*="-flag"]),
  span:not([class*="-status"]):not([class*="-badge"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-tag"]):not([class*="-flag"])
) {
  color: var(--text-main) !important;
}
/* Subtítulos/meta continuam mais apagados */
body.theme-dark :is(
  [class*="-card"], [class*="-ticket"], [class*="-column"], [class*="-box"], [class*="-row"], [class*="-item"]
) :is([class*="-cpf"], [class*="-sub"], [class*="-note"], [class*="-meta"], [class*="-time"], [class*="-date"], .small, .meta, .muted) {
  color: var(--text-muted) !important;
}

/* ---- Chips / badges / pílulas de status: estilo neutro legível ---- */
body.theme-dark :is(
  [class*="-status"], [class*="-priority"], [class*="-dept"], [class*="-badge"],
  [class*="-chip"], [class*="-tag"], [class*="-pill"], [class*="-flag"]
) {
  background: var(--surface-3) !important;
  color: var(--text-main) !important;
  border-color: var(--border-strong) !important;
}

/* ---- Botões "outline"/claros bespoke ---- */
body.theme-dark :is(
  [class*="-btn-admin"], [class*="-btn-intranet"], .issued-btn-admin, .issued-btn-intranet,
  .btn.btn-light, .btn-outline
) {
  background: var(--surface-2) !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}

/* ---- Semânticos por ÚLTIMO: reaplica tom de cor onde faz sentido ---- */
body.theme-dark :is([class*="success"], [class*="-online"], [class*="is-served"], [class*="status-served"]):is([class*="-status"],[class*="-badge"],[class*="-chip"],[class*="-pill"],[class*="-flag"],[class*="-tag"]) {
  background: rgba(52,168,102,0.16) !important; color: #8fe0ad !important; border-color: rgba(52,168,102,0.32) !important;
}
body.theme-dark :is([class*="danger"], [class*="error"], [class*="is-critical"], [class*="status-called"], [class*="urgent"]):is([class*="-status"],[class*="-badge"],[class*="-chip"],[class*="-pill"],[class*="-flag"],[class*="-tag"],[class*="-priority"]) {
  background: rgba(220,76,70,0.16) !important; color: #f2a8a3 !important; border-color: rgba(220,76,70,0.32) !important;
}
body.theme-dark :is([class*="warning"], [class*="is-waiting"], [class*="status-waiting"], [class*="pending"], [class*="is-warn"]):is([class*="-status"],[class*="-badge"],[class*="-chip"],[class*="-pill"],[class*="-flag"],[class*="-tag"],[class*="-priority"]) {
  background: rgba(197,173,122,0.16) !important; color: var(--accent-light) !important; border-color: rgba(197,173,122,0.32) !important;
}

/* ---- Realce "em atendimento agora" (cartão de chamada ativa): tom escuro âmbar ---- */
body.theme-dark :is(.op-current-call, [class*="current-call"], [class*="-now-serving"], [class*="-em-atendimento"]) {
  background: linear-gradient(135deg, rgba(197,173,122,0.18), rgba(197,173,122,0.08)) !important;
  border-color: rgba(197,173,122,0.40) !important;
  color: var(--text-main) !important;
}

/* ============================================================================
   MODO ESCURO — Rodada 5 (2026-06-12): painel de Atendimento (view-operator)
   As regras claras são scoped por #view-operator + !important (especificidade
   de ID). Só dá pra vencer usando o mesmo #id.
   ========================================================================== */
body.theme-dark #view-operator .card,
body.theme-dark #view-operator .op-queue-ticket,
body.theme-dark #view-operator .visible-queue-item {
  background: var(--card-bg) !important;
  border-color: var(--border) !important;
  color: var(--text-main) !important;
}
body.theme-dark #view-operator .op-queue-ticket.status-served,
body.theme-dark #view-operator .visible-queue-item.status-served {
  background: rgba(52,168,102,0.13) !important; border-color: rgba(52,168,102,0.30) !important;
}
body.theme-dark #view-operator .op-queue-ticket.status-waiting,
body.theme-dark #view-operator .visible-queue-item.status-waiting {
  background: rgba(197,173,122,0.12) !important; border-color: rgba(197,173,122,0.30) !important;
}
body.theme-dark #view-operator .op-queue-ticket.status-called,
body.theme-dark #view-operator .visible-queue-item.status-called {
  background: rgba(220,76,70,0.14) !important; border-color: rgba(220,76,70,0.32) !important;
}
/* Texto legível */
body.theme-dark #view-operator :is(h1,h2,h3,h4,h5,h6,p,strong,b,label,a,
  .opq-senha,.opq-name,.opq-dept,.opq-status) {
  color: var(--text-main) !important;
}
body.theme-dark #view-operator :is(.opq-cpf,.opq-sub,.opq-time,.small,.meta) {
  color: var(--text-muted) !important;
}
/* Pílulas/realces claros (inline ou classe) dentro do atendimento */
body.theme-dark #view-operator .small {
  background: transparent !important;
}
body.theme-dark #view-operator span[style*="background"] {
  background: var(--surface-3) !important;
  color: var(--text-main) !important;
}
/* Cartão "chamar próximo / em atendimento" geralmente é destaque claro */
body.theme-dark #view-operator [class*="current"],
body.theme-dark #view-operator [class*="serving"],
body.theme-dark #view-operator [class*="now"] {
  background: linear-gradient(135deg, rgba(197,173,122,0.18), rgba(197,173,122,0.07)) !important;
  border-color: rgba(197,173,122,0.40) !important;
  color: var(--text-main) !important;
}

/* ============================================================================
   MODO ESCURO — Rodada 6 (2026-06-12): fundos claros via ESTILO INLINE
   Containers com background claro setado inline (sem classe) — pega por
   [style*=...] cobrindo os valores claros mais usados no projeto.
   ========================================================================== */
body.theme-dark [style*="background:#fff"],
body.theme-dark [style*="background: #fff"],
body.theme-dark [style*="background:#ffffff"],
body.theme-dark [style*="background: #ffffff"],
body.theme-dark [style*="background:#FFF"],
body.theme-dark [style*="background: #FFF"],
body.theme-dark [style*="background:white"],
body.theme-dark [style*="background: white"],
body.theme-dark [style*="background-color:#fff"],
body.theme-dark [style*="background-color: #fff"],
body.theme-dark [style*="background-color:#ffffff"],
body.theme-dark [style*="background-color: #ffffff"],
body.theme-dark [style*="background-color:white"],
body.theme-dark [style*="background-color: white"],
body.theme-dark [style*="background:rgb(255, 255, 255)"],
body.theme-dark [style*="background: rgb(255, 255, 255)"],
body.theme-dark [style*="background-color:rgb(255, 255, 255)"],
body.theme-dark [style*="background-color: rgb(255, 255, 255)"],
body.theme-dark [style*="background:#f7f9f4"],
body.theme-dark [style*="background: #f7f9f4"],
body.theme-dark [style*="background:#ecf0e5"],
body.theme-dark [style*="background: #ecf0e5"],
body.theme-dark [style*="background:#f9fafb"],
body.theme-dark [style*="background: #f9fafb"],
body.theme-dark [style*="background:#f3f4f6"],
body.theme-dark [style*="background: #f3f4f6"],
body.theme-dark [style*="background:#fafafa"],
body.theme-dark [style*="background: #fafafa"],
body.theme-dark [style*="background:#eef2f7"],
body.theme-dark [style*="background:#edf2f7"],
body.theme-dark [style*="background-color:#f7f9f4"],
body.theme-dark [style*="background-color:#ecf0e5"] {
  background: var(--card-bg) !important;
  border-color: var(--border) !important;
}
/* Texto claro setado inline que vira invisível sobre fundo escuro */
body.theme-dark [style*="color:#fff"] [style*="background"],
body.theme-dark [style*="color: #fff"] [style*="background"] { color: inherit; }

/* ============================================================================
   MODO ESCURO — Rodada 7 (2026-06-12): colunas de layout claras (atendimento)
   Colunas estruturais (div com flex) que ficam brancas por herança de regra.
   Deixa transparentes — os cards internos já têm fundo escuro.
   ========================================================================== */
body.theme-dark #view-operator > #operator-panel > div > div[style*="flex"],
body.theme-dark #view-operator #operator-panel div[style*="flex:"],
body.theme-dark #view-operator #operator-panel div[style*="flex "] {
  background: transparent !important;
}
body.theme-dark #view-operator #operator-panel span:not([class]) {
  background: transparent !important;
  color: var(--text-muted) !important;
}
/* Garante leitura de títulos soltos no atendimento */
body.theme-dark #view-operator h1,
body.theme-dark #view-operator h2,
body.theme-dark #view-operator h3,
body.theme-dark #view-operator h4 { color: var(--text-main) !important; }

/* ============================================================================
   MODO ESCURO — Rodada 8 (2026-06-12): botões secundários brancos
   Botões .btn sem modificador semântico que ainda aparecem claros em alguns
   painéis (Abrir Câmera, Buscar, etc.). Exclui os botões translúcidos do
   header roxo da intranet (.intranet-header), que são intencionais.
   ========================================================================== */
body.theme-dark button.btn:not(.btn-primary):not(.btn-accent):not(.btn-danger):not(.btn-success):not(.btn-warning):not(.btn-info):not(.intranet-header *):not(.btn-pop),
body.theme-dark a.btn:not(.btn-primary):not(.btn-accent):not(.btn-danger):not(.btn-success):not(.btn-warning):not(.btn-info):not(.intranet-header *),
body.theme-dark .btn-secondary {
  background: var(--surface-2) !important;
  color: var(--text-main) !important;
  border-color: var(--border) !important;
}
body.theme-dark button.btn:not(.btn-primary):not(.btn-accent):not(.btn-danger):not(.btn-success):not(.btn-warning):not(.btn-info):not(.intranet-header *):hover,
body.theme-dark .btn-secondary:hover {
  background: var(--surface-3) !important;
  border-color: var(--border-strong) !important;
}

/* ============================================================================
   CONSULTA DE PACIENTE (Administração) — layout amplo + cartão profissional
   Usa design tokens, então funciona em modo claro e escuro automaticamente.
   2026-06-12
   ========================================================================== */
.adm-patient-wrap { max-width: 1080px; margin: 0 auto; }
.adm-patient-head { margin-bottom: 14px; }
.adm-patient-title { margin: 0 0 2px; font-size: 1.05rem; font-weight: 800; }
.adm-patient-sub { margin: 0; font-size: 0.82rem; color: var(--text-muted, #7e8474); }

.adm-patient-search {
  display: flex; align-items: center; gap: 10px;
  background: var(--surface, #fff);
  border: 1px solid var(--border, #e0e7d4);
  border-radius: 12px; padding: 8px 10px 8px 14px;
  margin-bottom: 18px; box-shadow: var(--shadow-sm, 0 1px 3px rgba(0,0,0,0.06));
}
.adm-patient-search > i { width: 18px; height: 18px; color: var(--text-muted, #8d9977); flex-shrink: 0; }
.adm-patient-search input {
  flex: 1; border: none; background: transparent; outline: none;
  font-size: 0.95rem; color: var(--text-main, #24281d); padding: 6px 2px;
}
.adm-patient-search .btn { flex-shrink: 0; }

/* ---- Cartão do paciente ---- */
.pcard {
  border: 1px solid var(--border, #e0e7d4); border-radius: 16px; overflow: hidden;
  background: var(--surface, #fff); box-shadow: var(--shadow, 0 6px 18px rgba(0,0,0,0.08));
}
.pcard-head {
  background: linear-gradient(135deg, var(--primary-dark, #3d4f1f), var(--primary, #536f23));
  color: #fff; padding: 18px 20px;
}
.pcard-name { font-size: 1.18rem; font-weight: 800; letter-spacing: -0.01em; }
.pcard-id { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; font-size: 0.82rem; opacity: 0.95; margin-top: 7px; }
.pcard-since { opacity: 0.75; }
.pcard-badge-unreg { background: #fde68a; color: #92400e; border-radius: 6px; padding: 2px 9px; font-size: 0.74rem; font-weight: 700; }

.pcard-stats { display: flex; border-bottom: 1px solid var(--border, #e0e7d4); }
.pcard-stat { flex: 1; text-align: center; padding: 14px 10px; border-right: 1px solid var(--border, #e0e7d4); }
.pcard-stat:last-child { border-right: none; }
.pcard-stat-v { font-size: 1.6rem; font-weight: 800; line-height: 1; color: var(--primary, #536f23); }
.pcard-stat-l { font-size: 0.68rem; font-weight: 700; letter-spacing: 0.5px; color: var(--text-muted, #7e8474); margin-top: 5px; }

.pcard-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; padding: 20px; }
@media (max-width: 820px) { .pcard-grid { grid-template-columns: 1fr; } }

.pcard-section-title {
  display: flex; align-items: center; gap: 8px;
  font-weight: 800; font-size: 0.9rem; color: var(--text-main, #24281d);
  padding-bottom: 10px; margin-bottom: 12px; border-bottom: 1px solid var(--border, #e0e7d4);
}
.pcard-section-title i { width: 16px; height: 16px; color: var(--primary, #536f23); }
.pcard-list { display: flex; flex-direction: column; gap: 10px; max-height: 460px; overflow-y: auto; padding-right: 4px; }
.pcard-empty { color: var(--text-muted, #8d9977); font-size: 0.84rem; padding: 8px 2px; }

/* ---- Cartão de senha ---- */
.pticket {
  background: var(--card-bg, #fff); border: 1px solid var(--border, #e0e7d4);
  border-left: 4px solid var(--border-strong, #c5d1b0); border-radius: 10px; padding: 11px 13px;
}
.pticket.is-waiting   { border-left-color: #3a6fd0; }
.pticket.is-served    { border-left-color: #f59e0b; }
.pticket.is-closed    { border-left-color: #22c55e; }
.pticket.is-cancelled { border-left-color: #ef4444; }
.pticket-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 6px; }
.pticket-code { font-weight: 800; font-size: 0.92rem; color: var(--text-main, #24281d); }
.pticket-dept { font-weight: 400; color: var(--text-muted, #7e8474); font-size: 0.8rem; }
.pticket-status { font-size: 0.7rem; font-weight: 700; border-radius: 6px; padding: 2px 8px; border: 1px solid; white-space: nowrap; }
.pticket-status.is-waiting   { color: #3a6fd0; border-color: rgba(59,130,246,0.45); background: rgba(59,130,246,0.12); }
.pticket-status.is-served    { color: #b45309; border-color: rgba(245,158,11,0.45); background: rgba(245,158,11,0.12); }
.pticket-status.is-closed    { color: #1f8a5b; border-color: rgba(34,197,94,0.45);  background: rgba(34,197,94,0.12); }
.pticket-status.is-cancelled { color: #b91c1c; border-color: rgba(239,68,68,0.45);  background: rgba(239,68,68,0.12); }
.pticket-meta { display: flex; gap: 12px; flex-wrap: wrap; font-size: 0.74rem; color: var(--text-muted, #7e8474); }
.pticket-calls { margin-top: 5px; }
.pticket-call { font-size: 0.72rem; color: var(--text-muted, #7e8474); }
.pticket-note { font-size: 0.75rem; background: rgba(245,158,11,0.12); border-left: 3px solid #f59e0b; padding: 5px 9px; border-radius: 5px; margin-top: 6px; color: var(--text-main, #24281d); }
.pticket-note.is-ok { background: rgba(34,197,94,0.12); border-left-color: #22c55e; }
.pticket-note strong { font-weight: 700; }
.pticket-actions { display: flex; gap: 8px; margin-top: 9px; flex-wrap: wrap; }
.pticket-print i { width: 14px; height: 14px; }

/* ---- Cartão de agendamento ---- */
.pappt {
  background: var(--card-bg, #fff); border: 1px solid var(--border, #e0e7d4);
  border-left: 4px solid var(--border-strong, #c5d1b0); border-radius: 10px;
  padding: 11px 13px; display: flex; justify-content: space-between; align-items: flex-start; gap: 10px;
}
.pappt.is-closed { border-left-color: #22c55e; }
.pappt.is-waiting { border-left-color: #3a6fd0; }
.pappt.is-served { border-left-color: #f59e0b; }
.pappt.is-cancelled { border-left-color: #ef4444; }
.pappt-when { font-weight: 700; font-size: 0.88rem; color: var(--text-main, #24281d); }
.pappt-notes { font-size: 0.72rem; color: var(--text-muted, #7e8474); margin-top: 2px; }
.pappt-status { font-size: 0.74rem; font-weight: 700; white-space: nowrap; color: var(--text-muted, #4d5243); }

/* Dark: garante leitura dos textos dentro do cartão (tokens já mudam o fundo) */
body.theme-dark .pcard-name,
body.theme-dark .pticket-code,
body.theme-dark .pticket-note,
body.theme-dark .pappt-when { color: var(--text-main) !important; }

/* ---- Prévia de impressão da senha (cupom 80mm) — sempre "papel branco" ---- */
.senha-print-preview {
  display: flex; justify-content: center;
  padding: 16px; border-radius: 12px;
  background: var(--surface-2, #ecf0e5);
  border: 1px solid var(--border, #e0e7d4);
}
.senha-paper {
  width: 240px; background: #fff; color: #000;
  padding: 16px 14px; text-align: center;
  font-family: Arial, Helvetica, sans-serif;
  border-radius: 4px; box-shadow: 0 6px 18px rgba(0,0,0,0.22);
}
.senha-paper .sp-unit { font-size: 12px; font-weight: bold; text-transform: uppercase; line-height: 1.2; }
.senha-paper .sp-lbl  { font-size: 11px; letter-spacing: 3px; color: #333; margin-top: 6px; }
.senha-paper .sp-code { font-size: 44px; font-weight: 800; line-height: 1; margin: 0 0 4px; }
.senha-paper .sp-dept { font-size: 14px; font-weight: bold; margin-bottom: 2px; }
.senha-paper .sp-name { font-size: 13px; font-weight: bold; margin-top: 8px; }
.senha-paper .sp-row  { font-size: 11px; margin: 2px 0; color: #222; }
.senha-paper .sp-obs  { font-size: 12px; margin: 2px 0; color: #000; text-align: left; }
.senha-paper .sp-hr   { border-top: 1px dashed #000; margin: 8px 0; }

/* ---- Seção e prévia da Declaração de Comparecimento ---- */
.decl-section { margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--border, #e0e7d4); }
.decl-check { display: flex; gap: 8px; align-items: center; font-weight: 600; font-size: 0.85rem; cursor: pointer; }
.decl-check input { width: 16px; height: 16px; accent-color: var(--primary, #536f23); }
.decl-fields { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 12px; }
.decl-fields label { display: flex; flex-direction: column; gap: 4px; font-size: 0.74rem; font-weight: 600; color: var(--text-muted, #7e8474); }
.decl-fields input { font-size: 0.85rem; padding: 7px 8px; box-sizing: border-box; }

.decl-paper {
  width: 100%; max-width: 460px; background: #fff; color: #000;
  padding: 24px 26px; font-family: Arial, Helvetica, sans-serif;
  border-radius: 4px; box-shadow: 0 6px 18px rgba(0,0,0,0.22); text-align: left;
}
.decl-paper .dc-title { text-align: center; font-size: 14px; font-weight: bold; letter-spacing: 1px; margin: 0 0 16px; }
.decl-paper .dc-p { font-size: 12px; line-height: 1.85; text-align: justify; margin: 0 0 10px; color: #000; }
.decl-paper .dc-city { margin-top: 18px; }
.decl-paper .dc-blank { letter-spacing: 1px; color: #777; }
.decl-paper .dc-sign { margin-top: 34px; text-align: center; }
.decl-paper .dc-line { border-top: 1px solid #000; width: 72%; margin: 0 auto 6px; }
.decl-paper .dc-org { font-weight: bold; }
.decl-paper .dc-sign div { font-size: 11px; line-height: 1.5; color: #000; }

/* ---- Prévia do documento A4 (Declaração + Senha) ---- */
.doc-paper {
  width: 100%; max-width: 480px; background: #fff; color: #000;
  padding: 26px 28px; font-family: Arial, Helvetica, sans-serif;
  border-radius: 4px; box-shadow: 0 6px 18px rgba(0,0,0,0.22); text-align: left;
}
.doc-paper .doc-head { display: flex; align-items: center; gap: 12px; border-bottom: 2px solid #111; padding-bottom: 10px; margin-bottom: 14px; }
.doc-paper .doc-logo { height: 54px; width: auto; }
.doc-paper .doc-head-txt { font-size: 11px; line-height: 1.35; }
.doc-paper .doc-head-txt span { color: #444; }
.doc-paper .dc-title { text-align: center; font-size: 14px; font-weight: bold; letter-spacing: 1px; margin: 18px 0; }
.doc-paper .dc-p { font-size: 12px; line-height: 1.9; text-align: justify; margin: 0 0 12px; color: #000; }
.doc-paper .dc-city { margin-top: 18px; }
.doc-paper .dc-blank { letter-spacing: 1px; color: #777; }
.doc-paper .doc-senha { display: flex; justify-content: center; margin: 20px 0 12px; }
.doc-paper .doc-senha-box { width: 230px; border: 1px dashed #555; border-radius: 6px; padding: 10px 12px; text-align: center; }
.doc-paper .sp-unit { font-size: 11px; font-weight: bold; text-transform: uppercase; }
.doc-paper .sp-lbl { font-size: 10px; letter-spacing: 3px; color: #333; margin-top: 5px; }
.doc-paper .sp-code { font-size: 34px; font-weight: 800; line-height: 1; margin: 0 0 3px; }
.doc-paper .sp-dept { font-size: 12px; font-weight: bold; }
.doc-paper .sp-name { font-size: 12px; font-weight: bold; margin-top: 6px; }
.doc-paper .sp-row { font-size: 10px; margin: 2px 0; color: #222; }
.doc-paper .sp-obs { font-size: 11px; margin: 2px 0; color: #000; text-align: left; }
.doc-paper .sp-hr { border-top: 1px dashed #000; margin: 6px 0; }
.doc-paper .dc-sign { margin-top: 28px; text-align: center; }
.doc-paper .dc-line { border-top: 1px solid #000; width: 74%; margin: 0 auto 5px; }
.doc-paper .dc-org { font-weight: bold; font-size: 11px; }
.doc-paper .dc-sign div { font-size: 11px; line-height: 1.5; }
.doc-paper .dc-foot { margin-top: 20px; border-top: 1px solid #999; padding-top: 6px; font-size: 9px; color: #555; text-align: center; }

/* ---- Aviso ao operador (não sai na impressão) ---- */
.decl-warning {
  display: flex; gap: 10px; align-items: flex-start;
  background: rgba(245,158,11,0.12); border: 1px solid rgba(245,158,11,0.40);
  color: #92510a; border-radius: 10px; padding: 10px 12px;
  margin-top: 12px; font-size: 0.8rem; line-height: 1.4;
}
.decl-warning i { width: 18px; height: 18px; color: #d97706; flex-shrink: 0; margin-top: 1px; }
body.theme-dark .decl-warning { color: var(--accent-light); }

/* ---- Papéis de impressão sempre "papel branco", mesmo no modo escuro ----
   (sobrepõe as regras estruturais genéricas de dark mode que pegavam -box, -card, etc.) */
body.theme-dark .doc-paper,
body.theme-dark .senha-paper { background: #fff !important; color: #000 !important; }
body.theme-dark .doc-paper *,
body.theme-dark .senha-paper * { background: transparent !important; color: #000 !important; }
body.theme-dark .doc-paper .doc-head { border-bottom-color: #111 !important; }
body.theme-dark .doc-paper .doc-senha-box { border: 1px dashed #555 !important; }
body.theme-dark .doc-paper .dc-blank { color: #777 !important; }
body.theme-dark .doc-paper .dc-foot { color: #555 !important; border-top-color: #999 !important; }
body.theme-dark .doc-paper .doc-head-txt span { color: #444 !important; }

/* ---- Senha menor dentro do documento (mais espaço para o carimbo) ---- */
.doc-paper .doc-senha { margin: 12px 0 8px; }
.doc-paper .doc-senha-box { width: 168px; padding: 7px 9px; }
.doc-paper .doc-senha-box .sp-code { font-size: 24px; }
.doc-paper .doc-senha-box .sp-unit { font-size: 10px; }
.doc-paper .doc-senha-box .sp-lbl { font-size: 9px; }
.doc-paper .doc-senha-box .sp-dept { font-size: 11px; }
.doc-paper .doc-senha-box .sp-name { font-size: 11px; }
.doc-paper .doc-senha-box .sp-row { font-size: 9px; }
.doc-paper .doc-senha-box .sp-obs { font-size: 10px; }
.doc-paper .doc-senha-box .sp-hr { margin: 4px 0; }
.doc-paper .dc-sign { margin-top: 42px; }

/* ---- Prévia dos papéis: força preto sobre branco mesmo dentro do modal escuro
        (vence a regra body.theme-dark .modal-box :is(p,span...) { color:var(--text-main) }) ---- */
body.theme-dark .modal-box .doc-paper,
body.theme-dark .modal-box .senha-paper { background: #fff !important; color: #000 !important; }
body.theme-dark .modal-box .doc-paper *,
body.theme-dark .modal-box .senha-paper * { color: #000 !important; background: transparent !important; }
body.theme-dark .modal-box .doc-paper .dc-blank { color: #777 !important; }
body.theme-dark .modal-box .doc-paper .dc-foot { color: #555 !important; }
body.theme-dark .modal-box .doc-paper .doc-head-txt span { color: #444 !important; }
body.theme-dark .modal-box .doc-senha-box { border: 1px dashed #555 !important; }

/* ---- Prévia dos papéis em PRETO sobre BRANCO (vence as regras genéricas de
        dark mode usando o ID do modal — especificidade de ID) ---- */
body.theme-dark #admin-ticket-print-modal .doc-paper,
body.theme-dark #admin-ticket-print-modal .senha-paper { background: #fff !important; color: #000 !important; }
body.theme-dark #admin-ticket-print-modal .doc-paper *,
body.theme-dark #admin-ticket-print-modal .senha-paper * { color: #000 !important; background: transparent !important; }
body.theme-dark #admin-ticket-print-modal .doc-paper .dc-blank { color: #777 !important; }
body.theme-dark #admin-ticket-print-modal .doc-paper .dc-foot { color: #555 !important; }
body.theme-dark #admin-ticket-print-modal .doc-paper .doc-head-txt span { color: #444 !important; }
body.theme-dark #admin-ticket-print-modal .doc-senha-box { border: 1px dashed #555 !important; background: transparent !important; }

/* ---- Senha maior dentro do documento (revisão) ---- */
.doc-paper .doc-senha { margin: 16px 0 10px; }
.doc-paper .doc-senha-box { width: 230px; padding: 11px 13px; }
.doc-paper .doc-senha-box .sp-code { font-size: 33px; }
.doc-paper .doc-senha-box .sp-unit { font-size: 12px; }
.doc-paper .doc-senha-box .sp-lbl { font-size: 11px; }
.doc-paper .doc-senha-box .sp-dept { font-size: 13px; }
.doc-paper .doc-senha-box .sp-name { font-size: 13px; }
.doc-paper .doc-senha-box .sp-row { font-size: 11px; }
.doc-paper .doc-senha-box .sp-obs { font-size: 12px; }
.doc-paper .dc-sign { margin-top: 30px; }
