/* ============================================================================
   style-extras.css — Overrides visuais do IMOBSYSTEM admin (2026-05-28)
   Cada tela admin carrega este arquivo com um <link> próprio no <head> (~220 telas).
   Usa !important onde precisa vencer o style.min.css e os style= inline.

   CACHE (2026-09-23): o .htaccess guarda CSS por 1 ANO no navegador. Os <link>
   levam ?v=<data de modificação deste arquivo> (filemtime, em PHP) — então basta
   subir/sincronizar ESTE arquivo que todo mundo baixa a versão nova; não precisa
   mexer nas telas. Exceção: 5 telas montam o <link> dentro de echo e usam
   ?v=20260923 fixo (confirma_exclusao, blog_categorias_excluir,
   encurtar_link_excluir_script, inter_webhook_registrar,
   website_blog_excluir_post_script) — só telas de confirmação/aviso.
   Sincroniza para os tenants pelo 'incluir_extra' do deploy_arquivos.php.
   ============================================================================ */
 
/* --- Submit buttons antigos (input type=submit sem classe btn) --- */
/* Aplica visual de Bootstrap btn-primary nos inputs submit/reset que não
   tenham classe btn explícita. Cobre 100+ forms espalhados pelo sistema. */
input[type="submit"]:not(.btn):not(.form-control),
input[type="reset"]:not(.btn):not(.form-control),
input[type="button"]:not(.btn):not(.form-control):not([onclick*="show_pass"]) {
	display: inline-block;
	padding: 0.5rem 1.2rem;
	font-size: 0.9rem;
	font-weight: 500;
	line-height: 1.5;
	color: #fff;
	background-color: #1976d2;
	border: 1px solid #1976d2;
	border-radius: 6px;
	cursor: pointer;
	transition: background-color 0.15s ease-in-out, transform 0.05s;
	margin: 4px 2px;
}
input[type="submit"]:not(.btn):not(.form-control):hover,
input[type="reset"]:not(.btn):not(.form-control):hover {
	background-color: #1565c0;
	border-color: #1565c0;
}
input[type="submit"]:not(.btn):not(.form-control):active,
input[type="reset"]:not(.btn):not(.form-control):active {
	transform: translateY(1px);
}
input[type="reset"]:not(.btn):not(.form-control) {
	background-color: #6c757d;
	border-color: #6c757d;
}
input[type="reset"]:not(.btn):not(.form-control):hover {
	background-color: #5a6268;
	border-color: #5a6268;
}

/* --- Tabelas cruas (sem class) --- */
/* Aplica padding, borda e hover suaves em <table> sem nenhuma classe. */
table:not([class]),
table.product-overview {
	border-collapse: separate;
	border-spacing: 0;
	width: 100%;
	margin-bottom: 1rem;
}
table:not([class]) > * > tr:hover,
table.product-overview tr:hover {
	background-color: #f8f9fa;
}
table:not([class]) th,
table.product-overview th {
	padding: 0.65rem 0.75rem;
	font-weight: 600;
	color: #495057;
	background-color: #f1f3f5;
	border-bottom: 2px solid #dee2e6;
	font-size: 0.9rem;
}
table:not([class]) td,
table.product-overview td {
	padding: 0.55rem 0.75rem;
	vertical-align: middle;
	border-bottom: 1px solid #e9ecef;
}

/* --- Inputs sem form-control ---
   Exclui select2-search__field (input interno do Select2 multi) e chosen-search
   (Chosen.js) — esses são gerenciados pelos plugins e não devem ser estilizados. */
input[type="text"]:not(.form-control):not(.btn):not(.select2-search__field),
input[type="email"]:not(.form-control):not(.btn),
input[type="number"]:not(.form-control):not(.btn),
input[type="tel"]:not(.form-control):not(.btn),
input[type="url"]:not(.form-control):not(.btn),
input[type="search"]:not(.form-control):not(.btn):not(.select2-search__field),
input[type="date"]:not(.form-control):not(.btn),
input[type="time"]:not(.form-control):not(.btn),
input[type="password"]:not(.form-control):not(.btn),
select:not(.form-control):not(.select2-hidden-accessible),
textarea:not(.form-control) {
	padding: 0.4rem 0.65rem;
	border: 1px solid #ced4da;
	border-radius: 4px;
	background-color: #fff;
	color: #495057;
	font-size: 0.9rem;
	transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
	max-width: 100%;
}
input[type="text"]:not(.form-control):not(.select2-search__field):focus,
input[type="email"]:not(.form-control):focus,
input[type="number"]:not(.form-control):focus,
input[type="tel"]:not(.form-control):focus,
input[type="date"]:not(.form-control):focus,
input[type="password"]:not(.form-control):focus,
textarea:not(.form-control):focus {
	border-color: #80bdff;
	box-shadow: 0 0 0 0.15rem rgba(25, 118, 210, 0.15);
	outline: 0;
}

/* Reset: garantir que select2-search__field não herde estilos genéricos.
   Sem isso, o input interno do select2-multiple aparece como caixa alta vazia. */
.select2-search__field {
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	min-height: 24px !important;
	box-shadow: none !important;
}

/* Selectos multiplos com altura natural (não esticar) */
.select2-selection--multiple {
	min-height: 38px;
	padding: 2px 4px !important;
}
.select2-selection__rendered {
	padding: 0 !important;
}

/* --- Botões de ação na lista de imóveis/leads --- */
/* Ícones de editar/excluir mais legíveis */
td a[title="Editar"], td a[title="Excluir"], td a[title="Detalhes"] {
	display: inline-block;
	padding: 4px 6px;
	border-radius: 4px;
	margin: 0 2px;
	transition: background-color 0.15s;
	text-decoration: none;
}
td a[title="Editar"]:hover { background-color: #fff3cd; }
td a[title="Excluir"]:hover { background-color: #f8d7da; }
td a[title="Detalhes"]:hover { background-color: #d1ecf1; }

/* --- Cards modernos --- */
.card { border: 1px solid #e9ecef; box-shadow: 0 1px 3px rgba(0,0,0,0.04); }
.card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.08); transition: box-shadow 0.2s; }

/* --- Alerts dismissíveis com transição mais suave --- */
.alert-dismissible .close { opacity: 0.6; }
.alert-dismissible .close:hover { opacity: 1; }

/* --- Breadcrumb mais elegante --- */
.breadcrumb {
	background-color: transparent;
	padding: 0;
	font-size: 0.85rem;
}
.breadcrumb-item + .breadcrumb-item::before { color: #adb5bd; }

/* --- Page titles mais limpos --- */
.text-themecolor { color: #1976d2 !important; font-weight: 500; }

/* --- Tooltips mais legíveis (Bootstrap padrão é meio pequeno) --- */
.tooltip-inner { font-size: 0.85rem; padding: 6px 10px; }

/* --- Scroll suave para anchors --- */
html { scroll-behavior: smooth; }

/* --- Loading mais elegante (substitui o preloader cinza) --- */
.preloader { background-color: #fff; }

/* --- Badges com peso e cor melhores --- */
.badge { font-weight: 500; padding: 0.35em 0.6em; font-size: 80%; }
.badge-pill { padding-left: 0.7em; padding-right: 0.7em; }


/* ═══════════════════════════════════════════════════════════════════════════
   MODO ESCURO DO PAINEL (2026-07-31)
   ---------------------------------------------------------------------------
   Ativado pelo ícone do rolo de tinta → "Escurecer o painel inteiro", que põe a
   classe `tema-escuro` no <body> e guarda a escolha no navegador.

   Por que existe: os temas "com menu escuro" do template escurecem APENAS o menu
   lateral — o conteúdo continuava branco, que é o que cansa a vista à noite.
   Aqui escurecemos fundo, cartões, tabelas, campos e menus suspensos.

   Só age quando a classe está presente: sem ela, nada muda. As cores saem de
   variáveis — para calibrar o tom, altere apenas o bloco :root abaixo.
   ═══════════════════════════════════════════════════════════════════════════ */
body.tema-escuro {
	--esc-fundo:   #151a23;   /* fundo da página            */
	--esc-cartao:  #1e2530;   /* cartões, tabelas, modais   */
	--esc-campo:   #232b38;   /* campos de formulário       */
	--esc-borda:   #2f3947;   /* bordas e divisórias        */
	--esc-texto:   #e4e8ef;   /* texto principal            */
	--esc-texto2:  #a7b0bd;   /* texto secundário/apoio     */
	background-color: var(--esc-fundo) !important;
	color: var(--esc-texto);
}
body.tema-escuro .page-wrapper,
body.tema-escuro .container-fluid { background-color: var(--esc-fundo) !important; }

/* Cartões, tabelas e caixas */
body.tema-escuro .card,
body.tema-escuro .modal-content,
body.tema-escuro .dropdown-menu,
body.tema-escuro .list-group-item,
body.tema-escuro .right-sidebar { background-color: var(--esc-cartao) !important; color: var(--esc-texto); border-color: var(--esc-borda) !important; }
body.tema-escuro .card-body,
body.tema-escuro .card-header,
body.tema-escuro .card-footer { background-color: transparent !important; color: var(--esc-texto); }

body.tema-escuro table,
body.tema-escuro .table { color: var(--esc-texto) !important; }
body.tema-escuro .table thead th { background-color: rgba(255,255,255,.04); color: var(--esc-texto); border-color: var(--esc-borda) !important; }
body.tema-escuro .table td,
body.tema-escuro .table th { border-color: var(--esc-borda) !important; }
body.tema-escuro .table-striped tbody tr:nth-of-type(odd) { background-color: rgba(255,255,255,.025); }
body.tema-escuro .table-hover tbody tr:hover { background-color: rgba(255,255,255,.06); }

/* Formulários */
body.tema-escuro .form-control,
body.tema-escuro input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]),
body.tema-escuro select,
body.tema-escuro textarea,
body.tema-escuro .select2-selection,
body.tema-escuro .select2-dropdown {
	background-color: var(--esc-campo) !important;
	color: var(--esc-texto) !important;
	border-color: var(--esc-borda) !important;
}
body.tema-escuro .form-control::placeholder { color: #7c8697; }
/* ── Caixas com fundo branco HARDCODED que quebravam no modo escuro ──
   Centralizado aqui (todas as telas carregam este arquivo) para não deixar
   nenhuma "caixa branca com texto cinza" ilegível no escuro. */
/* Saídas/resultados de texto (I.A. de descrição/avaliação, etc.) → cor de campo */
body.tema-escuro .ia-result,
body.tema-escuro .resultbox,
body.tema-escuro #div_nova_descricao { background-color: var(--esc-campo) !important; color: var(--esc-texto) !important; border-color: var(--esc-borda) !important; }
/* Cartões/painéis (auto-config fiscal/boletos, onboarding, kanban de leads, portal) → cor de cartão */
body.tema-escuro .auto-card,
body.tema-escuro .ob-card,
body.tema-escuro .kanban-card,
body.tema-escuro .pc-sec { background-color: var(--esc-cartao) !important; color: var(--esc-texto) !important; border-color: var(--esc-borda) !important; }
/* ── Kanban de leads (atendimento_index.php, modo Kanban) ──
   O cartão já escurecia (regra acima), mas a COLUNA ficava #eef1f5 — faixa clara com
   cartões escuros dentro. A coluna usa o tom de fundo da página (mais escuro que o
   cartão), pra os cartões continuarem destacados como no tema claro. */
body.tema-escuro .kanban-col { background-color: var(--esc-fundo) !important; border: 1px solid var(--esc-borda); }
body.tema-escuro .kanban-col-head { color: var(--esc-texto) !important; border-bottom-color: var(--esc-borda) !important; }
body.tema-escuro .kanban-count { background-color: var(--esc-borda) !important; color: var(--esc-texto) !important; }
body.tema-escuro .kanban-col-body.drag-over { background-color: rgba(23,99,214,.18) !important; outline-color: #4d8fe6 !important; }
body.tema-escuro .kanban-card .kc-meta,
body.tema-escuro .kanban-card .kc-obs { color: var(--esc-texto2) !important; }
body.tema-escuro .kanban-card .kc-obs { border-top-color: var(--esc-borda) !important; }
/* ── Caixa "Valor de referência de mercado" (requires/fipe_sugestao_imovel) ──
   Aparece em adicionar_produto_area.php e produto_editar_area.php. Até
   22/09/2026 as cores eram style= inline, inclusive nas strings montadas pelo
   JavaScript — e atributo style vence folha de estilo, então no tema escuro a
   caixa ficava clara com o texto claro do tema por cima.
   O max-width existe porque ela fica FORA do grid dos campos: sem teto, esticava
   a linha inteira enquanto os campos ao lado ocupam 3 ou 4 colunas. */
.fipe-sug-box     { border:1px solid #d7e3ec; background:#f4f9fc; border-radius:8px;
                    padding:12px 14px; max-width:560px; }
.fipe-sug-titulo  { font-size:13px; color:#0d6f8b; font-weight:600; margin-bottom:4px; }
.fipe-sug-titulo small { font-weight:400; color:#7a8a99; }
.fipe-sug-body,
.fipe-sug-texto   { font-size:13px; color:#333; }
.fipe-sug-apagado { color:#8a97ad; }
.fipe-sug-link    { color:#0d6f8b; }
.fipe-sug-valor   { font-size:20px; font-weight:700; color:#0d6f8b; }
.fipe-sug-aviso   { color:#a06a00; }
.fipe-sug-aplicar { color:#27ae60; }

body.tema-escuro .fipe-sug-box     { background:var(--esc-campo) !important; border-color:var(--esc-borda) !important; }
body.tema-escuro .fipe-sug-body,
body.tema-escuro .fipe-sug-texto   { color:var(--esc-texto) !important; }
body.tema-escuro .fipe-sug-apagado { color:var(--esc-texto2) !important; }
body.tema-escuro .fipe-sug-box b   { color:var(--esc-texto) !important; }
/* Os tons de destaque ganham versões mais claras: o azul-petróleo e o verde
   originais somem contra o fundo escuro. */
body.tema-escuro .fipe-sug-titulo,
body.tema-escuro .fipe-sug-link,
body.tema-escuro .fipe-sug-valor   { color:#6fc4e0 !important; }
body.tema-escuro .fipe-sug-titulo small { color:var(--esc-texto2) !important; }
body.tema-escuro .fipe-sug-aviso   { color:#e0b566 !important; }
body.tema-escuro .fipe-sug-aplicar { color:#5fd08a !important; }

/* ── Seletor "Como a foto vira quadrada no site?" ────────────────────────────
   requires/miniatura_modo_picker.php, usado em foto_index.php e
   condominio_foto_index.php. As cores moraram em style= inline até 22/09/2026 —
   e atributo style vence folha de estilo, então no tema escuro a caixa ficava
   clara com o texto claro do tema por cima, ilegível. */
.mp-wrap   { margin:8px 0 4px; padding:10px 12px; border:1px solid #e0e6ea;
             border-radius:8px; background:#fafcfe; max-width:520px; }
.mp-titulo { font-size:13px; font-weight:600; color:#37474f; margin-bottom:2px; }
.mp-opcao  { display:block; font-size:13px; margin:4px 0; cursor:pointer; font-weight:400; }
.mp-dica   { color:#8a97ad; }

body.tema-escuro .mp-wrap   { background:var(--esc-campo) !important; border-color:var(--esc-borda) !important; color:var(--esc-texto) !important; }
body.tema-escuro .mp-titulo { color:var(--esc-texto) !important; }
body.tema-escuro .mp-opcao  { color:var(--esc-texto) !important; }
body.tema-escuro .mp-dica   { color:var(--esc-texto2) !important; }
body.tema-escuro .mp-wrap strong { color:var(--esc-texto) !important; }

/* ── Bloco "Nota Fiscal dos honorários" (relatorio_editar_area.php) ──────────
   As cores vivem aqui, e não em style= na página, justamente para o modo escuro
   conseguir trocá-las: atributo style vence folha de estilo, e antes a caixa
   ficava clara com o texto claro do tema escuro por cima — ilegível. */
.nf-card { border:1px solid #e0a800; border-radius:8px; background:#fffdf5; }
.nf-box  { border:1px solid #f0e2b8; border-radius:6px; background:#fff;
           padding:12px 14px; margin-bottom:14px; }
body.tema-escuro .nf-card { background:var(--esc-cartao) !important; color:var(--esc-texto) !important; border-color:#7a6320 !important; }
body.tema-escuro .nf-box  { background:var(--esc-campo)  !important; color:var(--esc-texto) !important; border-color:var(--esc-borda) !important; }
body.tema-escuro .nf-card .text-muted,
body.tema-escuro .nf-box  .text-muted { color:var(--esc-texto2) !important; }

/* Barra de seleção múltipla da aba "Notas do mês" (alert-light do Bootstrap).
   Nasce quase branca com texto escuro; no tema escuro virava faixa branca no
   meio da tabela. Vale para qualquer .alert-light do painel. */
body.tema-escuro .alert-light { background-color:var(--esc-campo) !important; color:var(--esc-texto) !important; border-color:var(--esc-borda) !important; }
body.tema-escuro .alert-light .text-muted,
body.tema-escuro .alert-light small { color:var(--esc-texto2) !important; }

/* Caixas com fundo claro declarado NA PRÓPRIA PÁGINA (website_oferecemos.php e
   website_slider_area.php). O #foco_wrap_N traz o fundo em atributo style=, e
   atributo só perde para !important — por isso estas regras levam !important em
   vez de simplesmente virem depois. O seletor é por prefixo porque o id carrega
   o número do slider (foco_wrap_1, foco_wrap_2, …). */
body.tema-escuro .caixa-row,
body.tema-escuro [id^="foco_wrap_"] { background-color: var(--esc-campo) !important; color: var(--esc-texto) !important; border-color: var(--esc-borda) !important; }
/* Hub do Assistente I.A.: descrição apagada + borda clara */
body.tema-escuro .ia-hub .card { border-color: var(--esc-borda) !important; }
body.tema-escuro .ia-hub .desc { color: var(--esc-texto2, #9aa6b3) !important; }
body.tema-escuro .select2-selection__rendered,
body.tema-escuro .select2-results__option { color: var(--esc-texto) !important; }
body.tema-escuro .select2-results__option--highlighted { background-color: #2c3648 !important; }
body.tema-escuro .input-group-text { background-color: var(--esc-campo); color: var(--esc-texto2); border-color: var(--esc-borda); }

/* ── Daterangepicker (calendário popup) no MODO ESCURO (2026-09-03) ─────────────
   O bootstrap-daterangepicker vem com fundo branco fixo; sem isto o calendário do
   "Período do extrato" (e das telas caixa/boletos/contas/aluguel_dia...) aparecia
   claro no meio do painel escuro. É anexado ao <body>, então herda .tema-escuro. */
body.tema-escuro .daterangepicker {
	background-color: var(--esc-cartao) !important;
	border-color: var(--esc-borda) !important;
	color: var(--esc-texto) !important;
}
body.tema-escuro .daterangepicker:after  { border-bottom-color: var(--esc-cartao) !important; }
body.tema-escuro .daterangepicker:before { border-bottom-color: var(--esc-borda) !important; }
body.tema-escuro .daterangepicker .calendar-table {
	background-color: var(--esc-cartao) !important;
	border-color: var(--esc-cartao) !important;
}
body.tema-escuro .daterangepicker td,
body.tema-escuro .daterangepicker th { color: var(--esc-texto) !important; }
body.tema-escuro .daterangepicker td.available:hover,
body.tema-escuro .daterangepicker th.available:hover { background-color: #2c3648 !important; }
body.tema-escuro .daterangepicker td.off,
body.tema-escuro .daterangepicker td.off.in-range,
body.tema-escuro .daterangepicker td.off.start-date,
body.tema-escuro .daterangepicker td.off.end-date {
	background-color: var(--esc-cartao) !important;
	color: #6b7686 !important;
}
body.tema-escuro .daterangepicker td.in-range { background-color: #2a3446 !important; color: var(--esc-texto) !important; }
body.tema-escuro .daterangepicker td.active,
body.tema-escuro .daterangepicker td.active:hover { background-color: #1e88e5 !important; color: #fff !important; }
body.tema-escuro .daterangepicker .ranges li { color: var(--esc-texto) !important; }
body.tema-escuro .daterangepicker .ranges li:hover { background-color: #2c3648 !important; }
body.tema-escuro .daterangepicker .ranges li.active { background-color: #1e88e5 !important; color: #fff !important; }
body.tema-escuro .daterangepicker select.monthselect,
body.tema-escuro .daterangepicker select.yearselect,
body.tema-escuro .daterangepicker select.hourselect,
body.tema-escuro .daterangepicker select.minuteselect,
body.tema-escuro .daterangepicker select.secondselect,
body.tema-escuro .daterangepicker select.ampmselect,
body.tema-escuro .daterangepicker .input-mini {
	background-color: var(--esc-campo) !important;
	color: var(--esc-texto) !important;
	border-color: var(--esc-borda) !important;
}
body.tema-escuro .daterangepicker .drp-buttons { border-top-color: var(--esc-borda) !important; }
body.tema-escuro .daterangepicker .drp-calendar.left  { border-color: var(--esc-borda) !important; }
body.tema-escuro .daterangepicker .drp-calendar.right { border-color: var(--esc-borda) !important; }

/* ── Blindagem do texto selecionado do Select2 (2026-08-27) ────────────────────
   Garante cor LEGÍVEL sempre no nome escolhido do <select> (single), sem depender
   de herança — imuniza contra temas/zoom/cache parcial. Motivo: um tenant relatou
   "seleciona mas o nome não aparece" com os arquivos dele já em dia (era ambiente do
   navegador). Fixa a cor explicitamente nos 2 temas; o `var(--esc-texto, #e4e8ef)`
   ainda cai num fallback se a variável não existir. (NÃO vence extensões tipo Dark
   Reader, que reescrevem o CSS da página com prioridade própria.) */
.select2-container--default .select2-selection--single .select2-selection__rendered {
	color: #212529 !important;
}
body.tema-escuro .select2-container--default .select2-selection--single .select2-selection__rendered {
	color: var(--esc-texto, #e4e8ef) !important;
}

/* Texto de apoio e divisórias */
body.tema-escuro .text-muted, body.tema-escuro small, body.tema-escuro .breadcrumb { color: var(--esc-texto2) !important; }
body.tema-escuro .text-dark, body.tema-escuro h1, body.tema-escuro h2, body.tema-escuro h3,
body.tema-escuro h4, body.tema-escuro h5, body.tema-escuro h6 { color: var(--esc-texto) !important; }
body.tema-escuro hr, body.tema-escuro .dropdown-divider { border-color: var(--esc-borda) !important; }
body.tema-escuro .nav-tabs .nav-link.active { background-color: var(--esc-cartao); border-color: var(--esc-borda) var(--esc-borda) transparent; color: var(--esc-texto); }
body.tema-escuro .dropdown-item { color: var(--esc-texto); }
body.tema-escuro .dropdown-item:hover { background-color: #2c3648; color: #fff; }

/* Avisos continuam coloridos, mas legíveis no escuro */
body.tema-escuro .alert { border: 0; }
body.tema-escuro .alert-info    { background-color: #16323f; color: #cfe9f5; }
body.tema-escuro .alert-success { background-color: #17331f; color: #d6f0dc; }
body.tema-escuro .alert-warning { background-color: #3a3018; color: #f6e6c4; }
body.tema-escuro .alert-danger  { background-color: #3b1e1e; color: #f6d5d5; }
body.tema-escuro .alert a, body.tema-escuro .alert .alert-link { color: inherit; text-decoration: underline; }

/* ── PONTOS QUE O TEMPLATE FORÇA EM BRANCO ──────────────────────────────────
   O style.min.css declara `background:#fff` (ou #f8f9fa) em vários seletores.
   Como ele é carregado ANTES deste arquivo mas com especificidade própria, cada
   um precisa ser desfeito explicitamente — senão sobram "ilhas" claras no meio
   do tema escuro. A lista abaixo saiu de uma varredura do próprio template. */

/* Faixa do título da tela ("Painel de Administrador") e rodapé */
body.tema-escuro .page-titles { background: var(--esc-cartao) !important; }
body.tema-escuro .footer {
	background: var(--esc-cartao) !important;
	color: var(--esc-texto2) !important;
	border-top-color: var(--esc-borda) !important;
}
body.tema-escuro .footer a { color: var(--esc-texto) !important; }

/* HOVER DE LINHA — o template usa #f8f9fa com texto escuro (#212529): a linha
   "acendia" e o texto sumia. Cobrimos todas as variações de tabela do tema. */
body.tema-escuro table tbody tr:hover,
body.tema-escuro .table tbody tr:hover,
body.tema-escuro .table-hover tbody tr:hover,
body.tema-escuro .full-color-table tbody tr:hover,
body.tema-escuro .list-group-item-action:hover,
body.tema-escuro .list-group-item-action:focus {
	background-color: #2b3547 !important;
	color: var(--esc-texto) !important;
}
body.tema-escuro table tbody tr:hover td,
body.tema-escuro table tbody tr:hover th,
body.tema-escuro table tbody tr:hover a:not(.btn) { color: var(--esc-texto) !important; }

/* CABEÇALHO (<thead>) NO HOVER — as regras acima param no `tbody`, mas a regra de
   tabela crua lá em cima é `table:not([class]) > * > tr:hover`: o `> * >` pega
   thead e tfoot também. Resultado: o corpo escurecia certinho e só o cabeçalho
   continuava acendendo em #f8f9fa. Aqui o thead mantém o MESMO tom que já tem
   parado (não clareia no hover) — cabeçalho não é linha clicável, destacá-lo
   não significa nada para quem está lendo a tabela. */
body.tema-escuro table thead tr:hover,
body.tema-escuro table thead tr:hover > th,
body.tema-escuro table thead tr:hover > td,
body.tema-escuro table tfoot tr:hover,
body.tema-escuro table tfoot tr:hover > th,
body.tema-escuro table tfoot tr:hover > td,
body.tema-escuro .table thead tr:hover,
body.tema-escuro .table thead tr:hover > th {
	background-color: rgba(255,255,255,.04) !important;
	color: var(--esc-texto) !important;
}
body.tema-escuro table thead tr:hover a:not(.btn),
body.tema-escuro table tfoot tr:hover a:not(.btn) { color: #ff7600 !important; }

/* Linhas destacadas do Bootstrap (aviso/ativa) ficariam brancas */
body.tema-escuro .table-active, body.tema-escuro .table-active > td, body.tema-escuro .table-active > th {
	background-color: rgba(255,255,255,.07) !important; color: var(--esc-texto) !important;
}
body.tema-escuro .table-warning, body.tema-escuro .table-warning > td, body.tema-escuro .table-warning > th {
	background-color: #3a3018 !important; color: #f6e6c4 !important;
}

/* Listas, abas, paginação, migalhas e barras de progresso */
body.tema-escuro .list-group-item { background-color: var(--esc-cartao) !important; color: var(--esc-texto); border-color: var(--esc-borda) !important; }
body.tema-escuro .breadcrumb { background: transparent !important; }
body.tema-escuro .nav-tabs .nav-link.active,
body.tema-escuro .nav-tabs .nav-item.show .nav-link { background-color: var(--esc-cartao) !important; color: var(--esc-texto) !important; }
body.tema-escuro .page-link { background-color: var(--esc-campo) !important; color: var(--esc-texto) !important; border-color: var(--esc-borda) !important; }
body.tema-escuro .page-item.disabled .page-link { background-color: var(--esc-cartao) !important; color: var(--esc-texto2) !important; }
body.tema-escuro .progress { background-color: var(--esc-campo) !important; }

/* Botões claros do template (secondary/light) viravam blocos brancos */
body.tema-escuro .btn-light, body.tema-escuro .btn-secondary,
body.tema-escuro .btn-outline-secondary:hover, body.tema-escuro .btn-outline-light:hover {
	background-color: var(--esc-campo) !important; color: var(--esc-texto) !important; border-color: var(--esc-borda) !important;
}

/* Campos em foco e itens de menu suspenso */
body.tema-escuro .form-control:focus { background-color: var(--esc-campo) !important; color: var(--esc-texto) !important; }
body.tema-escuro .dropdown-item:hover, body.tema-escuro .dropdown-item:focus { background-color: #2c3648 !important; color: #fff !important; }
body.tema-escuro .custom-select, body.tema-escuro .custom-file-label,
body.tema-escuro .custom-file-label::after { background-color: var(--esc-campo) !important; color: var(--esc-texto) !important; border-color: var(--esc-borda) !important; }

/* Rede de segurança: qualquer caixa branca genérica do tema */
body.tema-escuro .white-box, body.tema-escuro .bg-white, body.tema-escuro .panel, body.tema-escuro .box,
body.tema-escuro .modal-header, body.tema-escuro .modal-footer {
	background-color: var(--esc-cartao) !important; color: var(--esc-texto) !important; border-color: var(--esc-borda) !important;
}

/* LINKS — no escuro o tom do template (#af2800) fica quase invisível no fundo
   escuro. Usamos o laranja da marca, que tem contraste bom sobre o fundo. */
body.tema-escuro a:not(.btn):not(.dropdown-item):not(.nav-link):not(.page-link) { color: #ff7600; }
body.tema-escuro a:not(.btn):not(.dropdown-item):not(.nav-link):hover { color: #ff9433; }

/* LINHAS DESTACADAS POR ESTILO INLINE (repasse garantido = #fff9d9).
   A cor é escrita direto no <tr style="..."> por aluguel_index.php,
   aluguel_relatorio.php e produto_detalhes_hist_locacoes.php. Estilo inline
   vence CSS normal, então casamos pelo próprio atributo + !important — assim
   vale para as três telas e para qualquer outra que use o mesmo amarelo. */
body.tema-escuro tr[style*="fff9d9"],
body.tema-escuro tr[style*="FFF9D9"],
body.tema-escuro tr[style*="fff9d9"] > td,
body.tema-escuro tr[style*="FFF9D9"] > td {
	background-color: #998a2c !important;   /* ajustado em 2026-08-02: o #b39600 era
	                                           saturado demais e cansava a leitura */
	color: #fff !important;
}
body.tema-escuro tr[style*="fff9d9"]:hover,
body.tema-escuro tr[style*="fff9d9"]:hover > td { background-color: #ab9b36 !important; }
body.tema-escuro tr[style*="fff9d9"] a:not(.btn) { color: #fff !important; text-decoration: underline; }

/* Impressão nunca sai escura (economiza tinta e mantém o documento legível) */
@media print { body.tema-escuro, body.tema-escuro * { background: #fff !important; color: #000 !important; } }


/* ═══════════════════════════════════════════════════════════════════════════
   CAMADA MOBILE (2026-07-31)
   ---------------------------------------------------------------------------
   O painel foi desenhado para computador e várias telas abriam apertadas ou
   "vazando" a largura no celular. Em vez de mexer em ~200 arquivos, tudo fica
   AQUI: este arquivo já é carregado pelas telas do painel, então a correção
   vale para todas de uma vez.

   REGRA DE OURO: nada aqui pode alterar o visual no computador — todo bloco
   está dentro de @media com largura máxima. Se algum ajuste incomodar, basta
   remover o bloco correspondente; nenhuma tela depende dele para funcionar.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Celular (até 767px) ──────────────────────────────────────────────────── */
@media (max-width: 767.98px) {

	/* 1. A PÁGINA NUNCA ROLA DE LADO.
	   Era o defeito mais visível: uma tabela larga empurrava a tela inteira e
	   o menu/topo saíam do lugar. Agora quem rola é o conteúdo largo, não a página. */
	html, body { overflow-x: hidden; max-width: 100%; }
	.page-wrapper, .container-fluid { padding-left: 10px; padding-right: 10px; }
	img, video, iframe, canvas { max-width: 100%; height: auto; }
	pre, code { white-space: pre-wrap; word-break: break-word; }

	/* 2. TABELAS: rolagem horizontal DENTRO do cartão.
	   Muitas telas têm <table> sem o wrapper .table-responsive do Bootstrap. */
	.table-responsive { -webkit-overflow-scrolling: touch; }
	.card-body > table, .card-body > form > table, table.table, table.footable {
		display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch;
	}
	table td, table th { word-break: normal; }

	/* 3. ALVO DE TOQUE CONFORTÁVEL (dedo ≠ mouse).
	   Botões de ação em tabela ficavam pequenos demais para acertar. */
	.btn { min-height: 40px; padding: 8px 14px; }
	.btn-sm, .btn-xs { min-height: 34px; padding: 6px 10px; }
	td .btn, td a, .actions a { display: inline-block; margin: 2px 3px 2px 0; }
	.custom-checkbox label, .form-check-label { padding: 4px 0; }

	/* 4. iOS NÃO DÁ MAIS ZOOM AO TOCAR NUM CAMPO.
	   O Safari amplia a página sozinho quando a fonte do campo é menor que 16px —
	   é o que fazia a tela "pular" e sair do enquadramento ao começar a digitar. */
	input, select, textarea, .form-control { font-size: 16px !important; }
	.form-control { height: auto; padding: 9px 12px; }
	textarea.form-control { min-height: 90px; }

	/* 5. CABEÇALHO DA TELA mais enxuto (sobra mais altura para o conteúdo) */
	.card-body { padding: 12px; }
	.card { margin-bottom: 12px; }
	.page-titles { padding: 8px 0; margin-bottom: 8px; }
	.page-titles h4, h4.text-themecolor { font-size: 1.05rem; line-height: 1.3; }
	.page-titles .breadcrumb { font-size: .78rem; padding: 4px 0; flex-wrap: wrap; }

	/* 6. BARRA DE AÇÕES quebra linha em vez de espremer os botões */
	.page-titles .d-flex, .d-flex.justify-content-end {
		flex-wrap: wrap; justify-content: flex-start !important; gap: 6px;
	}
	.page-titles .text-right, .text-right.align-self-center { text-align: left !important; }
	.form-inline { flex-wrap: wrap; gap: 6px; }
	.form-inline .form-control, .form-inline select { width: 100%; }

	/* 7. MODAIS aproveitam a tela inteira */
	.modal-dialog { margin: 8px; max-width: calc(100% - 16px); }
	.modal-body { padding: 14px; }

	/* 8. Colunas empilhadas ganham respiro */
	[class*="col-"] { margin-bottom: 6px; }
	.form-group { margin-bottom: 14px; }

	/* 9. Rodapé e tooltips não atrapalham */
	.footer { font-size: .78rem; padding: 10px; text-align: center; }
}

/* ── Tablet / celular deitado (768–991px) ─────────────────────────────────── */
@media (min-width: 768px) and (max-width: 991.98px) {
	.card-body { padding: 14px; }
	.page-titles .breadcrumb { font-size: .82rem; }
	table.table { display: block; width: 100%; overflow-x: auto; }
}

/* ── Impressão: sem menu, sem botões (o que sai no papel é o conteúdo) ────── */
@media print {
	.left-sidebar, .topbar, .footer, .btn, .no-print, .page-titles .d-flex { display: none !important; }
	.page-wrapper { margin: 0 !important; padding: 0 !important; }
	.card { border: 0 !important; box-shadow: none !important; }
}

/* ── TOOLTIP: não pode roubar o hover de quem a abriu ────────────────────────
   Sintoma: passando o mouse na METADE DE CIMA de uma imagem, a tooltip piscava
   sem parar; na metade de baixo funcionava.
   Causa: a tooltip do Bootstrap nasce com placement "top", ou seja, EM CIMA do
   elemento. Quando o cursor está na parte de cima, ela abre debaixo do ponteiro
   e passa a receber o mouse — o elemento original recebe mouseleave, a tooltip
   some, o ponteiro volta a ficar sobre a imagem, a tooltip reabre... em loop.
   O Bootstrap 4 não traz pointer-events:none (o 5 traz). Com a regra abaixo a
   tooltip fica "atravessável" e o hover nunca sai do elemento. */
.tooltip, .tooltip * { pointer-events: none !important; }

/* ── MENU RECOLHIDO: só o ícone, sem a escrita ───────────────────────────────
   Ao clicar no ☰ o template recolhe o menu e esconde a escrita "ImobSystem" com
   jQuery .hide(). Isso é estilo inline: some ao recarregar a página, e aí voltava
   o menu estreito COM a escrita ao lado — que era o defeito relatado.
   Agora a escolha fica salva (ver requires/topbar.php) e quem esconde a escrita é
   esta regra, presa à classe do <body>. O !important existe porque o .show() do
   template deixa um display inline quando o menu é reaberto. */
body.mini-sidebar .navbar-brand span { display: none !important; }


/* ═══════════════════════════════════════════════════════════════════════════
   MODO ESCURO — ILHAS CLARAS QUE FALTAVAM (2026-08-02)
   Cada bloco abaixo veio de uma tela relatada pelo dono. O padrão se repete:
   fundo claro definido FORA do style.min.css (regra própria da página, estilo
   inline, ou — em dois casos — regra deste mesmo arquivo que só existia no tema
   claro). Por isso o override anterior não pegava.
   ═══════════════════════════════════════════════════════════════════════════ */

/* 1) ABAS NÃO SELECIONADAS (usuario_detalhes.php: "Atividade", "Banco Inter",
      "E-mail (SMTP)"). A aba ATIVA já estava tratada; as inativas herdavam o
      texto escuro do template sobre o fundo escuro — letra da cor do fundo,
      ilegível. */
body.tema-escuro .nav-tabs { border-bottom-color: var(--esc-borda); }
body.tema-escuro .nav-tabs .nav-link {
	color: var(--esc-texto2) !important;
	background-color: transparent;
	border-color: transparent;
}
body.tema-escuro .nav-tabs .nav-link:hover {
	color: var(--esc-texto) !important;
	border-color: var(--esc-borda) var(--esc-borda) transparent;
}

/* 2) CABEÇALHO DE TABELA SEM CLASSE (st360tour_index.php,
      captacao_imobsystem_index_porimobiliaria.php: "Integrar?", "Capa"…).
      A culpa é NOSSA: lá no começo deste arquivo, `table:not([class]) th` pinta
      o cabeçalho de #f1f3f5 para dar acabamento às tabelas cruas — e isso nunca
      foi desfeito no escuro. */
body.tema-escuro table:not([class]) th,
body.tema-escuro table.product-overview th,
body.tema-escuro table:not([class]) thead td {
	background-color: rgba(255,255,255,.05) !important;
	color: var(--esc-texto) !important;
	border-bottom-color: var(--esc-borda) !important;
}
body.tema-escuro table:not([class]) td,
body.tema-escuro table.product-overview td {
	border-bottom-color: var(--esc-borda) !important;
	color: var(--esc-texto);
}

/* 3) LINHAS COLORIDAS DO BOOTSTRAP (contas_index.php marca as contas com
      table-success / table-danger conforme pagas ou vencidas). São fundos
      pastel com texto escuro: no tema escuro a linha "acendia" e o texto sumia.
      Mantemos o SIGNIFICADO da cor (verde = ok, vermelho = atenção), só que em
      tom escuro e com texto claro. */
body.tema-escuro .table-success, body.tema-escuro .table-success > td, body.tema-escuro .table-success > th { background-color: #1c3b2e !important; color: #d8f3e5 !important; }
body.tema-escuro .table-danger,  body.tema-escuro .table-danger  > td, body.tema-escuro .table-danger  > th { background-color: #45242a !important; color: #ffd9de !important; }
body.tema-escuro .table-info,    body.tema-escuro .table-info    > td, body.tema-escuro .table-info    > th { background-color: #1b3540 !important; color: #d5eef8 !important; }
body.tema-escuro .table-primary, body.tema-escuro .table-primary > td, body.tema-escuro .table-primary > th { background-color: #1e2f45 !important; color: #d9e6f7 !important; }
body.tema-escuro .table-secondary,body.tema-escuro .table-secondary>td,body.tema-escuro .table-secondary>th { background-color: #2a303a !important; color: var(--esc-texto) !important; }
body.tema-escuro .table-light,   body.tema-escuro .table-light   > td, body.tema-escuro .table-light   > th { background-color: #262d38 !important; color: var(--esc-texto) !important; }
body.tema-escuro tr[class*="table-"] a:not(.btn) { color: inherit !important; text-decoration: underline; }

/* 4) CAIXAS DE AJUDA COM FUNDO CLARO POR ESTILO INLINE
      (integracao_portais_area.php: "Como integrar seus imóveis aos portais").
      Não dá para alcançar estilo inline por classe — casamos pelo valor da cor
      escrita no atributo, como já fazemos com o #fff9d9 do repasse garantido.
      Cobrimos os tons pastel usados nas caixas de ajuda do painel. */
body.tema-escuro [style*="#f0f4ff"], body.tema-escuro [style*="#F0F4FF"],
body.tema-escuro [style*="#f8f9fa"], body.tema-escuro [style*="#F8F9FA"],
body.tema-escuro [style*="#eef2ff"], body.tema-escuro [style*="#EEF2FF"],
body.tema-escuro [style*="#f6f8fa"], body.tema-escuro [style*="#F6F8FA"],
body.tema-escuro [style*="#fff8e1"], body.tema-escuro [style*="#FFF8E1"],
body.tema-escuro [style*="#e8f5e9"], body.tema-escuro [style*="#E8F5E9"] {
	background-color: var(--esc-campo) !important;
	color: var(--esc-texto) !important;
}

/* 5) BLOCOS COM FUNDO CLARO DEFINIDO NO <style> DA PRÓPRIA PÁGINA
      (graficos_index.php: .tipo-section). Como este arquivo é carregado ANTES
      do <style> da página, só o !important vence. */
body.tema-escuro .tipo-section {
	background-color: var(--esc-campo) !important;
	color: var(--esc-texto) !important;
}
body.tema-escuro .tipo-section h6,
body.tema-escuro .tipo-section h1, body.tema-escuro .tipo-section h2,
body.tema-escuro .tipo-section h3, body.tema-escuro .tipo-section h4,
body.tema-escuro .tipo-section h5 { color: var(--esc-texto) !important; }


/* ── MODO ESCURO — CARTÕES E MARCADORES DAS TELAS DE ALUGUEL (2026-08-02) ────
   Quatro telas do módulo de aluguel montam blocos com fundo claro no <style> da
   própria página. Como este arquivo é carregado ANTES desse <style>, só o
   !important vence — mesma situação do .tipo-section do gráficos.

     .auto-card    → aluguel_boleto_auto_config.php e aluguel_boleto_auto_area.php
     .auto-motivos → aluguel_boleto_auto_area.php (motivos que travaram o repasse)
     .aniv-card    → aluguel_aniversarios.php
     .flag-dup     → aluguel_repasse_conciliacao.php (repasse DUPLICADO)
     .flag-pnr     → aluguel_repasse_conciliacao.php (pago, não repassado)

   Nas duas flags a cor CARREGA SIGNIFICADO — vermelho é duplicidade, amarelo é
   pendência. Escurecemos mantendo o matiz, em vez de neutralizar tudo: quem usa
   a conciliação identifica o problema pela cor antes de ler a linha. */
body.tema-escuro .auto-card,
body.tema-escuro .aniv-card {
	background-color: var(--esc-cartao) !important;
	border-color: var(--esc-borda) !important;
	color: var(--esc-texto) !important;
}
body.tema-escuro .auto-motivos {
	background-color: var(--esc-campo) !important;
	color: var(--esc-texto) !important;
}
body.tema-escuro .auto-card .help,
body.tema-escuro .aniv-card .help,
body.tema-escuro .auto-card small,
body.tema-escuro .aniv-card small { color: var(--esc-texto2) !important; }

/* Marcadores da conciliação de repasses — matiz preservado, tom escuro */
body.tema-escuro .flag-dup,
body.tema-escuro .flag-dup > td { background-color: #45242a !important; color: #ffd9de !important; }
body.tema-escuro .flag-pnr,
body.tema-escuro .flag-pnr > td { background-color: #443c1f !important; color: #f7edc8 !important; }
body.tema-escuro .flag-dup a:not(.btn),
body.tema-escuro .flag-pnr a:not(.btn) { color: inherit !important; text-decoration: underline; }

/* O rótulo neutro (#78909c) já é escuro o bastante; só garantimos o contraste
   do texto, que em alguns navegadores herdava a cor do tema. */
body.tema-escuro .label.label-neutro { color: #fff !important; }

/* ── Filtro "Período" do caixa no modo escuro ────────────────────────────────
   A seção do filtro usa .pgl-bg-light, que crava fundo claro, e os campos ficavam
   brancos com texto claro (ilegíveis) mesmo no tema escuro. Aqui alinhamos toda a
   caixa de filtro (#div_periodo) ao tema. Vale também para o contas_index se ele
   usar o mesmo id no futuro. */
body.tema-escuro #div_periodo,
body.tema-escuro #div_periodo.pgl-bg-light,
body.tema-escuro .pgl-advanced-search.pgl-bg-light {
    background: #1e2633 !important;
    border-color: #2b3648 !important;
    color: #e6e9ef;
}
body.tema-escuro #div_periodo small,
body.tema-escuro #div_periodo label,
body.tema-escuro #div_periodo .control-label { color: #b9c2d0 !important; }
body.tema-escuro #div_periodo .form-control,
body.tema-escuro #div_periodo .input-group-text,
body.tema-escuro #div_periodo select,
body.tema-escuro #div_periodo .select2-selection {
    background: #131a24 !important;
    border-color: #2b3648 !important;
    color: #e6e9ef !important;
}
body.tema-escuro #div_periodo .form-control::placeholder { color: #7d8798 !important; }
body.tema-escuro #div_periodo .select2-selection__rendered { color: #e6e9ef !important; }

/* ── Acessibilidade: respeitar "Reduzir movimento" do sistema (2026-08-27) ─────
   Para quem ligou "reduzir animações" no SO (sensibilidade a movimento/tontura),
   neutraliza transições, animações e o scroll-suave. É ADITIVO e sem regressão: só
   age quando o usuário PEDIU isso; para todos os outros nada muda. Usa 0.01ms (não
   0) de propósito, para os eventos transitionend/animationend do Bootstrap (modais,
   collapse, alerts) continuarem disparando e nada travar. */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ═══════════════════════════════════════════════════════════════════════════
   AJUSTES PARA CELULAR (2026-08-27)
   Valem SÓ em telas pequenas (max-width) — no DESKTOP nada muda. Todos aditivos e
   reversíveis. Foco: acabar com o "zoom" ao tocar num campo, dar área de toque
   confortável e aproveitar melhor a largura estreita.
   ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width: 767px) {
	/* iOS/Safari dá ZOOM ao focar um campo com fonte < 16px. Fixar 16px evita o pulo
	   irritante da tela ao tocar em inputs/selects. */
	input:not([type=checkbox]):not([type=radio]):not([type=range]),
	select, textarea, .form-control { font-size: 16px !important; }

	/* Botões: o texto pode quebrar (não estoura a largura) e ganham área de toque maior. */
	.btn { white-space: normal; }
	.btn:not(.btn-sm):not(.btn-xs) { min-height: 40px; }

	/* Ícones de ação nas tabelas (editar/excluir/detalhes) com alvo de toque maior. */
	td a[title="Editar"], td a[title="Excluir"], td a[title="Detalhes"] { padding: 8px 10px; }

	/* Aproveita a largura estreita: menos padding lateral no conteúdo e nos cartões. */
	.container-fluid { padding-left: 12px !important; padding-right: 12px !important; }
	.card-body { padding: 14px; }

	/* Cabeçalho da página (título + trilha) alinha à esquerda em vez de se espremer à direita. */
	.page-titles .text-right { text-align: left !important; }
	.page-titles .breadcrumb { margin-top: 4px; }
}
