/* =============================================================================
 *  theme-plataforma.css
 *  -----------------------------------------------------------------------------
 *  Tema dark exclusivo do PlataformaAdmin com 4 paletas seleccionáveis.
 *  Activa-se via <body data-role="PlataformaAdmin"> definido em layout.js.
 *  A paleta activa controla-se via <body data-plataforma-theme="emerald|cyan|
 *  amber|indigo"> definido por cd-plataforma-theme.js a partir do localStorage.
 *
 *  Filosofia:
 *  - Fundo escuro é constante; muda apenas a cor de accent.
 *  - Active state usa "tinted fill + border-left", padrão Linear/Vercel — bem
 *    mais elegante que o "fundo sólido bright" anterior (que engolia texto).
 *  - Cores semânticas (success, warning, danger, info) NÃO dependem da paleta
 *    escolhida — permanecem coerentes para contexto financeiro/dados.
 * =========================================================================== */

/* === Base partilhada por TODAS as paletas — fundos, contornos, texto === */
body[data-role="PlataformaAdmin"] {
    /* Cores neutras (fundo, surface, texto) — mesmas em todas as paletas */
    --cd-bg: #0B0E14;
    --cd-text: #E6EDF3;
    --cd-muted: #7D8590;
    --cd-card-bg: #131820;
    --cd-card-border: #1F2630;
    --cd-card-bg-elevated: #1A2029;
    --cd-sidebar-bg: #0A0D12;
    --cd-divider: #1F2630;

    /* Override de TODAS as variáveis-raiz do Bootstrap 5.3 — sem isto,
       `.table` (e outros componentes) continuam a herdar `--bs-body-bg = #fff`,
       `--bs-emphasis-color = #000`, etc., resultando em flashes de fundo
       branco e texto preto invisível em hover/empty states. */
    --bs-body-bg: #0B0E14;
    --bs-body-color: #E6EDF3;
    --bs-emphasis-color: #E6EDF3;
    --bs-emphasis-color-rgb: 230, 237, 243;
    --bs-secondary-color: #7D8590;
    --bs-secondary-bg: #131820;
    --bs-tertiary-bg: #1A2029;
    --bs-border-color: #1F2630;
    --bs-link-color: #34D399;
    --bs-link-hover-color: #6EE7B7;
    --bs-heading-color: #E6EDF3;

    /* Cores semânticas — fixas, não mudam com a paleta */
    --cd-success: #22D88B;
    --cd-warning: #F5C518;
    --cd-danger:  #F0506E;
    --cd-info:    #58A6FF;

    /* Default theme = emerald (toned down vs. v1 que era #00FF94) */
    --cd-accent:       #10B981;   /* Tailwind emerald-500 */
    --cd-accent-hover: #34D399;   /* emerald-400 */
    --cd-accent-soft:  rgba(16, 185, 129, 0.12);
    --cd-accent-soft-hover: rgba(16, 185, 129, 0.18);
    --cd-accent-on:    #07090D;   /* texto sobre fill accent */
    --cd-accent-strong: #064E3B;  /* emerald-900 — para fundos sólidos densos */

    /* Vars do bootstrap que mapeamos */
    --cd-primary: var(--cd-accent);
    --cd-primary-2: var(--cd-accent-hover);
    --cd-primary-3: var(--cd-accent-strong);
}

/* === Paletas alternativas — só sobrepõem as variáveis de accent === */
body[data-role="PlataformaAdmin"][data-plataforma-theme="cyan"] {
    --cd-accent:       #06B6D4;
    --cd-accent-hover: #22D3EE;
    --cd-accent-soft:  rgba(6, 182, 212, 0.12);
    --cd-accent-soft-hover: rgba(6, 182, 212, 0.18);
    --cd-accent-on:    #07090D;
    --cd-accent-strong: #155E75;
}
body[data-role="PlataformaAdmin"][data-plataforma-theme="amber"] {
    --cd-accent:       #F59E0B;
    --cd-accent-hover: #FBBF24;
    --cd-accent-soft:  rgba(245, 158, 11, 0.12);
    --cd-accent-soft-hover: rgba(245, 158, 11, 0.18);
    --cd-accent-on:    #07090D;
    --cd-accent-strong: #78350F;
}
body[data-role="PlataformaAdmin"][data-plataforma-theme="indigo"] {
    --cd-accent:       #818CF8;
    --cd-accent-hover: #A5B4FC;
    --cd-accent-soft:  rgba(129, 140, 248, 0.14);
    --cd-accent-soft-hover: rgba(129, 140, 248, 0.20);
    --cd-accent-on:    #07090D;
    --cd-accent-strong: #312E81;
}

/* Manter o tema activo mesmo se o toggle dark mode estiver ligado */
body[data-role="PlataformaAdmin"].dark-mode,
body[data-role="PlataformaAdmin"][data-theme="dark"],
body[data-role="PlataformaAdmin"][data-theme="light"] {
    --cd-bg: #0B0E14;
    --cd-text: #E6EDF3;
    --cd-card-bg: #131820;
    --cd-card-border: #1F2630;
    --bs-body-bg: #0B0E14;
    --bs-body-color: #E6EDF3;
    --bs-emphasis-color: #E6EDF3;
    --bs-emphasis-color-rgb: 230, 237, 243;
    --bs-secondary-color: #7D8590;
    --bs-secondary-bg: #131820;
    --bs-tertiary-bg: #1A2029;
    --bs-border-color: #1F2630;
}

/* Body + main usam o tema explicitamente — algumas páginas têm <body>
   styling que herda --bs-body-bg via `body { background: var(--bs-body-bg) }`,
   outras herdam de --cd-bg. Forçamos ambas. */
body[data-role="PlataformaAdmin"] {
    background-color: #0B0E14 !important;
    color: #E6EDF3;
}
body[data-role="PlataformaAdmin"] main,
body[data-role="PlataformaAdmin"] .main-content {
    background-color: transparent;
    color: #E6EDF3;
}

/* === Sidebar — preto profundo, active state subtil + border-left accent === */
body[data-role="PlataformaAdmin"] .sidebar {
    background: var(--cd-sidebar-bg);
    border-right: 1px solid var(--cd-divider);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .sidebar-brand,
body[data-role="PlataformaAdmin"] .sidebar h1,
body[data-role="PlataformaAdmin"] .sidebar h2,
body[data-role="PlataformaAdmin"] .sidebar-title {
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .sidebar a,
body[data-role="PlataformaAdmin"] .sidebar .nav-link {
    color: #B5C0CC;
    border-left: 3px solid transparent;
    transition: background .14s, color .14s, border-color .14s;
}
body[data-role="PlataformaAdmin"] .sidebar a:hover,
body[data-role="PlataformaAdmin"] .sidebar .nav-link:hover {
    color: var(--cd-text);
    background: var(--cd-accent-soft);
    border-left-color: var(--cd-accent-soft-hover);
}
body[data-role="PlataformaAdmin"] .sidebar .nav-link.active {
    color: var(--cd-accent);
    background: var(--cd-accent-soft);
    border-left-color: var(--cd-accent);
    font-weight: 600;
}
body[data-role="PlataformaAdmin"] .sidebar .nav-link.active i {
    color: var(--cd-accent);
}
body[data-role="PlataformaAdmin"] .sidebar-group-header,
body[data-role="PlataformaAdmin"] .sidebar-group-label {
    color: var(--cd-muted);
    border-color: var(--cd-divider);
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .72rem;
}

/* Sidebar search */
body[data-role="PlataformaAdmin"] .sidebar input[type="search"],
body[data-role="PlataformaAdmin"] .sidebar input[type="text"] {
    background: var(--cd-card-bg);
    border: 1px solid var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .sidebar input::placeholder {
    color: #6B7585;
}
body[data-role="PlataformaAdmin"] .sidebar input:focus {
    border-color: var(--cd-accent);
    box-shadow: 0 0 0 3px var(--cd-accent-soft);
    outline: none;
}

/* Sidebar footer (perfil + sair) */
body[data-role="PlataformaAdmin"] .sidebar-footer,
body[data-role="PlataformaAdmin"] .sidebar-bottom {
    background: var(--cd-sidebar-bg);
    border-top: 1px solid var(--cd-divider);
}

/* === Headers e títulos === */
body[data-role="PlataformaAdmin"] .cd-page-header__title,
body[data-role="PlataformaAdmin"] h1,
body[data-role="PlataformaAdmin"] h2,
body[data-role="PlataformaAdmin"] h3,
body[data-role="PlataformaAdmin"] h4,
body[data-role="PlataformaAdmin"] h5,
body[data-role="PlataformaAdmin"] h6 {
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .cd-page-header__subtitle,
body[data-role="PlataformaAdmin"] .text-muted,
body[data-role="PlataformaAdmin"] small.text-muted {
    color: var(--cd-muted) !important;
}
body[data-role="PlataformaAdmin"] .cd-page-header__icon {
    background: var(--cd-card-bg);
    border: 1px solid var(--cd-card-border);
    color: var(--cd-accent);
}

/* === Banner do condomínio (cond-banner) — substituir o gradient brilhante
   por um surface escuro com accent borders. Mantém-se útil para drill-down
   mas deixa de ofuscar a vista. === */
body[data-role="PlataformaAdmin"] .cond-banner {
    background: linear-gradient(135deg, var(--cd-card-bg) 0%, var(--cd-card-bg-elevated) 100%) !important;
    border: 1px solid var(--cd-card-border);
    border-left: 4px solid var(--cd-accent);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .cond-banner .cond-nome { color: var(--cd-text); }
body[data-role="PlataformaAdmin"] .cond-banner .cond-morada { color: var(--cd-muted); opacity: 1; }
body[data-role="PlataformaAdmin"] .cond-banner .cond-actions a {
    background: rgba(255,255,255,.06);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .cond-banner .cond-actions a:hover {
    background: var(--cd-accent-soft);
    color: var(--cd-accent);
}

/* === Hero da Ajuda — também tinha gradient em var(--cd-primary). === */
body[data-role="PlataformaAdmin"] .help-hero,
body[data-role="PlataformaAdmin"] .ajuda-hero,
body[data-role="PlataformaAdmin"] [class*="-hero"] {
    background: linear-gradient(135deg, var(--cd-card-bg) 0%, var(--cd-card-bg-elevated) 100%) !important;
    color: var(--cd-text);
    border: 1px solid var(--cd-card-border);
}

/* === Cards === */
body[data-role="PlataformaAdmin"] .card,
body[data-role="PlataformaAdmin"] .panel-card,
body[data-role="PlataformaAdmin"] .kpi-card {
    background: var(--cd-card-bg);
    border: 1px solid var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .card-header,
body[data-role="PlataformaAdmin"] .card-footer {
    background: rgba(0,0,0,.18);
    border-color: var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .kpi-card:hover {
    border-color: var(--cd-accent);
    box-shadow: 0 0 0 1px var(--cd-accent), 0 4px 16px rgba(0,0,0,.4);
}
body[data-role="PlataformaAdmin"] .kpi-value {
    color: var(--cd-accent);
}
body[data-role="PlataformaAdmin"] .kpi-label {
    color: var(--cd-muted);
}

/* === Botões === */
body[data-role="PlataformaAdmin"] .btn-primary {
    background: var(--cd-accent);
    border-color: var(--cd-accent);
    color: var(--cd-accent-on);
    font-weight: 600;
}
body[data-role="PlataformaAdmin"] .btn-primary:hover,
body[data-role="PlataformaAdmin"] .btn-primary:focus {
    background: var(--cd-accent-hover);
    border-color: var(--cd-accent-hover);
    color: var(--cd-accent-on);
}
body[data-role="PlataformaAdmin"] .btn-outline-primary {
    border-color: var(--cd-accent);
    color: var(--cd-accent);
    background: transparent;
}
body[data-role="PlataformaAdmin"] .btn-outline-primary:hover {
    background: var(--cd-accent);
    color: var(--cd-accent-on);
}
body[data-role="PlataformaAdmin"] .btn-outline-secondary {
    border-color: var(--cd-card-border);
    color: #B5C0CC;
    background: transparent;
}
body[data-role="PlataformaAdmin"] .btn-outline-secondary:hover {
    background: var(--cd-card-bg-elevated);
    color: var(--cd-text);
    border-color: var(--cd-card-border);
}
body[data-role="PlataformaAdmin"] .btn-secondary {
    background: var(--cd-card-bg-elevated);
    border-color: var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .btn-danger {
    background: var(--cd-danger);
    border-color: var(--cd-danger);
    color: #07090D;
}
body[data-role="PlataformaAdmin"] .btn-success {
    background: var(--cd-success);
    border-color: var(--cd-success);
    color: #07090D;
}
body[data-role="PlataformaAdmin"] .btn-warning {
    background: var(--cd-warning);
    border-color: var(--cd-warning);
    color: #07090D;
}

/* === Tabelas === */
body[data-role="PlataformaAdmin"] .table,
body[data-role="PlataformaAdmin"] .table-hover {
    color: var(--cd-text);
    --bs-table-bg: transparent;
    --bs-table-color: var(--cd-text);
    --bs-table-border-color: var(--cd-card-border);
    /* Hover NEUTRO (não accent-tinted) — antes ficava verde sobre verde de links,
       o que destruía legibilidade. Agora é um realce branco subtil que não compete
       com a cor dos links/textos. */
    --bs-table-hover-bg: rgba(255, 255, 255, 0.05);
    --bs-table-hover-color: var(--cd-text);
    --bs-table-striped-bg: rgba(255, 255, 255, 0.02);
    --bs-table-striped-color: var(--cd-text);
}
/* Reforço CRÍTICO: o Bootstrap 5 default --bs-table-hover-color resolve-se a
   var(--bs-emphasis-color) (= preto) em alguns contextos, mesmo quando definimos
   o nosso valor na vars. Forçamos cell-level !important para garantir que o
   texto NUNCA fica washed-out / invisível em hover. Isto também cobre células
   geradas dinamicamente que ignoram o cascade da variável. */
body[data-role="PlataformaAdmin"] .table-hover tbody tr:hover > *,
body[data-role="PlataformaAdmin"] .table > tbody > tr.table-active > *,
body[data-role="PlataformaAdmin"] .table-hover > tbody > tr:hover > th,
body[data-role="PlataformaAdmin"] .table-hover > tbody > tr:hover > td {
    background-color: rgba(255, 255, 255, 0.05) !important;
    color: var(--cd-text) !important;
    --bs-table-bg-state: rgba(255, 255, 255, 0.05);
    --bs-table-color-state: var(--cd-text);
}
/* Em hover, links dentro da linha não devem fundir-se com o fundo. */
body[data-role="PlataformaAdmin"] .table-hover tbody tr:hover a {
    color: var(--cd-accent-hover) !important;
}
body[data-role="PlataformaAdmin"] .table-hover tbody tr:hover .text-muted,
body[data-role="PlataformaAdmin"] .table-hover tbody tr:hover small.text-muted {
    color: #B5C0CC !important;
}
/* Bootstrap .table-light (cabeçalhos/linhas highlight) ficaria branco-quase
   sobre branco no nosso tema; remapear para surface elevada. */
body[data-role="PlataformaAdmin"] .table-light,
body[data-role="PlataformaAdmin"] .table-light > th,
body[data-role="PlataformaAdmin"] .table-light > td,
body[data-role="PlataformaAdmin"] .table > :not(caption) > * > .table-light {
    background-color: var(--cd-card-bg-elevated) !important;
    color: var(--cd-text) !important;
    --bs-table-bg: var(--cd-card-bg-elevated);
    --bs-table-color: var(--cd-text);
    border-color: var(--cd-card-border) !important;
}
/* CRÍTICO: components.css linhas 83-85 têm regras hardcoded
   `.table thead { background: #f1f5f9 }` (azul-claro) e
   `.table-hover tbody tr:hover { background-color: #EBF3FB }` que
   ainda apareciam aqui porque eu só estava a sobrepor `.table thead th`,
   não `.table thead` em si nem o hover ao nível da `tr`. Estas são
   as 3 regras que deviam ter vindo primeiro. */
body[data-role="PlataformaAdmin"] .table thead,
body[data-role="PlataformaAdmin"] .table > thead {
    background: transparent !important;
}
body[data-role="PlataformaAdmin"] .table-hover tbody tr:hover,
body[data-role="PlataformaAdmin"] .table-hover > tbody > tr:hover {
    background-color: rgba(255, 255, 255, 0.05) !important;
    color: var(--cd-text) !important;
}
body[data-role="PlataformaAdmin"] .table thead th {
    background: rgba(0,0,0,.25) !important;
    color: var(--cd-muted) !important;
    text-transform: uppercase;
    letter-spacing: .04em;
    border-bottom: 1px solid var(--cd-card-border);
}
/* O th vinha com cor da var(--cd-primary) via components.css line 85. */
body[data-role="PlataformaAdmin"] .table th {
    color: var(--cd-muted) !important;
}
body[data-role="PlataformaAdmin"] .table td,
body[data-role="PlataformaAdmin"] .table th {
    border-color: var(--cd-card-border);
}
/* Defense-in-depth: o Bootstrap 5.3 pinta CADA célula com um box-shadow inset
   gigante que usa --bs-table-bg-state / --bs-table-bg-type / --bs-table-accent-bg.
   Se algum desses fallbacks resolver para a body-bg (branco), a célula fica
   branca mesmo com a nossa --bs-table-bg=transparent na .table. Resolvemos
   garantindo todas as 3 vars na própria célula. */
body[data-role="PlataformaAdmin"] .table > :not(caption) > * > * {
    --bs-table-bg-state: transparent;
    --bs-table-bg-type: transparent;
    --bs-table-accent-bg: transparent;
    background-color: transparent;
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .table > thead > tr > th {
    --bs-table-bg-state: rgba(0,0,0,.25);
    background-color: rgba(0,0,0,.25);
}
/* Hover re-aplicado por cima do reset (pelos seletores acima com !important). */

/* Links em texto corrido */
body[data-role="PlataformaAdmin"] a {
    color: var(--cd-accent);
}
body[data-role="PlataformaAdmin"] a:hover {
    color: var(--cd-accent-hover);
}

/* === Forms === */
body[data-role="PlataformaAdmin"] .form-control,
body[data-role="PlataformaAdmin"] .form-select,
body[data-role="PlataformaAdmin"] input[type="text"],
body[data-role="PlataformaAdmin"] input[type="email"],
body[data-role="PlataformaAdmin"] input[type="number"],
body[data-role="PlataformaAdmin"] input[type="date"],
body[data-role="PlataformaAdmin"] input[type="password"],
body[data-role="PlataformaAdmin"] input[type="search"],
body[data-role="PlataformaAdmin"] textarea,
body[data-role="PlataformaAdmin"] select {
    background: var(--cd-card-bg);
    border: 1px solid var(--cd-card-border);
    color: var(--cd-text);
}
/* Override do SVG da seta dos <select>: o Bootstrap usa por defeito stroke=#343a40
   (cinza escuro) que fica invisível em fundo dark. Aqui forçamos uma seta clara
   (#cbd5e1) e mantemos o posicionamento/dimensão originais para não desalinhar. */
body[data-role="PlataformaAdmin"] .form-select,
body[data-role="PlataformaAdmin"] select.form-select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23cbd5e1' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 16px 12px;
    padding-right: 2.25rem;
}
body[data-role="PlataformaAdmin"] .form-control:focus,
body[data-role="PlataformaAdmin"] .form-select:focus,
body[data-role="PlataformaAdmin"] textarea:focus,
body[data-role="PlataformaAdmin"] input:focus {
    background: var(--cd-card-bg);
    border-color: var(--cd-accent);
    box-shadow: 0 0 0 3px var(--cd-accent-soft);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .form-control::placeholder,
body[data-role="PlataformaAdmin"] input::placeholder {
    color: #5C6675;
}
body[data-role="PlataformaAdmin"] .form-label,
body[data-role="PlataformaAdmin"] label {
    color: #B5C0CC;
}

/* === Badges === */
body[data-role="PlataformaAdmin"] .badge.bg-primary {
    background-color: var(--cd-accent) !important;
    color: var(--cd-accent-on) !important;
}
body[data-role="PlataformaAdmin"] .badge.bg-success {
    background-color: var(--cd-success) !important;
    color: #07090D !important;
}
body[data-role="PlataformaAdmin"] .badge.bg-warning {
    background-color: var(--cd-warning) !important;
    color: #07090D !important;
}
body[data-role="PlataformaAdmin"] .badge.bg-danger {
    background-color: var(--cd-danger) !important;
    color: #fff !important;
}
body[data-role="PlataformaAdmin"] .badge.bg-info {
    background-color: var(--cd-info) !important;
    color: #07090D !important;
}
body[data-role="PlataformaAdmin"] .badge.bg-secondary,
body[data-role="PlataformaAdmin"] .badge.bg-light {
    background-color: var(--cd-card-bg-elevated) !important;
    color: #B5C0CC !important;
}

/* Texto colorido semântico */
body[data-role="PlataformaAdmin"] .text-success { color: var(--cd-success) !important; }
body[data-role="PlataformaAdmin"] .text-warning { color: var(--cd-warning) !important; }
body[data-role="PlataformaAdmin"] .text-danger  { color: var(--cd-danger) !important; }
body[data-role="PlataformaAdmin"] .text-info    { color: var(--cd-info) !important; }
body[data-role="PlataformaAdmin"] .text-primary { color: var(--cd-accent) !important; }

/* === Modais === */
body[data-role="PlataformaAdmin"] .modal-content {
    background: var(--cd-card-bg-elevated);
    border: 1px solid var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .modal-header,
body[data-role="PlataformaAdmin"] .modal-footer {
    border-color: var(--cd-card-border);
}
body[data-role="PlataformaAdmin"] .btn-close {
    filter: invert(1) brightness(1.4);
}

/* === Dropdowns / popovers === */
body[data-role="PlataformaAdmin"] .dropdown-menu {
    background: var(--cd-card-bg-elevated);
    border: 1px solid var(--cd-card-border);
    color: var(--cd-text);
    box-shadow: 0 12px 32px rgba(0,0,0,.6);
}
body[data-role="PlataformaAdmin"] .dropdown-item {
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .dropdown-item:hover,
body[data-role="PlataformaAdmin"] .dropdown-item:focus {
    background: var(--cd-accent-soft);
    color: var(--cd-accent);
}

/* === Alertas === */
body[data-role="PlataformaAdmin"] .alert-success {
    background: rgba(34, 216, 139, 0.10);
    border-color: rgba(34, 216, 139, 0.3);
    color: var(--cd-success);
}
body[data-role="PlataformaAdmin"] .alert-warning {
    background: rgba(245, 197, 24, 0.10);
    border-color: rgba(245, 197, 24, 0.3);
    color: var(--cd-warning);
}
body[data-role="PlataformaAdmin"] .alert-danger {
    background: rgba(240, 80, 110, 0.10);
    border-color: rgba(240, 80, 110, 0.3);
    color: var(--cd-danger);
}
body[data-role="PlataformaAdmin"] .alert-info {
    background: rgba(88, 166, 255, 0.10);
    border-color: rgba(88, 166, 255, 0.3);
    color: var(--cd-info);
}

/* === KPI grid no Dashboard Plataforma — ícones semânticos === */
body[data-role="PlataformaAdmin"] .ico.blue   { background: linear-gradient(135deg, #58A6FF, #2876C7) !important; color: #07090D !important; }
body[data-role="PlataformaAdmin"] .ico.green  { background: linear-gradient(135deg, var(--cd-accent), var(--cd-accent-strong)) !important; color: #07090D !important; }
body[data-role="PlataformaAdmin"] .ico.amber  { background: linear-gradient(135deg, #F5C518, #C99E04) !important; color: #07090D !important; }
body[data-role="PlataformaAdmin"] .ico.red    { background: linear-gradient(135deg, #F0506E, #C42849) !important; color: #fff !important; }
body[data-role="PlataformaAdmin"] .ico.purple { background: linear-gradient(135deg, #BD93F9, #7B5BCF) !important; color: #07090D !important; }
body[data-role="PlataformaAdmin"] .ico.teal   { background: linear-gradient(135deg, #50FA7B, #198754) !important; color: #07090D !important; }

/* === Quotas grid — manter cores semânticas === */
body[data-role="PlataformaAdmin"] .cell.paga      { background: var(--cd-success); color: #07090D; }
body[data-role="PlataformaAdmin"] .cell.pendente  { background: var(--cd-danger);  color: #fff; }
body[data-role="PlataformaAdmin"] .cell.atraso    { background: #B83154;            color: #fff; }
body[data-role="PlataformaAdmin"] .cell.vazio     { background: var(--cd-warning); color: #07090D; }
body[data-role="PlataformaAdmin"] .cell.cancelada { background: #4A5260;            color: #B5C0CC; }
body[data-role="PlataformaAdmin"] .cell.futuro    { background: var(--cd-card-bg-elevated); color: #5C6675; opacity: 1; }
body[data-role="PlataformaAdmin"] .mapa-table tbody td.frac-id,
body[data-role="PlataformaAdmin"] .mapa-table tbody td.total-cell {
    background: var(--cd-card-bg);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .mapa-table thead th {
    background: rgba(0,0,0,.25);
    color: var(--cd-muted);
}

/* === Tour overlay === */
body[data-role="PlataformaAdmin"] .cd-tour-pop {
    background: var(--cd-card-bg-elevated);
    color: var(--cd-text);
    box-shadow: 0 10px 40px var(--cd-accent-soft), 0 8px 32px rgba(0,0,0,.6);
    border: 1px solid var(--cd-accent);
}
body[data-role="PlataformaAdmin"] .cd-tour-pop .cd-tour-next {
    background: var(--cd-accent);
    color: var(--cd-accent-on);
}
body[data-role="PlataformaAdmin"] .cd-tour-pop .cd-tour-next:hover {
    background: var(--cd-accent-hover);
}
body[data-role="PlataformaAdmin"] .cd-tour-pop .cd-tour-skip {
    color: var(--cd-muted);
}
body[data-role="PlataformaAdmin"] .cd-tour-spotlight {
    box-shadow: 0 0 0 9999px rgba(0,0,0,.75);
}

/* === Scrollbars === */
body[data-role="PlataformaAdmin"] ::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
body[data-role="PlataformaAdmin"] ::-webkit-scrollbar-track {
    background: var(--cd-card-bg);
}
body[data-role="PlataformaAdmin"] ::-webkit-scrollbar-thumb {
    background: var(--cd-card-border);
    border-radius: 5px;
}
body[data-role="PlataformaAdmin"] ::-webkit-scrollbar-thumb:hover {
    background: var(--cd-accent);
}

/* === Toasts === */
body[data-role="PlataformaAdmin"] .toast {
    background: var(--cd-card-bg-elevated);
    color: var(--cd-text);
    border: 1px solid var(--cd-card-border);
}

/* === Tabs === */
body[data-role="PlataformaAdmin"] .nav-pills .nav-link {
    color: #B5C0CC;
}
body[data-role="PlataformaAdmin"] .nav-pills .nav-link:hover {
    color: var(--cd-accent);
    background: var(--cd-accent-soft);
}
body[data-role="PlataformaAdmin"] .nav-pills .nav-link.active {
    background: var(--cd-accent);
    color: var(--cd-accent-on);
}
body[data-role="PlataformaAdmin"] .nav-tabs {
    border-bottom-color: var(--cd-card-border);
}
body[data-role="PlataformaAdmin"] .nav-tabs .nav-link {
    color: #B5C0CC;
    border-color: transparent;
}
body[data-role="PlataformaAdmin"] .nav-tabs .nav-link:hover {
    color: var(--cd-text);
    border-color: var(--cd-card-border) var(--cd-card-border) transparent;
}
body[data-role="PlataformaAdmin"] .nav-tabs .nav-link.active {
    background: var(--cd-card-bg);
    color: var(--cd-accent);
    border-color: var(--cd-card-border) var(--cd-card-border) var(--cd-card-bg);
}

/* === Assistente IA — chat usa hardcoded #f8f9fa/white em assistente.html.
   Override aqui para integrar com o tema escuro do PlataformaAdmin. === */
body[data-role="PlataformaAdmin"] .chat-messages {
    background: var(--cd-card-bg) !important;
    border: 1px solid var(--cd-card-border);
    border-bottom: none;
}
body[data-role="PlataformaAdmin"] .msg.user .bubble {
    background: var(--cd-accent) !important;
    color: var(--cd-accent-on) !important;
}
body[data-role="PlataformaAdmin"] .msg.bot .bubble {
    background: var(--cd-card-bg-elevated) !important;
    color: var(--cd-text) !important;
    border: 1px solid var(--cd-card-border) !important;
}
body[data-role="PlataformaAdmin"] .msg.user .avatar {
    background: var(--cd-accent-strong) !important;
    color: var(--cd-text) !important;
}
body[data-role="PlataformaAdmin"] .msg.bot .avatar {
    background: var(--cd-warning) !important;
    color: #07090D !important;
}
body[data-role="PlataformaAdmin"] .input-area {
    background: var(--cd-card-bg) !important;
    border-top: 1px solid var(--cd-card-border) !important;
}
body[data-role="PlataformaAdmin"] .msg.bot .timestamp { color: var(--cd-muted) !important; }
body[data-role="PlataformaAdmin"] .msg.user .timestamp { color: rgba(7, 9, 13, 0.7) !important; }
body[data-role="PlataformaAdmin"] .bubble .md code {
    background: rgba(255, 255, 255, 0.08) !important;
    color: var(--cd-accent-hover);
}
body[data-role="PlataformaAdmin"] .msg.user .bubble .md code {
    background: rgba(0, 0, 0, 0.18) !important;
    color: var(--cd-accent-on);
}
body[data-role="PlataformaAdmin"] .typing { color: var(--cd-muted) !important; }

/* === Marketplace badges === */
body[data-role="PlataformaAdmin"] .mk-card__badge--verified {
    background: var(--cd-accent-soft);
    color: var(--cd-accent);
}
body[data-role="PlataformaAdmin"] .mk-card__badge--sponsored {
    background: rgba(245, 197, 24, 0.15);
    color: var(--cd-warning);
}

/* === Overrides genéricos de utility classes do Bootstrap que vazam fundos
   claros sobre o nosso tema dark. Escopadas a PlataformaAdmin para não afectar
   a vista do Administrador (light theme legítimo). === */

/* Backgrounds claros — remapear para surface elevada do tema dark.
   Cobre: .bg-light, .bg-white, .bg-body, .bg-body-tertiary e *-subtle. */
body[data-role="PlataformaAdmin"] .bg-light,
body[data-role="PlataformaAdmin"] .bg-white,
body[data-role="PlataformaAdmin"] .bg-body,
body[data-role="PlataformaAdmin"] .bg-body-secondary,
body[data-role="PlataformaAdmin"] .bg-body-tertiary,
body[data-role="PlataformaAdmin"] .bg-secondary-subtle,
body[data-role="PlataformaAdmin"] .card.bg-light,
body[data-role="PlataformaAdmin"] .card.bg-white,
body[data-role="PlataformaAdmin"] .card.bg-body {
    background-color: var(--cd-card-bg-elevated) !important;
    color: var(--cd-text) !important;
    border-color: var(--cd-card-border);
}

/* Variantes coloridas *-subtle do Bootstrap 5.3+ ficam quase-brancas e ilegíveis
   no dark. Mantêm-se com tint semântico mas backgrounds escuros + texto da
   cor correspondente para legibilidade. */
body[data-role="PlataformaAdmin"] .bg-primary-subtle {
    background-color: var(--cd-accent-soft) !important;
    color: var(--cd-accent) !important;
}
body[data-role="PlataformaAdmin"] .bg-success-subtle {
    background-color: rgba(34, 216, 139, 0.12) !important;
    color: var(--cd-success) !important;
}
body[data-role="PlataformaAdmin"] .bg-warning-subtle {
    background-color: rgba(245, 197, 24, 0.12) !important;
    color: var(--cd-warning) !important;
}
body[data-role="PlataformaAdmin"] .bg-danger-subtle {
    background-color: rgba(240, 80, 110, 0.12) !important;
    color: var(--cd-danger) !important;
}
body[data-role="PlataformaAdmin"] .bg-info-subtle {
    background-color: rgba(88, 166, 255, 0.12) !important;
    color: var(--cd-info) !important;
}

/* .text-dark — força a usar o texto do tema para não ficar invisível */
body[data-role="PlataformaAdmin"] .text-dark,
body[data-role="PlataformaAdmin"] .text-body,
body[data-role="PlataformaAdmin"] .text-body-emphasis {
    color: var(--cd-text) !important;
}
body[data-role="PlataformaAdmin"] .text-body-secondary,
body[data-role="PlataformaAdmin"] .text-secondary {
    color: var(--cd-muted) !important;
}

/* Texto interior em .bg-light continua a precisar de contraste */
body[data-role="PlataformaAdmin"] .bg-light .text-muted,
body[data-role="PlataformaAdmin"] .bg-white .text-muted,
body[data-role="PlataformaAdmin"] .bg-body .text-muted {
    color: var(--cd-muted) !important;
}
body[data-role="PlataformaAdmin"] .bg-light .text-dark,
body[data-role="PlataformaAdmin"] .bg-white .text-dark,
body[data-role="PlataformaAdmin"] .bg-body .text-dark {
    color: var(--cd-text) !important;
}

/* Badges com .bg-light .text-dark precisam manter contraste — agora o fundo
   do badge é dark elevado, logo o texto deve ser claro. */
body[data-role="PlataformaAdmin"] .badge.bg-light.text-dark,
body[data-role="PlataformaAdmin"] .badge.bg-white.text-dark {
    background-color: var(--cd-card-bg-elevated) !important;
    color: var(--cd-text) !important;
    border: 1px solid var(--cd-card-border);
}
/* badge.bg-light.text-success / .text-warning / .text-secondary etc. —
   manter o tint semântico do texto mas com fundo escuro elevado. */
body[data-role="PlataformaAdmin"] .badge.bg-light {
    border: 1px solid var(--cd-card-border);
}
body[data-role="PlataformaAdmin"] .badge.bg-light.text-success { color: var(--cd-success) !important; }
body[data-role="PlataformaAdmin"] .badge.bg-light.text-warning { color: var(--cd-warning) !important; }
body[data-role="PlataformaAdmin"] .badge.bg-light.text-danger  { color: var(--cd-danger) !important; }
body[data-role="PlataformaAdmin"] .badge.bg-light.text-info    { color: var(--cd-info) !important; }
body[data-role="PlataformaAdmin"] .badge.bg-light.text-primary { color: var(--cd-accent) !important; }
body[data-role="PlataformaAdmin"] .badge.bg-light.text-secondary { color: var(--cd-muted) !important; }

/* === List groups (assembleias, notificações, subscricao-detalhe) === */
body[data-role="PlataformaAdmin"] .list-group-item {
    background-color: var(--cd-card-bg);
    border-color: var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .list-group-item-action:hover,
body[data-role="PlataformaAdmin"] .list-group-item-action:focus {
    background-color: var(--cd-card-bg-elevated);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .list-group-item.active {
    background-color: var(--cd-accent-soft);
    border-color: var(--cd-accent);
    color: var(--cd-accent);
}

/* === Pagination === */
body[data-role="PlataformaAdmin"] .page-link {
    background-color: var(--cd-card-bg);
    border-color: var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .page-link:hover {
    background-color: var(--cd-card-bg-elevated);
    color: var(--cd-accent);
    border-color: var(--cd-card-border);
}
body[data-role="PlataformaAdmin"] .page-item.active .page-link {
    background-color: var(--cd-accent);
    border-color: var(--cd-accent);
    color: var(--cd-accent-on);
}
body[data-role="PlataformaAdmin"] .page-item.disabled .page-link {
    background-color: var(--cd-card-bg);
    border-color: var(--cd-card-border);
    color: var(--cd-muted);
}

/* === Breadcrumbs === */
body[data-role="PlataformaAdmin"] .breadcrumb {
    background-color: transparent;
    color: var(--cd-muted);
}
body[data-role="PlataformaAdmin"] .breadcrumb-item,
body[data-role="PlataformaAdmin"] .breadcrumb-item a {
    color: var(--cd-muted);
}
body[data-role="PlataformaAdmin"] .breadcrumb-item.active {
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .breadcrumb-item + .breadcrumb-item::before {
    color: var(--cd-muted);
}

/* === selecionar-condominio.html — fix de hover dos .cond-card e .cond-row.
   Os estilos locais usam var(--cd-table-hover) que não existe no tema dark,
   e o stat-num.warn/danger/success usam cores hex que ficam ilegíveis ao
   tornar o card mais escuro em hover. Damos-lhes acabamento alinhado ao tema. === */
body[data-role="PlataformaAdmin"] .cond-card {
    background: var(--cd-card-bg);
    border-color: var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .cond-card:hover {
    background: var(--cd-card-bg-elevated);
    border-color: var(--cd-accent);
    box-shadow: 0 12px 28px rgba(0,0,0,.5), 0 0 0 1px var(--cd-accent-soft);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .cond-card:hover .cond-morada,
body[data-role="PlataformaAdmin"] .cond-card:hover .stat-label,
body[data-role="PlataformaAdmin"] .cond-card:hover .text-muted {
    color: #B5C0CC !important;
}
body[data-role="PlataformaAdmin"] .cond-card .cond-stats {
    background: rgba(255, 255, 255, 0.03);
}
body[data-role="PlataformaAdmin"] .cond-card .stat-num.warn {
    color: var(--cd-warning);
}
body[data-role="PlataformaAdmin"] .cond-card .stat-num.danger {
    color: var(--cd-danger);
}
body[data-role="PlataformaAdmin"] .cond-card .stat-num.success {
    color: var(--cd-success);
}
body[data-role="PlataformaAdmin"] .cond-card.add-new:hover {
    background: var(--cd-accent-soft);
    border-color: var(--cd-accent);
    color: var(--cd-accent);
}
/* .cond-row (vista de lista) — herda o mesmo padrão */
body[data-role="PlataformaAdmin"] .cond-row {
    background: var(--cd-card-bg);
    border-color: var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .cond-row:hover {
    background: var(--cd-card-bg-elevated);
    border-color: var(--cd-accent);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .cond-row:hover .cond-morada,
body[data-role="PlataformaAdmin"] .cond-row:hover .text-muted,
body[data-role="PlataformaAdmin"] .cond-row:hover small {
    color: #B5C0CC !important;
}

/* logo-box: o fundo branco do <img> serve para logos transparentes, mas
   destoa do tema. Mantemos um fundo neutro escuro só para PlataformaAdmin. */
body[data-role="PlataformaAdmin"] .cond-card .cond-logo-box img,
body[data-role="PlataformaAdmin"] .cond-row .cond-logo-box img {
    background: var(--cd-card-bg-elevated);
}

/* === Hero saudação (selecionar-condominio.html) === */
body[data-role="PlataformaAdmin"] .hero-saudacao {
    background: linear-gradient(135deg, var(--cd-card-bg) 0%, var(--cd-card-bg-elevated) 100%) !important;
    border: 1px solid var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .hero-saudacao .btn-glass {
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--cd-card-border);
    color: var(--cd-text);
}
body[data-role="PlataformaAdmin"] .hero-saudacao .btn-glass:hover {
    background: var(--cd-accent-soft);
    color: var(--cd-accent);
    border-color: var(--cd-accent);
}

/* === Empty states box (vários ficheiros) === */
body[data-role="PlataformaAdmin"] .empty-state-box,
body[data-role="PlataformaAdmin"] .empty-mini {
    background: var(--cd-card-bg);
    border-color: var(--cd-card-border);
    color: var(--cd-muted);
}

/* === Pills semânticas pastel hardcoded em várias páginas admin
   (admin-faturas, admin-tickets, admin-announcements, suporte, faturas,
    cliente-detalhe). Mantemos o significado semântico do tint, mas
   adaptamos para fundos tintados-escuros + texto na cor base, para
   legibilidade no tema dark. === */

/* "pendente" / "aviso" / "alta" / "em_resposta" — amarelo/warning */
body[data-role="PlataformaAdmin"] .badge-pendente,
body[data-role="PlataformaAdmin"] .priority-pill.alta,
body[data-role="PlataformaAdmin"] .estado-pill.em_resposta,
body[data-role="PlataformaAdmin"] .sev-pill.aviso,
body[data-role="PlataformaAdmin"] .health-pill.atencao {
    background: rgba(245, 197, 24, 0.15) !important;
    color: var(--cd-warning) !important;
    border: 1px solid rgba(245, 197, 24, 0.3);
}

/* "urgente" / danger / vermelho */
body[data-role="PlataformaAdmin"] .priority-pill.urgente,
body[data-role="PlataformaAdmin"] .estado-pill.fechado,
body[data-role="PlataformaAdmin"] .health-pill.critico {
    background: rgba(240, 80, 110, 0.15) !important;
    color: var(--cd-danger) !important;
    border: 1px solid rgba(240, 80, 110, 0.3);
}

/* "info" / "aberto" — azul */
body[data-role="PlataformaAdmin"] .estado-pill.aberto,
body[data-role="PlataformaAdmin"] .sev-pill.info {
    background: rgba(88, 166, 255, 0.15) !important;
    color: var(--cd-info) !important;
    border: 1px solid rgba(88, 166, 255, 0.3);
}

/* "saudavel" / "ok" — verde */
body[data-role="PlataformaAdmin"] .health-pill.saudavel,
body[data-role="PlataformaAdmin"] .estado-pill.resolvido,
body[data-role="PlataformaAdmin"] .badge-pago {
    background: rgba(34, 216, 139, 0.12) !important;
    color: var(--cd-success) !important;
    border: 1px solid rgba(34, 216, 139, 0.3);
}

/* Marketplace badges (cobertos pelas vars verified/sponsored mais acima
   mas garantimos override aqui caso a especificidade falhe) */
body[data-role="PlataformaAdmin"] .mk-card__logo {
    background: var(--cd-card-bg-elevated) !important;
    border-color: var(--cd-card-border) !important;
}

/* segredo-box (integracoes.html) — caixa amarela claríssima de API keys */
body[data-role="PlataformaAdmin"] .segredo-box {
    background: rgba(245, 197, 24, 0.12) !important;
    border-color: rgba(245, 197, 24, 0.3) !important;
    color: var(--cd-warning) !important;
}

/* === Swatches/Pickers da página perfil (componente próprio) === */
.cd-theme-swatch {
    display: inline-block;
    width: 44px; height: 44px;
    border-radius: 50%;
    cursor: pointer;
    position: relative;
    margin-right: .5rem;
    border: 3px solid transparent;
    transition: transform .15s, border-color .15s;
}
.cd-theme-swatch:hover { transform: scale(1.08); }
.cd-theme-swatch.active { border-color: var(--cd-text); }
.cd-theme-swatch.active::after {
    content: '✓';
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #07090D;
    font-weight: 700;
    font-size: 1.2rem;
}
.cd-theme-swatch--emerald { background: linear-gradient(135deg, #10B981, #064E3B); }
.cd-theme-swatch--cyan    { background: linear-gradient(135deg, #06B6D4, #155E75); }
.cd-theme-swatch--amber   { background: linear-gradient(135deg, #F59E0B, #78350F); }
.cd-theme-swatch--indigo  { background: linear-gradient(135deg, #818CF8, #312E81); }
