/* public/css/style.css - VERSÃO CONSOLIDADA E OTIMIZADA */

:root {
    /* Design System - Cores Base (Default Light) */
    --primary: #0d6efd;
    --nav-bg: #1a1d21;
    --bg-body: #f8f9fa;
    --bg-card: #ffffff;
    --text-main: #212529;
    --text-muted: #6c757d;
    --border-color: #dee2e6;
    
    /* Variantes Soft */
    --soft-info: rgba(13, 202, 240, 0.1);
    --soft-success: rgba(25, 135, 84, 0.1);
    --soft-secondary: rgba(108, 117, 125, 0.1);
    --soft-danger: rgba(220, 53, 69, 0.1);
    --soft-primary: rgba(13, 110, 253, 0.08);
    --soft-warning: rgba(255, 193, 7, 0.1);

    --navbar-text: rgba(255, 255, 255, 0.85);
    --navbar-active: #fff;
    /* 7. DASHBOARD & PORTFOLIO SPECIFICS */
    --hero-initial-bg: linear-gradient(135deg,#f0f4ff 0%,#dde8fd 100%);
    --hero-initial-icon: #4a6cf7;
    --hero-deposits-bg: linear-gradient(135deg,#edfbf3 0%,#c7f0da 100%);
    --hero-deposits-icon: #16a34a;
    --hero-deposits-empty-bg: linear-gradient(135deg,#f7f8fa 0%,#ebedf0 100%);
    --hero-empty-bg: linear-gradient(135deg,#f7f8fa 0%,#ebedf0 100%);
    --hero-final-pos-bg: linear-gradient(135deg,#eef5ff 0%,#c7dafc 100%);
    --hero-final-neg-bg: linear-gradient(135deg,#fff1f3 0%,#ffd5da 100%);
    --hero-tax-bg: linear-gradient(135deg, #fff5f5 0%, #ffe3e3 100%);
    --bg-light-subtle: #f8f9fa;
    --close-btn-filter: none;
}

[data-theme="dark"] {
    --bg-body: #0f1114;
    --bg-card: #1a1d21;
    --text-main: #e9ecef;
    --text-muted: #adb5bd;
    --border-color: #2d3238;

    --soft-info: rgba(13, 202, 240, 0.15);
    --soft-success: rgba(25, 135, 84, 0.15);
    --soft-secondary: rgba(108, 117, 125, 0.15);
    --soft-danger: rgba(220, 53, 69, 0.15);
    --soft-primary: rgba(13, 110, 253, 0.12);
    --soft-warning: rgba(255, 193, 7, 0.15);

    --navbar-text: rgba(255, 255, 255, 0.65);
    --navbar-active: #0d6efd;

    --hero-initial-bg: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    --hero-initial-icon: #60a5fa;
    --hero-deposits-bg: linear-gradient(135deg, #064e3b 0%, #022c22 100%);
    --hero-deposits-icon: #4ade80;
    --hero-deposits-empty-bg: linear-gradient(135deg, #1e293b 0%, #161b22 100%);
    --hero-empty-bg: linear-gradient(135deg, #1e293b 0%, #161b22 100%);
    --hero-final-pos-bg: linear-gradient(135deg, #1e3a8a 0%, #172554 100%);
    --hero-final-neg-bg: linear-gradient(135deg, #7f1d1d 0%, #450a0a 100%);
    --hero-tax-bg: linear-gradient(135deg, #450a0a 0%, #7f1d1d 100%);
    --bg-light-subtle: #1a1d21;
    --close-btn-filter: invert(1) grayscale(100%) brightness(200%);
}

/* 1. BASE & NAVBAR */
body {
    background-color: var(--bg-body);
    color: var(--text-main);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.card {
    background-color: var(--bg-card);
    border-color: var(--border-color);
}

.text-dark { color: var(--text-main) !important; }
.text-muted { color: var(--text-muted) !important; }
.bg-white { background-color: var(--bg-card) !important; }
.border-bottom, .border-top, .border { border-color: var(--border-color) !important; }

.navbar {
    background-color: var(--nav-bg) !important;
    padding: 0.75rem 0;
    border-bottom: 1px solid rgba(255,255,255,0.08);
}

.navbar-dark .navbar-nav .nav-link { color: var(--navbar-text); }
.navbar-dark .navbar-nav .nav-link.active { color: var(--navbar-active); }

.navbar-brand {
    font-weight: 800;
    background: linear-gradient(45deg, #fff 30%, var(--primary));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* 2. TABELAS (DataTables & Auditoria) */
#assetsTable th, #portfoliosTable th { font-weight: 600; color: var(--text-main); }

/* Ajuste de espaçamento comum para todas as tabelas principais */
#assetsTable td, #assetsTable th,
#portfoliosTable td, #portfoliosTable th,
#auditTable td, #auditTable th { 
    padding-left: 0.4rem !important; 
    padding-right: 0.4rem !important; 
    padding-top: 0.8rem !important;
    padding-bottom: 0.8rem !important;
}

#assetsTable .ps-3, #portfoliosTable .ps-3, #auditTable .ps-4 { padding-left: 1rem !important; }
#assetsTable .pe-3, #portfoliosTable .pe-3, #auditTable .pe-4 { padding-right: 1.5rem !important; }

.table-rounded { border-radius: 8px; overflow: hidden; border: 1px solid var(--border-color); }

.table-responsive-audit { 
    max-height: 450px; 
    overflow-y: auto; 
    border-radius: 8px; 
    border: 1px solid var(--border-color);
}

.sticky-top-table { 
    position: sticky; top: -1px; z-index: 10; 
    background: var(--bg-card) !important; box-shadow: 0 2px 5px rgba(0,0,0,0.05); 
}

/* 3. COMPONENTES (Badges, Buttons, Cards) */
.bg-soft-info { background-color: var(--soft-info) !important; color: #087990 !important; }
.bg-soft-success { background-color: var(--soft-success) !important; color: #198754 !important; }
.bg-soft-secondary { background-color: var(--soft-secondary) !important; color: #6c757d !important; }
.bg-soft-danger { background-color: var(--soft-danger) !important; color: #dc3545 !important; }
.bg-soft-primary { background-color: var(--soft-primary) !important; color: var(--primary) !important; }
.bg-soft-warning { background-color: var(--soft-warning) !important; color: #856404 !important; }

.btn-white { background: var(--bg-card); color: var(--text-main); border: 1px solid var(--border-color) !important; transition: background 0.2s; }
.btn-white:hover { background: var(--bg-body); color: var(--text-main); }

.theme-toggle {
    cursor: pointer;
    padding: 8px;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    border: 1px solid rgba(255,255,255,0.1);
    color: var(--navbar-text);
}

.theme-toggle:hover {
    background: rgba(255,255,255,0.1);
    color: #fff;
    transform: rotate(15deg);
}

[data-theme="dark"] .theme-toggle {
    color: #ffc107;
}

[data-theme="dark"] .bg-light { background-color: var(--bg-body) !important; color: var(--text-main) !important; }
[data-theme="dark"] .bg-white { background-color: var(--bg-card) !important; color: var(--text-main) !important; }
[data-theme="dark"] .form-control, [data-theme="dark"] .form-select {
    background-color: var(--bg-card);
    color: var(--text-main);
    border-color: var(--border-color);
}
[data-theme="dark"] .form-control:focus, [data-theme="dark"] .form-select:focus {
    background-color: var(--bg-card);
    color: var(--text-main);
    border-color: var(--primary);
}
[data-theme="dark"] .table-hover tbody tr:hover {
    background-color: rgba(255, 255, 255, 0.04);
}
[data-theme="dark"] .btn-outline-secondary {
    color: var(--text-muted);
    border-color: var(--border-color);
}
[data-theme="dark"] .btn-outline-secondary:hover {
    background-color: var(--bg-body);
    color: var(--text-main);
    border-color: var(--text-muted);
}
[data-theme="dark"] .modal-header .btn-close {
    filter: var(--close-btn-filter);
}
[data-theme="dark"] .btn-light {
    background-color: var(--bg-body);
    color: var(--text-main);
    border-color: var(--border-color);
}
[data-theme="dark"] .btn-light:hover {
    background-color: var(--bg-card);
    color: var(--text-main);
    border-color: var(--text-muted);
}
[data-theme="dark"] .form-check-label {
    color: var(--text-main);
}
[data-theme="dark"] .form-text {
    color: var(--text-muted);
}
[data-theme="dark"] .card-header {
    background-color: rgba(255, 255, 255, 0.03) !important;
    border-bottom-color: var(--border-color) !important;
}
[data-theme="dark"] .badge.bg-light {
    background-color: rgba(255, 255, 255, 0.08) !important;
    color: var(--text-muted) !important;
    border-color: var(--border-color) !important;
}
[data-theme="dark"] .input-group-text {
    background-color: var(--bg-body);
    color: var(--text-muted);
    border-color: var(--border-color);
}
[data-theme="dark"] .page-link {
    background-color: var(--bg-card);
    border-color: var(--border-color);
    color: var(--text-main);
}
[data-theme="dark"] .page-item.active .page-link {
    background-color: var(--primary);
    border-color: var(--primary);
    color: #fff;
}
[data-theme="dark"] .page-item.disabled .page-link {
    background-color: var(--bg-body);
    border-color: var(--border-color);
    color: var(--text-muted);
}
[data-theme="dark"] .dataTables_wrapper .dataTables_length,
[data-theme="dark"] .dataTables_wrapper .dataTables_filter,
[data-theme="dark"] .dataTables_wrapper .dataTables_info,
[data-theme="dark"] .dataTables_wrapper .dataTables_paginate {
    color: var(--text-muted) !important;
}
[data-theme="dark"] .list-group-item { background-color: var(--bg-card); color: var(--text-main); border-color: var(--border-color); }
[data-theme="dark"] .list-group-item-action:hover { background-color: var(--bg-body); color: var(--text-main); }
[data-theme="dark"] .dropdown-menu { background-color: var(--bg-card); border-color: var(--border-color); }
[data-theme="dark"] .dropdown-item { color: var(--text-main); }
[data-theme="dark"] .dropdown-item:hover { background-color: var(--bg-body); }
[data-theme="dark"] .dropdown-divider { border-top-color: var(--border-color); }

/* Tag filter (<tag-filter> web component): on mobile the floating dropdown
   menu can end up clipped/hidden under the content below it (real-device
   viewport quirks that don't reproduce with desktop devtools emulation).
   Render it inline instead, so it pushes following content down rather
   than floating on top of it. */
@media (max-width: 767.98px) {
    .tag-filter-menu.dropdown-menu {
        position: static !important;
        transform: none !important;
        inset: auto !important;
        width: 100%;
        margin-top: .375rem;
        box-shadow: none !important;
    }
}
[data-theme="dark"] .alert-bordered-warning { background-color: rgba(255, 193, 7, 0.05); }
[data-theme="dark"] .table-light { --bs-table-bg: var(--bg-card); --bs-table-color: var(--text-main); }
[data-theme="dark"] .modal-content { background-color: var(--bg-card); color: var(--text-main); }
[data-theme="dark"] .modal-header, [data-theme="dark"] .modal-footer { border-color: var(--border-color); }
[data-theme="dark"] .modal-footer.bg-light { background-color: var(--bg-body) !important; }
[data-theme="dark"] .form-select.bg-light, [data-theme="dark"] .form-control.bg-light-subtle, [data-theme="dark"] .input-group-text.bg-light-subtle { background-color: var(--bg-body) !important; color: var(--text-main); }
[data-theme="dark"] .form-select.bg-light-subtle { background-color: var(--bg-body) !important; color: var(--text-main); }

.btn-action-quick { 
    transition: all 0.3s; border: 1px dashed var(--border-color); 
    text-decoration: none; display: block; 
    background-color: var(--bg-card);
}
.btn-action-quick:hover { background: var(--bg-body); border-style: solid; transform: translateY(-2px); box-shadow: 0 4px 6px rgba(0,0,0,0.1); }

.metric-card { transition: transform 0.2s; border: 1px solid var(--border-color); box-shadow: 0 2px 4px rgba(0,0,0,.05); background-color: var(--bg-card); }
.metric-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0,0,0,0.1); }

/* Resumo de configuração da simulação — bordas usam variável do tema */
.sim-config-strip > div.border-end { border-color: var(--border-color) !important; }

/* 3. SIMULATION DETAILS (Progresso Mensal) */
.tr-initial-point {
    background-color: var(--soft-primary) !important;
    border-left: 4px solid var(--primary) !important;
}
[data-theme="dark"] .tr-initial-point {
    background-color: rgba(13, 110, 253, 0.15) !important;
}
.tr-initial-point:hover {
    background-color: rgba(13, 110, 253, 0.20) !important;
}
.badge-initial-capital {
    background-color: var(--primary);
    color: white;
    font-size: 0.7rem;
    padding: 0.2rem 0.6rem;
    border-radius: 50rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-weight: 700;
}

/* 4. UTILITÁRIOS ESPECÍFICOS */
.financial-value { font-size: 0.9rem; font-weight: 700; }
.smaller { font-size: 0.75rem; }
.asset-range-info { font-size: 0.75rem; color: #6c757d; margin-top: 2px; }
.rebalanced-row { background-color: rgba(13, 202, 240, 0.03); }

/* Controles de Margens de Rebalanceamento (UEX Senior Revise) */
.margin-input-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px;
    background: var(--bg-light-subtle);
    border-radius: 8px;
    border: 1px solid var(--border-color);
    min-width: 220px;
}

.margin-input-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.margin-input-label {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--text-muted);
    min-width: 35px;
    text-transform: uppercase;
}

.margin-input-control {
    display: flex;
    align-items: center;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    overflow: hidden;
}

.margin-input-btn {
    padding: 4px 10px;
    background: var(--soft-secondary);
    border: none;
    color: var(--text-main);
    font-weight: bold;
    cursor: pointer;
    transition: background 0.2s;
}

.margin-input-btn:hover {
    background: var(--border-color);
}

.margin-input-field {
    width: 60px;
    text-align: center;
    border: none;
    background: transparent;
    color: var(--primary);
    font-weight: 700;
    font-size: 0.85rem;
    outline: none;
    padding: 4px 0;
}

/* Remover as setas padrão do input number */
.margin-input-field::-webkit-inner-spin-button,
.margin-input-field::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.margin-suggested-badge {
    font-size: 0.65rem;
    padding: 2px 8px;
    border-radius: 10px;
    background: var(--soft-info);
    color: var(--primary);
    border: 1px solid rgba(13, 110, 253, 0.2);
    font-weight: bold;
    text-align: center;
    margin-top: 4px;
}

.margin-reset-btn {
    font-size: 0.65rem;
    padding: 2px 6px;
    border-radius: 4px;
    background: transparent;
    color: var(--text-muted);
    border: 1px solid var(--border-color);
    cursor: pointer;
    transition: all 0.2s;
    margin-top: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: fit-content;
    align-self: center;
}

.margin-reset-btn:hover {
    background: var(--soft-primary);
    color: var(--primary);
    border-color: var(--primary);
}

.margin-suggested-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
}

.alert-bordered-warning { border-left: 5px solid #ffc107; background-color: #fffdf5; }

/* ── NOVO APORTE INPUT — UEX Senior Enhancement ── */
.deposit-input-group {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
    border-radius: 8px;
    overflow: hidden;
    border: 2px solid var(--border-color);
    transition: all 0.3s ease;
    background: var(--bg-card);
    display: flex;
    align-items: center;
}

.deposit-input-group:focus-within {
    border-color: #198754;
    box-shadow: 0 4px 12px rgba(25, 135, 84, 0.15),
                inset 0 1px 3px rgba(25, 135, 84, 0.08);
    transform: translateY(-1px);
}

.deposit-currency-badge {
    background: linear-gradient(135deg, #198754 0%, #15653e 100%);
    color: #fff;
    font-weight: 700;
    border: none;
    letter-spacing: 0.5px;
    min-width: 65px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

/* Efeito shine na badge */
.deposit-currency-badge::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
    transition: left 0.5s ease;
}

.deposit-input-group:focus-within .deposit-currency-badge::after {
    left: 100%;
}

.deposit-amount-input {
    border: none;
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text-main);
    background: transparent;
    padding: 12px 16px;
    flex: 1;
    min-width: 100px;
}

.deposit-amount-input::placeholder {
    color: var(--text-muted);
    opacity: 0.5;
    transition: opacity 0.3s ease;
}

.deposit-amount-input:focus {
    background: transparent;
    box-shadow: none;
    outline: none;
    color: var(--text-main);
}

.deposit-amount-input:focus::placeholder {
    opacity: 0.3;
}

.deposit-helper-text {
    background: rgba(25, 135, 84, 0.08);
    color: #198754;
    font-weight: 600;
    font-size: 0.82rem;
    border: none;
    letter-spacing: 0.3px;
    min-width: 110px;
    text-align: center;
    transition: all 0.3s ease;
    position: relative;
    overflow: hidden;
}

.deposit-helper-text::before {
    content: '';
    position: absolute;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(25, 135, 84, 0.1), transparent);
    animation: shimmer 2s infinite;
}

@keyframes shimmer {
    0% { left: -100%; }
    100% { left: 100%; }
}

[data-theme="dark"] .deposit-input-group {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
    border-color: rgba(81, 207, 102, 0.3);
}

[data-theme="dark"] .deposit-input-group:focus-within {
    border-color: #51cf66;
    box-shadow: 0 4px 12px rgba(81, 207, 102, 0.25),
                inset 0 1px 3px rgba(81, 207, 102, 0.1);
}

[data-theme="dark"] .deposit-currency-badge {
    background: linear-gradient(135deg, #51cf66 0%, #37b24d 100%);
    color: #1a1a1a;
}

[data-theme="dark"] .deposit-amount-input {
    color: #e9ecef;
}

[data-theme="dark"] .deposit-amount-input::placeholder {
    color: #868e96;
}

[data-theme="dark"] .deposit-helper-text {
    background: rgba(81, 207, 102, 0.15);
    color: #69db7c;
}

/* Label styling enhancement */
.deposit-amount-input + label,
label[for="deposit_amount"] {
    transition: all 0.3s ease;
}

/* Hint text enhancement below deposit input */
.deposit-hint-text {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-top: 8px;
    padding: 6px 0;
    display: flex;
    align-items: center;
    transition: all 0.3s ease;
    opacity: 0.8;
}

.deposit-hint-text i {
    color: var(--primary);
    opacity: 0.7;
    transition: all 0.3s ease;
}

.deposit-hint-text:hover {
    opacity: 1;
    color: var(--primary);
}

.deposit-hint-text:hover i {
    opacity: 1;
    transform: rotate(15deg);
}

/* Focused state for deposit input container */
.deposit-focused .deposit-input-group {
    border-color: #198754 !important;
    box-shadow: 0 4px 12px rgba(25, 135, 84, 0.15),
                inset 0 1px 3px rgba(25, 135, 84, 0.08) !important;
}

[data-theme="dark"] .deposit-focused .deposit-input-group {
    border-color: #51cf66 !important;
    box-shadow: 0 4px 12px rgba(81, 207, 102, 0.25),
                inset 0 1px 3px rgba(81, 207, 102, 0.1) !important;
}

/* 5. Contentores de Gráficos Chart.js - Define a altura fixa */
.chart-container {
    position: relative;
    /* Ajuste este valor se quiser o gráfico mais alto ou mais baixo */
    height: 500px;
    width: 100%;
}

/* Gráfico de Evolução do Patrimônio — widget do dashboard Carteira Real */
/* Seletor combinado (especificidade 0,2,0) garante override sobre .chart-container */
.chart-container.snap-evolution-chart { height: 280px; }
@media (max-width: 575.98px) {
    .chart-container.snap-evolution-chart { height: 240px; }
}

.transition { transition: all 0.3s ease-in-out; }
.hover-shadow:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0,0,0,0.1) !important; }
.bg-gradient-light { background: linear-gradient(180deg, #ffffff 0%, #fcfdfe 100%); }

/* 6. INFO TOOLTIP BUTTONS */
.info-tooltip {
    opacity: 0.45;
    transition: opacity 0.2s, transform 0.2s;
    line-height: 1;
    vertical-align: middle;
}
.info-tooltip:hover,
.info-tooltip:focus {
    opacity: 1;
    transform: scale(1.15);
}

/* Hero section: display-6 responsive refinement */
@media (max-width: 768px) {
    .display-6 { font-size: 1.5rem; }
}


/* 11. MODAL HELP & REFINEMENTS */
#simulationHelpModal .modal-content {
    border-radius: 1rem;
    overflow: hidden;
}

#simulationHelpModal .card {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

#simulationHelpModal .card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.1) !important;
}

[data-theme='dark'] #simulationHelpModal .bg-light-subtle {
    background-color: rgba(255,255,255,0.03) !important;
}

[data-theme='dark'] #simulationHelpModal .alert-light {
    background-color: rgba(255,255,255,0.05) !important;
    color: var(--text-muted);
}

.btn-link.small {
    font-size: 0.85rem;
    font-weight: 500;
}

.bg-light-subtle {
    background-color: var(--bg-light-subtle) !important;
}

/* 12. Dark mode table visibility fixes (Admin tables & DataTables) */
[data-theme="dark"] .table thead th,
[data-theme="dark"] thead.table-light th {
    color: var(--text-main) !important;
    background-color: var(--bg-card) !important;
    border-color: var(--border-color) !important;
}

/* Fix para ícone do dólar no modo Light */
.bi-currency-dollar {
    color: #198754 !important;
}
[data-theme="dark"] .table td,
[data-theme="dark"] .table th {
    color: var(--text-main) !important;
    border-color: var(--border-color) !important;
}
/* DataTables header sort states */
[data-theme="dark"] table.dataTable thead .sorting,
[data-theme="dark"] table.dataTable thead .sorting_asc,
[data-theme="dark"] table.dataTable thead .sorting_desc {
    color: var(--text-main) !important;
}
/* DataTables pagination buttons */
[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button {
    color: var(--text-main) !important;
}

/* ── Histórico de Simulações — Child Row (Dark Mode) ── */
[data-theme="dark"] .child-config {
    background: var(--bg-card) !important;
    border-color: var(--border-color) !important;
}
[data-theme="dark"] .config-pill {
    background: var(--bg-body) !important;
    border-color: var(--border-color) !important;
    color: var(--text-main) !important;
}
[data-theme="dark"] .config-pill .text-muted { color: var(--text-muted) !important; }
[data-theme="dark"] .config-pill strong      { color: var(--text-main) !important; }
[data-theme="dark"] .child-config table td,
[data-theme="dark"] .child-config table th   { color: var(--text-main) !important; border-color: transparent !important; background: transparent !important; }
[data-theme="dark"] .asset-bar-wrap          { background: var(--border-color) !important; }
[data-theme="dark"] #historyTable tbody tr.child td { background-color: var(--bg-card) !important; }
[data-theme="dark"] tr.dt-hasChild td        { background-color: rgba(13,110,253,.08) !important; }

/* ── 8. NOVO DASHBOARD ─────────────────────────────────────────────────────── */

/* KPI Cards */
.kpi-card {
    background-color: var(--bg-card);
    border-color: var(--border-color) !important;
    transition: transform 0.2s, box-shadow 0.2s;
}
.kpi-card:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0,0,0,.1) !important; }

.kpi-card--pro {
    border-left: 3px solid #f59e0b !important;
}

.kpi-icon {
    width: 32px; height: 32px;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    font-size: .9rem; flex-shrink: 0;
}
.kpi-icon--primary  { background: var(--soft-primary);   color: var(--primary); }
.kpi-icon--success  { background: var(--soft-success);   color: #198754; }
.kpi-icon--warning  { background: var(--soft-warning);   color: #856404; }
.kpi-icon--info     { background: var(--soft-info);      color: #087990; }
.kpi-icon--pro      { background: rgba(245,158,11,.15);  color: #f59e0b; }

/* PRO Upgrade Banner */
.pro-upgrade-banner {
    border: 1px solid rgba(245,158,11,.3) !important;
}
.pro-banner-bg {
    background: linear-gradient(135deg, #1e3a8a 0%, #1d4ed8 100%);
}
[data-theme="dark"] .pro-banner-bg {
    background: linear-gradient(135deg, #172554 0%, #1e3a8a 100%);
}

/* Donut center label */
.donut-center-label {
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
    text-align: center;
    line-height: 1.2;
}

/* Borda right visível apenas em md+ */
@media (min-width: 768px) {
    .border-end-md { border-right: 1px solid var(--border-color) !important; }
}

/* Hover/transition utilitário */
.hover-shadow:hover { box-shadow: 0 8px 25px rgba(0,0,0,.12) !important; }
.transition { transition: all 0.2s ease; }

/* ── Carteira do Investidor Real — Dark Mode Fixes ────────────────────────── */

/* Caixa de detalhes do ativo (Qtd, P. Médio, Taxa, etc.) */
.asset-detail-box {
    background: #f0f4f8;
    font-size: .72rem;
}
[data-theme="dark"] .asset-detail-box {
    background: rgba(255, 255, 255, 0.05);
}

/* Cabeçalho dos grupos estratégicos */
.strategic-group-header {
    cursor: pointer;
    background: linear-gradient(90deg, #f8f9fa 0%, #fff 60%);
    border-bottom: 1px solid #eee;
}
[data-theme="dark"] .strategic-group-header {
    background: linear-gradient(90deg, rgba(255,255,255,.04) 0%, rgba(255,255,255,.02) 60%);
    border-bottom-color: var(--border-color);
}

/* Corpo dos grupos estratégicos */
.strategic-group-body {
    background: #f8f9fa;
}
[data-theme="dark"] .strategic-group-body {
    background: rgba(255, 255, 255, 0.02);
}

/* Barra de controles das métricas do gráfico de evolução */
.snap-controls-bar {
    background: #f8f9fa;
}
[data-theme="dark"] .snap-controls-bar {
    background: var(--bg-body);
}

/* ── Strategy Insights Panel ─────────────────────────────────────────────── */
.strategy-insights-panel {
    border-top: 2px solid #e5e7eb;
}
[data-theme="dark"] .strategy-insights-panel {
    border-top-color: var(--border-color);
}
[data-theme="dark"] .strategy-insights-panel [data-bs-toggle="collapse"] {
    background: linear-gradient(135deg,#1e1b2e 0%,#1a1d2e 100%) !important;
}
[data-theme="dark"] .strategy-insights-panel .collapse > div {
    background: #141618 !important;
}
[data-theme="dark"] .strategy-insights-panel .rounded-3[style*="background:linear-gradient"] {
    filter: brightness(.85);
}

/* Badges de mercado/tipo com background inline */
.badge-market-td   { background: #e3f2fd; }
.badge-market-rf   { background: #fff8e7; }
.badge-market-usa  { background: #e3f2fd; }
.badge-market-brl  { background: #e8f5e9; }
[data-theme="dark"] .badge-market-td,
[data-theme="dark"] .badge-market-usa { background: rgba(13, 110, 253, 0.18) !important; }
[data-theme="dark"] .badge-market-rf  { background: rgba(255, 193, 7, 0.15)  !important; }
[data-theme="dark"] .badge-market-brl { background: rgba(25, 135, 84, 0.18)  !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   ADMIN DASHBOARD — DARK MODE FIXES
   Centraliza todas as correções de dark mode das views administrativas.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Feature cards (Central de Administração) ──────────────────────────── */
.admin-feature-card {
    background: var(--bg-light-subtle);
    transition: background 0.15s, box-shadow 0.15s;
}
.admin-feature-card:hover {
    background: var(--border-color);
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}

/* ── DataTables: toolbar / footer (compartilhado em todas as views admin) ── */
.dt-toolbar {
    background: var(--bg-light-subtle);
    border-bottom: 1px solid var(--border-color);
}
.dt-footer {
    background: var(--bg-light-subtle);
    border-top: 1px solid var(--border-color);
}
[data-theme="dark"] .dt-toolbar,
[data-theme="dark"] .dt-footer {
    background: var(--bg-card) !important;
    border-color: var(--border-color) !important;
}

/* ── DataTables: cabeçalhos e ordenação ─────────────────────────────────── */
[data-theme="dark"] table.dataTable thead th:hover {
    background-color: rgba(255,255,255,.05) !important;
}
[data-theme="dark"] table.dataTable thead th.sorting_asc,
[data-theme="dark"] table.dataTable thead th.sorting_desc {
    color: #6ea8fe !important;
    background-color: rgba(13,110,253,.15) !important;
}

/* ── DataTables: linhas alternadas (zebra) ──────────────────────────────── */
[data-theme="dark"] table.dataTable tbody tr:nth-child(even) {
    background-color: rgba(255,255,255,.025) !important;
}

/* ── DataTables: coluna de ações fixada (sticky) ────────────────────────── */
[data-theme="dark"] .sticky-col-head {
    background-color: var(--bg-card) !important;
}
[data-theme="dark"] table.dataTable tbody tr:nth-child(even) .sticky-col {
    background-color: rgba(255,255,255,.025) !important;
}
[data-theme="dark"] table.dataTable tbody tr:hover .sticky-col {
    background-color: rgba(255,255,255,.05) !important;
}

/* ── DataTables: campo de busca personalizado ───────────────────────────── */
[data-theme="dark"] .dt-search-input {
    background-color: var(--bg-card) !important;
    border-color: var(--border-color) !important;
    color: var(--text-main) !important;
}
[data-theme="dark"] .dt-search-input::placeholder { color: var(--text-muted); }
[data-theme="dark"] .dataTables_length select {
    background-color: var(--bg-card);
    color: var(--text-main);
    border-color: var(--border-color);
}

/* ── Stat pills (Cron / Coupons) ────────────────────────────────────────── */
.stat-pill  { background: var(--bg-card); }
[data-theme="dark"] .stat-pill {
    background: var(--bg-card) !important;
    box-shadow: 0 2px 8px rgba(0,0,0,.25);
}

/* ── Side drawer (Cron / Coupons / Study Config) ────────────────────────── */
.side-drawer  { background: var(--bg-card); }
.drawer-header { background: var(--bg-card); border-bottom-color: var(--border-color); }
[data-theme="dark"] .side-drawer  { background: var(--bg-card) !important; }
[data-theme="dark"] .drawer-header { background: var(--bg-card) !important; border-color: var(--border-color) !important; }

/* ── Install bar progress (Pricing) ─────────────────────────────────────── */
.install-bar { background: var(--border-color); }
[data-theme="dark"] .install-bar { background: var(--border-color) !important; }

/* ── Study config card header e tabela ──────────────────────────────────── */
.study-card-header {
    background: var(--bg-card);
    border-bottom-color: var(--border-color);
}
[data-theme="dark"] .study-card-header { background: var(--bg-card) !important; }
[data-theme="dark"] .real-assets-table th {
    background: var(--bg-body) !important;
    color: var(--text-main) !important;
    border-color: var(--border-color) !important;
}

/* ── Promo chip (Pricing) ────────────────────────────────────────────────── */
[data-theme="dark"] .promo-chip {
    background: rgba(255,193,7,.1) !important;
    border-color: rgba(255,193,7,.4) !important;
    color: #ffc107 !important;
}

/* ── bg-soft-* badges no dark mode: garante contraste correto ──────────── */
/* Especificidade [0,2,0] supera overrides locais [0,1,0] nos templates admin */
[data-theme="dark"] .bg-soft-success { background-color: var(--soft-success) !important; color: #4ade80 !important; }
[data-theme="dark"] .bg-soft-info    { background-color: var(--soft-info) !important;    color: #22d3ee !important; }
[data-theme="dark"] .bg-soft-warning { background-color: var(--soft-warning) !important; color: #fbbf24 !important; }
[data-theme="dark"] .bg-soft-danger  { background-color: var(--soft-danger) !important;  color: #f87171 !important; }
[data-theme="dark"] .bg-soft-primary { background-color: var(--soft-primary) !important; color: var(--primary) !important; }

/* ── bg-light badge com borda (header badges) ───────────────────────────── */
[data-theme="dark"] .badge.bg-light.border {
    background-color: rgba(255,255,255,.08) !important;
    color: var(--text-muted) !important;
    border-color: var(--border-color) !important;
}

/* ── Options table thead ─────────────────────────────────────────────────── */
[data-theme="dark"] thead.bg-light th,
[data-theme="dark"] .thead-light th {
    background-color: var(--bg-card) !important;
    color: var(--text-main) !important;
    border-color: var(--border-color) !important;
}

/* ── btn-outline-dark: invisível em dark mode — adapta para secondary ────── */
[data-theme="dark"] .btn-outline-dark {
    color: var(--text-main) !important;
    border-color: var(--border-color) !important;
}
[data-theme="dark"] .btn-outline-dark:hover,
[data-theme="dark"] .btn-outline-dark:focus,
[data-theme="dark"] .btn-outline-dark.active,
[data-theme="dark"] .btn-dark {
    background-color: var(--bg-body) !important;
    color: var(--text-main) !important;
    border-color: var(--text-muted) !important;
}
[data-theme="dark"] .btn-dark {
    background-color: rgba(255,255,255,.12) !important;
    border-color: rgba(255,255,255,.2) !important;
    color: var(--text-main) !important;
}
[data-theme="dark"] .btn-dark:hover {
    background-color: rgba(255,255,255,.18) !important;
}

/* ── Vr (divisor vertical) em dark mode ──────────────────────────────────── */
[data-theme="dark"] .vr { background-color: var(--border-color); }

/* ══════════════════════════════════════════════════════════════════════════════
   AGENDA DE APORTES — Light mode base classes
   ════════════════════════════════════════════════════════════════════════════ */

/* Header backgrounds — state-based */
.cs-header-unconfigured { background: #f9fafb; }
.cs-header-paused       { background: #f3f4f6; }
.cs-header-today        { background: linear-gradient(135deg,#d1fae5 0%,#a7f3d0 100%); }
.cs-header-overdue      { background: linear-gradient(135deg,#fee2e2 0%,#fecaca 100%); }
.cs-header-scheduled    { background: linear-gradient(135deg,#fffbeb 0%,#fef3c7 100%); }

/* Header text */
.cs-header-title  { color: #1f2937; }
.cs-status-neutral    { color: #6b7280; }
.cs-status-today      { color: #065f46; }
.cs-status-overdue    { color: #991b1b; }
.cs-status-scheduled  { color: #92400e; }
.cs-hdr-amount        { color: #374151; }

/* Panel body */
.cs-panel-body { background: #fefefe; }

/* Empty state */
.cs-empty-icon  { background: linear-gradient(135deg,#fef9c3,#fde68a); }
.cs-body-title  { color: #374151; }

/* Next-aporte boxes */
.cs-next-today   { background: linear-gradient(135deg,#d1fae5,#a7f3d0); border: 1.5px solid #6ee7b7; }
.cs-next-overdue { background: linear-gradient(135deg,#fee2e2,#fecaca); border: 1.5px solid #fca5a5; }
.cs-next-future  { background: linear-gradient(135deg,#fffbeb,#fef3c7); border: 1.5px solid #fcd34d; }
.cs-next-today-title   { color: #065f46; }
.cs-next-today-sub     { color: #047857; }
.cs-next-overdue-title { color: #991b1b; }
.cs-next-overdue-sub   { color: #b91c1c; }
.cs-next-future-title  { color: #92400e; }
.cs-next-future-sub    { color: #b45309; }

/* Record rows */
.cs-record-adhoc   { background: #faf5ff; border: 1px solid #e9d5ff; }
.cs-record-done    { background: #f0fdf4; border: 1px solid #bbf7d0; }
.cs-record-skipped { background: #f9fafb; border: 1px solid #e5e7eb; }
.cs-record-pending { background: #fffbeb; border: 1px solid #fde68a; }
.cs-record-title   { color: #374151; }
.cs-record-sub     { color: #6b7280; }
.cs-badge-adhoc    { background: #ede9fe; color: #7c3aed; border: 1px solid #ddd6fe; }

/* Stats section */
.cs-stats-border         { border-top: 1px solid #e5e7eb; }
.cs-stat-done-icon       { background: #d1fae5; }
.cs-stat-skipped-icon    { background: #f3f4f6; }
.cs-stat-adhoc-icon      { background: #ede9fe; }
.cs-stat-adherence-good  { background: #d1fae5; }
.cs-stat-adherence-mid   { background: #fef3c7; }
.cs-stat-adherence-bad   { background: #fee2e2; }
.cs-section-label        { color: #6b7280; }
.cs-stat-label           { color: #6b7280; }
.cs-stat-done-val        { color: #065f46; }
.cs-stat-skipped-val     { color: #374151; }

/* Modal headers & alerts */
.cs-modal-header-schedule { background: linear-gradient(135deg,#fffbeb,#fef3c7); }
.cs-modal-header-adhoc    { background: linear-gradient(135deg,#f5f3ff,#ede9fe); }
.cs-modal-alert-info  { background: #eff6ff; border-left: 3px solid #3b82f6 !important; }
.cs-modal-alert-adhoc { background: #f5f3ff; border-left: 3px solid #7c3aed !important; }

/* Banner */
.cs-banner-bg          { background: linear-gradient(135deg,#ecfdf5 0%,#d1fae5 50%,#a7f3d0 100%); border: 2px solid #6ee7b7 !important; }
.cs-banner-title       { color: #065f46; }
.cs-banner-record-row  { background: rgba(255,255,255,.6); border: 1px solid #a7f3d0; }
.cs-banner-name        { color: #065f46; }
.cs-banner-amount      { color: #047857; }
.cs-banner-modal-header { background: linear-gradient(135deg,#d1fae5,#a7f3d0); }

/* ══════════════════════════════════════════════════════════════════════════════
   AGENDA DE APORTES — Dark mode overrides
   ════════════════════════════════════════════════════════════════════════════ */

/* Header backgrounds */
[data-theme="dark"] .cs-header-unconfigured { background: #1e2126; }
[data-theme="dark"] .cs-header-paused       { background: #1e2126; }
[data-theme="dark"] .cs-header-today        { background: linear-gradient(135deg,#052e16 0%,#022c22 100%); }
[data-theme="dark"] .cs-header-overdue      { background: linear-gradient(135deg,#450a0a 0%,#2d0606 100%); }
[data-theme="dark"] .cs-header-scheduled    { background: linear-gradient(135deg,#1c1100 0%,#0f0900 100%); }

/* Header text */
[data-theme="dark"] .cs-header-title    { color: var(--text-main); }
[data-theme="dark"] .cs-status-neutral  { color: var(--text-muted); }
[data-theme="dark"] .cs-status-today    { color: #4ade80; }
[data-theme="dark"] .cs-status-overdue  { color: #fca5a5; }
[data-theme="dark"] .cs-status-scheduled { color: #fde68a; }
[data-theme="dark"] .cs-hdr-amount      { color: var(--text-main); }

/* Panel body */
[data-theme="dark"] .cs-panel-body { background: var(--bg-card); }

/* Empty state */
[data-theme="dark"] .cs-empty-icon { background: linear-gradient(135deg,#1c1100,#0f0900); }
[data-theme="dark"] .cs-body-title { color: var(--text-main); }

/* Next-aporte boxes */
[data-theme="dark"] .cs-next-today   { background: linear-gradient(135deg,#052e16,#022c22); border-color: #065f46; }
[data-theme="dark"] .cs-next-overdue { background: linear-gradient(135deg,#450a0a,#2d0606); border-color: #7f1d1d; }
[data-theme="dark"] .cs-next-future  { background: linear-gradient(135deg,#1c1100,#0f0900); border-color: #92400e; }
[data-theme="dark"] .cs-next-today-title   { color: #4ade80; }
[data-theme="dark"] .cs-next-today-sub     { color: #86efac; }
[data-theme="dark"] .cs-next-overdue-title { color: #fca5a5; }
[data-theme="dark"] .cs-next-overdue-sub   { color: #fecaca; }
[data-theme="dark"] .cs-next-future-title  { color: #fde68a; }
[data-theme="dark"] .cs-next-future-sub    { color: #fcd34d; }

/* Record rows */
[data-theme="dark"] .cs-record-adhoc   { background: #1e1a2e; border-color: #4c1d95; }
[data-theme="dark"] .cs-record-done    { background: #052e16; border-color: #166534; }
[data-theme="dark"] .cs-record-skipped { background: var(--bg-card); border-color: var(--border-color); }
[data-theme="dark"] .cs-record-pending { background: #1c1100; border-color: #92400e; }
[data-theme="dark"] .cs-record-title   { color: var(--text-main); }
[data-theme="dark"] .cs-record-sub     { color: var(--text-muted); }
[data-theme="dark"] .cs-badge-adhoc    { background: rgba(124,58,237,.2); color: #c4b5fd; border-color: #4c1d95; }

/* Stats section */
[data-theme="dark"] .cs-stats-border        { border-top-color: var(--border-color); }
[data-theme="dark"] .cs-stat-done-icon      { background: rgba(16,185,129,.2); }
[data-theme="dark"] .cs-stat-skipped-icon   { background: rgba(107,114,128,.2); }
[data-theme="dark"] .cs-stat-adhoc-icon     { background: rgba(124,58,237,.2); }
[data-theme="dark"] .cs-stat-adherence-good { background: rgba(16,185,129,.2); }
[data-theme="dark"] .cs-stat-adherence-mid  { background: rgba(245,158,11,.2); }
[data-theme="dark"] .cs-stat-adherence-bad  { background: rgba(239,68,68,.2); }
[data-theme="dark"] .cs-section-label       { color: var(--text-muted); }
[data-theme="dark"] .cs-stat-label          { color: var(--text-muted); }
[data-theme="dark"] .cs-stat-done-val       { color: #4ade80; }
[data-theme="dark"] .cs-stat-skipped-val    { color: var(--text-main); }

/* Modal headers & alerts */
[data-theme="dark"] .cs-modal-header-schedule { background: linear-gradient(135deg,#1c1100,#0f0900); }
[data-theme="dark"] .cs-modal-header-adhoc    { background: linear-gradient(135deg,#1e1a2e,#130e20); }
[data-theme="dark"] .cs-modal-alert-info  { background: rgba(59,130,246,.12); }
[data-theme="dark"] .cs-modal-alert-adhoc { background: rgba(124,58,237,.12); }

/* Banner */
[data-theme="dark"] .cs-banner-bg         { background: linear-gradient(135deg,#052e16 0%,#022c22 50%,#014737 100%) !important; border-color: #065f46 !important; }
[data-theme="dark"] .cs-banner-title      { color: #4ade80; }
[data-theme="dark"] .cs-banner-record-row { background: rgba(255,255,255,.05); border-color: #166534; }
[data-theme="dark"] .cs-banner-name       { color: #4ade80; }
[data-theme="dark"] .cs-banner-amount     { color: #86efac; }
[data-theme="dark"] .cs-banner-modal-header { background: linear-gradient(135deg,#052e16,#022c22); }
[data-theme="dark"] .cs-empty-icon i { color: #fbbf24; }

/* ══════════════════════════════════════════════════════════════════════════════
   APORTES — Responsivo Mobile (≤ 575px)
   ══════════════════════════════════════════════════════════════════════════════ */
@media (max-width: 575.98px) {
    /* "Próximo aporte" boxes: empilha botões de ação abaixo do conteúdo */
    .cs-next-today,
    .cs-next-overdue,
    .cs-next-future { flex-wrap: wrap; }

    .cs-next-action-btns {
        width: 100%;
        justify-content: flex-end;
        margin-top: 6px;
    }

    /* Stats: não usa ms-auto para empurrar "Total aportado" — apenas flui */
    .cs-stats-border > .cs-stat-total { margin-left: 0 !important; margin-top: 4px; }

    /* Banner: ícone menor */
    .cs-banner-icon-wrap {
        width: 42px !important;
        height: 42px !important;
    }
    .cs-banner-icon-wrap i { font-size: 1.1rem !important; }
}

/* ══════════════════════════════════════════════════════════════════════════════
   BULK ACTION BAR — Web Component Global
   ══════════════════════════════════════════════════════════════════════════════ */
bulk-action-bar {
    position: fixed;
    bottom: 28px;
    left: 50%;
    transform: translateX(-50%);
    border-radius: 50rem;
    white-space: nowrap;
    background: #212529;
    padding: 10px 20px;
    z-index: 1050;
    box-shadow: 0 0.5rem 1rem rgba(0,0,0,.15);
}

[data-theme="dark"] bulk-action-bar {
    background: #334155;
    border: 1px solid var(--border-color);
    box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,.5);
}

@media (max-width: 767.98px) {
    bulk-action-bar {
        left: 0;
        right: 0;
        bottom: 0;
        transform: none;
        border-radius: 16px 16px 0 0;
        padding: 0.875rem 1.25rem;
        padding-bottom: calc(0.875rem + env(safe-area-inset-bottom, 0px));
        white-space: normal;
    }
    bulk-action-bar .bulk-bar-inner {
        justify-content: space-between;
    }
}
