/* ===========================================================================
   sistema.css — DESIGN TOKENS KRYPTA (v2.0, 2026-05-08)
   ===========================================================================
   Substitui a paleta laranja antiga por TODA a paleta KRYPTA conforme o guia
   de marca v2.0. Tema padrão: LIGHT (branco puro). DARK opcional via toggle
   persistido em admins.tema_preferido.

   - Tokens primários KRYPTA (cyan, violet, blue, magenta, neon, silver…).
   - Tokens semânticos (--sistema-primary, --sistema-bg…) re-mapeados pra
     cores Krypta — preserva a maioria dos componentes legados sem reescrever.
   - Tipografia: Inter (corpo), Space Grotesk (títulos), JetBrains Mono (rótulos).

   IMPORTANTE: O <html> recebe data-theme="light" (default) ou "dark". O JS
   de bootstrap aplica isso ANTES do paint pra evitar flash. Se o servidor
   souber a preferência via cookie, injeta a classe direto (sem flash).
   ============================================================================ */

/* ============================================================================
   1. PALETA KRYPTA — TEMA LIGHT (PADRÃO)
   ============================================================================ */
:root,
html[data-theme="light"] {
    --krypta-bg-page:        #FFFFFF;
    --krypta-bg-card:        #F8FAFC;
    --krypta-bg-elevated:    #F1F5F9;
    --krypta-bg-overlay:     rgba(255,255,255,0.85);

    --krypta-border:         rgba(15,23,42,0.08);
    --krypta-border-strong:  rgba(15,23,42,0.16);

    --krypta-cyan:           #00B8E6;
    --krypta-violet:         #9333EA;
    --krypta-blue:           #1D4ED8;
    --krypta-magenta:        #DB2777;
    --krypta-neon:           #06B6D4;

    --krypta-text-primary:   #0F172A;
    --krypta-text-secondary: #334155;
    --krypta-text-muted:     #475569;
    --krypta-text-faded:     #64748B;

    --krypta-success:        #16A34A;
    --krypta-warning:        #D97706;
    --krypta-danger:         #DC2626;
    --krypta-info:           #00B8E6;

    --krypta-shadow-soft:    0 4px 16px rgba(15,23,42,0.06);
    --krypta-shadow-medium:  0 8px 24px rgba(15,23,42,0.08);
    --krypta-shadow-glow-cyan:   0 0 20px rgba(0,184,230,0.18);
    --krypta-shadow-glow-violet: 0 0 20px rgba(147,51,234,0.18);

    --krypta-grid-line:      rgba(0,184,230,0.05);

    --krypta-sidebar-bg:     #0F172A;
    --krypta-sidebar-bg-2:   #1E293B;
    --krypta-sidebar-text:   #CBD5E1;
    --krypta-sidebar-text-active: #FFFFFF;
    --krypta-sidebar-active-bg: linear-gradient(135deg, #00B8E6 0%, #9333EA 100%);

    --krypta-gradient-brand: linear-gradient(135deg, #00B8E6 0%, #9333EA 100%);
    --krypta-gradient-blue:  linear-gradient(135deg, #1D4ED8 0%, #00B8E6 100%);
    --krypta-gradient-magenta: linear-gradient(135deg, #DB2777 0%, #9333EA 100%);
}

/* ============================================================================
   2. PALETA KRYPTA — TEMA DARK
   ============================================================================ */
html[data-theme="dark"] {
    --krypta-bg-page:        #030712;
    --krypta-bg-card:        #111827;
    --krypta-bg-elevated:    #1A2233;
    --krypta-bg-overlay:     rgba(3,7,18,0.78);

    --krypta-border:         rgba(255,255,255,0.08);
    --krypta-border-strong:  rgba(255,255,255,0.16);

    --krypta-cyan:           #00D1FF;
    --krypta-violet:         #A855F7;
    --krypta-blue:           #2563EB;
    --krypta-magenta:        #EC4899;
    --krypta-neon:           #7CF7FF;

    --krypta-text-primary:   #FFFFFF;
    --krypta-text-secondary: #CBD5E1;
    --krypta-text-muted:     #94A3B8;
    --krypta-text-faded:     #64748B;

    --krypta-success:        #22C55E;
    --krypta-warning:        #F59E0B;
    --krypta-danger:         #EF4444;
    --krypta-info:           #00D1FF;

    --krypta-shadow-soft:    0 8px 32px rgba(0,0,0,0.4);
    --krypta-shadow-medium:  0 12px 40px rgba(0,0,0,0.5);
    --krypta-shadow-glow-cyan:   0 0 24px rgba(0,209,255,0.25);
    --krypta-shadow-glow-violet: 0 0 24px rgba(168,85,247,0.25);

    --krypta-grid-line:      rgba(0,209,255,0.03);

    --krypta-sidebar-bg:     #030712;
    --krypta-sidebar-bg-2:   #111827;
    --krypta-sidebar-text:   #94A3B8;
    --krypta-sidebar-text-active: #FFFFFF;
    --krypta-sidebar-active-bg: linear-gradient(135deg, #00D1FF 0%, #A855F7 100%);

    --krypta-gradient-brand: linear-gradient(135deg, #00D1FF 0%, #A855F7 100%);
    --krypta-gradient-blue:  linear-gradient(135deg, #2563EB 0%, #00D1FF 100%);
    --krypta-gradient-magenta: linear-gradient(135deg, #EC4899 0%, #A855F7 100%);
}

/* ============================================================================
   3. ALIASES SEMÂNTICOS — preserva o resto do CSS legado funcionando
   ============================================================================ */
:root,
html[data-theme="light"],
html[data-theme="dark"] {
    --sistema-primary:        var(--krypta-cyan);
    --sistema-primary-dark:   var(--krypta-blue);
    --sistema-primary-light:  var(--krypta-neon);
    --sistema-primary-soft:   rgba(0,184,230,0.08);

    --sistema-secondary:      var(--krypta-text-muted);
    --sistema-success:        var(--krypta-success);
    --sistema-warning:        var(--krypta-warning);
    --sistema-danger:         var(--krypta-danger);
    --sistema-info:           var(--krypta-info);
    --sistema-dark:           var(--krypta-text-primary);

    --sistema-bg:             var(--krypta-bg-page);
    --sistema-card-bg:        var(--krypta-bg-card);
    --sistema-border:         var(--krypta-border);
    --sistema-border-soft:    var(--krypta-border-strong);
    --sistema-text:           var(--krypta-text-primary);
    --sistema-text-muted:     var(--krypta-text-muted);

    --sistema-cyan:           var(--krypta-cyan);
    --sistema-violet:         var(--krypta-violet);
    --sistema-blue:           var(--krypta-blue);
    --sistema-magenta:        var(--krypta-magenta);
    --sistema-neon:           var(--krypta-neon);

    --sistema-font-body:    'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --sistema-font-display: 'Space Grotesk', 'Inter', sans-serif;
    --sistema-font-mono:    'JetBrains Mono', ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace;
}

/* ============================================================================
   4. ESTILOS GLOBAIS DE BASE
   ============================================================================ */
html {
    color-scheme: light;
    transition: color-scheme 0.3s ease;
}
html[data-theme="dark"] { color-scheme: dark; }

body {
    background-color: var(--krypta-bg-page) !important;
    color: var(--krypta-text-primary) !important;
    font-family: var(--sistema-font-body);
    font-size: 14px;
    line-height: 1.6;
    transition: background-color 0.3s ease, color 0.3s ease;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: var(--sistema-font-display);
    color: var(--krypta-text-primary);
    font-weight: 600;
    letter-spacing: -0.01em;
}

.text-muted, .text-secondary {
    color: var(--krypta-text-muted) !important;
}

code, kbd, samp, pre,
.font-monospace,
.text-mono {
    font-family: var(--sistema-font-mono) !important;
}

a {
    color: var(--krypta-cyan);
    text-decoration: none;
    transition: color 0.15s ease;
}
a:hover {
    color: var(--krypta-violet);
}

/* Cards */
.card {
    background-color: var(--krypta-bg-card);
    border: 1px solid var(--krypta-border);
    color: var(--krypta-text-primary);
    border-radius: 12px;
    box-shadow: var(--krypta-shadow-soft);
}
.card-header {
    background-color: var(--krypta-bg-elevated);
    border-bottom: 1px solid var(--krypta-border);
    color: var(--krypta-text-primary);
    border-radius: 12px 12px 0 0 !important;
}
.card-body { color: var(--krypta-text-primary); }
.card .text-muted { color: var(--krypta-text-muted) !important; }

/* bg-light / bg-white re-mapeados */
.bg-light, .bg-body-tertiary {
    background-color: var(--krypta-bg-elevated) !important;
    color: var(--krypta-text-primary) !important;
}
.bg-white {
    background-color: var(--krypta-bg-card) !important;
    color: var(--krypta-text-primary) !important;
}

/* ============================================================================
   5. BOTÕES KRYPTA
   ============================================================================ */
.btn {
    font-family: var(--sistema-font-body);
    font-weight: 500;
    border-radius: 10px;
    transition: all 0.15s ease;
    letter-spacing: 0.005em;
}
.btn:focus, .btn:focus-visible {
    box-shadow: 0 0 0 3px rgba(0,184,230,0.18);
}

.btn-primary {
    background: var(--krypta-gradient-brand);
    border: none;
    color: #FFFFFF !important;
    box-shadow: 0 2px 8px rgba(0,184,230,0.25);
}
.btn-primary:hover, .btn-primary:focus {
    background: var(--krypta-gradient-brand);
    transform: translateY(-1px);
    box-shadow: var(--krypta-shadow-glow-cyan);
    color: #FFFFFF;
}
.btn-primary:active, .btn-primary.active {
    transform: translateY(0);
    filter: brightness(0.95);
}

.btn-outline-primary {
    background: transparent;
    border: 1px solid var(--krypta-cyan);
    color: var(--krypta-cyan);
}
.btn-outline-primary:hover {
    background: rgba(0,184,230,0.08);
    color: var(--krypta-cyan);
    border-color: var(--krypta-cyan);
}

.btn-success {
    background-color: var(--krypta-success);
    border-color: var(--krypta-success);
    color: #FFFFFF;
}
.btn-success:hover { background-color: var(--krypta-success); filter: brightness(0.92); color: #FFFFFF; }

.btn-warning {
    background-color: var(--krypta-warning);
    border-color: var(--krypta-warning);
    color: #FFFFFF;
}
.btn-warning:hover { background-color: var(--krypta-warning); filter: brightness(0.92); color: #FFFFFF; }

.btn-danger {
    background-color: var(--krypta-danger);
    border-color: var(--krypta-danger);
    color: #FFFFFF;
}
.btn-danger:hover { background-color: var(--krypta-danger); filter: brightness(0.92); color: #FFFFFF; }

.btn-info {
    background-color: var(--krypta-cyan);
    border-color: var(--krypta-cyan);
    color: #FFFFFF;
}
.btn-info:hover { background-color: var(--krypta-cyan); filter: brightness(0.92); color: #FFFFFF; }

.btn-secondary, .btn-outline-secondary {
    background-color: transparent;
    border: 1px solid var(--krypta-border-strong);
    color: var(--krypta-text-secondary);
}
.btn-secondary:hover, .btn-outline-secondary:hover {
    background-color: var(--krypta-bg-elevated);
    color: var(--krypta-text-primary);
    border-color: var(--krypta-text-muted);
}

.btn-light {
    background-color: var(--krypta-bg-elevated);
    border-color: var(--krypta-border);
    color: var(--krypta-text-primary);
}
.btn-light:hover {
    background-color: var(--krypta-bg-card);
    color: var(--krypta-text-primary);
}

/* ============================================================================
   6. INPUTS / FORMS
   ============================================================================ */
.form-control,
.form-select,
input[type="text"]:not(.flatpickr-input),
input[type="email"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="date"],
textarea,
select {
    background-color: var(--krypta-bg-card);
    border: 1px solid var(--krypta-border-strong);
    color: var(--krypta-text-primary);
    border-radius: 8px;
    transition: all 0.15s ease;
    font-family: var(--sistema-font-body);
}
.form-control:focus,
.form-select:focus,
input:focus,
textarea:focus,
select:focus {
    background-color: var(--krypta-bg-card);
    border-color: var(--krypta-cyan);
    color: var(--krypta-text-primary);
    box-shadow: 0 0 0 3px rgba(0,184,230,0.15);
    outline: none;
}
.form-control::placeholder,
input::placeholder,
textarea::placeholder {
    color: var(--krypta-text-faded);
    opacity: 1;
}
.form-control:disabled,
.form-control[readonly] {
    background-color: var(--krypta-bg-elevated);
    color: var(--krypta-text-muted);
}
.form-label {
    color: var(--krypta-text-secondary);
    font-weight: 500;
    font-size: 0.875rem;
}
.form-check-input {
    background-color: var(--krypta-bg-card);
    border-color: var(--krypta-border-strong);
}
.form-check-input:checked {
    background-color: var(--krypta-cyan);
    border-color: var(--krypta-cyan);
}
.form-check-input:focus {
    border-color: var(--krypta-cyan);
    box-shadow: 0 0 0 3px rgba(0,184,230,0.15);
}

/* ============================================================================
   7. TABELAS
   ============================================================================ */
.table {
    --bs-table-bg: var(--krypta-bg-card);
    --bs-table-color: var(--krypta-text-primary);
    --bs-table-border-color: var(--krypta-border);
    color: var(--krypta-text-primary);
}
.table > :not(caption) > * > * {
    background-color: var(--krypta-bg-card);
    color: var(--krypta-text-primary);
    border-bottom-color: var(--krypta-border);
}
.table thead th,
.table-light > :not(caption) > * > * {
    background-color: var(--krypta-bg-elevated) !important;
    color: var(--krypta-text-secondary) !important;
    border-bottom: 1px solid var(--krypta-border-strong) !important;
    font-weight: 600;
    font-size: 0.8125rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-family: var(--sistema-font-mono);
}
.table-hover > tbody > tr:hover > * {
    background-color: rgba(0,184,230,0.04) !important;
    color: var(--krypta-text-primary) !important;
}
.table-secondary > :not(caption) > * > * {
    background-color: var(--krypta-bg-elevated) !important;
    color: var(--krypta-text-muted) !important;
}
.table-warning > :not(caption) > * > * {
    background-color: rgba(217,119,6,0.08) !important;
    color: var(--krypta-text-primary) !important;
}
.table-success > :not(caption) > * > * {
    background-color: rgba(22,163,74,0.08) !important;
}
.table-danger > :not(caption) > * > * {
    background-color: rgba(220,38,38,0.08) !important;
}

/* ============================================================================
   8. NAVS / TABS / BADGES
   ============================================================================ */
.nav-tabs {
    border-bottom: 1px solid var(--krypta-border);
}
.nav-tabs .nav-link {
    color: var(--krypta-text-muted);
    background: transparent;
    border: 1px solid transparent;
    border-radius: 10px 10px 0 0;
    font-weight: 500;
    transition: all 0.15s ease;
}
.nav-tabs .nav-link:hover {
    color: var(--krypta-text-primary);
    background-color: rgba(0,184,230,0.06);
    border-color: transparent;
}
.nav-tabs .nav-link.active {
    color: var(--krypta-text-primary);
    background-color: var(--krypta-bg-card);
    border-color: var(--krypta-border) var(--krypta-border) var(--krypta-bg-card);
    border-bottom: 2px solid var(--krypta-cyan);
    font-weight: 600;
}

.badge {
    font-weight: 500;
    border-radius: 6px;
    font-family: var(--sistema-font-body);
    letter-spacing: 0.015em;
}
.bg-primary { background: var(--krypta-gradient-brand) !important; color: #FFFFFF; }
.bg-success { background-color: var(--krypta-success) !important; color: #FFFFFF; }
.bg-warning { background-color: var(--krypta-warning) !important; color: #FFFFFF; }
.bg-danger  { background-color: var(--krypta-danger)  !important; color: #FFFFFF; }
.bg-info    { background-color: var(--krypta-cyan)    !important; color: #FFFFFF; }
.bg-secondary { background-color: var(--krypta-text-faded) !important; color: #FFFFFF; }

.text-primary { color: var(--krypta-cyan) !important; }
.text-success { color: var(--krypta-success) !important; }
.text-warning { color: var(--krypta-warning) !important; }
.text-danger  { color: var(--krypta-danger)  !important; }
.text-info    { color: var(--krypta-cyan)    !important; }

/* ============================================================================
   9. MODAIS / OFFCANVAS / DROPDOWNS
   ============================================================================ */
.modal-content {
    background-color: var(--krypta-bg-card);
    border: 1px solid var(--krypta-border);
    color: var(--krypta-text-primary);
    border-radius: 14px;
    box-shadow: var(--krypta-shadow-medium);
}
.modal-header,
.modal-footer {
    background-color: var(--krypta-bg-elevated);
    border-color: var(--krypta-border);
    color: var(--krypta-text-primary);
}
.modal-title { color: var(--krypta-text-primary); font-family: var(--sistema-font-display); }
html[data-theme="dark"] .btn-close { filter: invert(1) grayscale(100%); }

.dropdown-menu {
    background-color: var(--krypta-bg-card);
    border: 1px solid var(--krypta-border-strong);
    color: var(--krypta-text-primary);
    border-radius: 10px;
    box-shadow: var(--krypta-shadow-medium);
}
.dropdown-item { color: var(--krypta-text-secondary); }
.dropdown-item:hover, .dropdown-item:focus {
    background-color: rgba(0,184,230,0.08);
    color: var(--krypta-text-primary);
}
.dropdown-divider { border-top: 1px solid var(--krypta-border); }

/* ============================================================================
   10. ALERTS
   ============================================================================ */
.alert {
    border-radius: 10px;
    border: 1px solid var(--krypta-border);
    background-color: var(--krypta-bg-card);
}
.alert-success {
    background-color: rgba(22,163,74,0.10);
    border-color: rgba(22,163,74,0.3);
    color: var(--krypta-success);
}
.alert-warning {
    background-color: rgba(217,119,6,0.10);
    border-color: rgba(217,119,6,0.3);
    color: var(--krypta-warning);
}
.alert-danger {
    background-color: rgba(220,38,38,0.10);
    border-color: rgba(220,38,38,0.3);
    color: var(--krypta-danger);
}
.alert-info {
    background-color: rgba(0,184,230,0.10);
    border-color: rgba(0,184,230,0.3);
    color: var(--krypta-cyan);
}

/* ============================================================================
   11. PAGINATION
   ============================================================================ */
.page-link {
    background-color: var(--krypta-bg-card);
    border-color: var(--krypta-border);
    color: var(--krypta-text-secondary);
}
.page-link:hover {
    background-color: rgba(0,184,230,0.08);
    border-color: var(--krypta-cyan);
    color: var(--krypta-cyan);
}
.page-item.active .page-link {
    background: var(--krypta-gradient-brand);
    border-color: transparent;
    color: #FFFFFF;
}
.page-item.disabled .page-link {
    background-color: var(--krypta-bg-elevated);
    color: var(--krypta-text-faded);
    border-color: var(--krypta-border);
}

/* ============================================================================
   12. PROGRESS / SPINNERS
   ============================================================================ */
.progress {
    background-color: var(--krypta-bg-elevated);
    border-radius: 999px;
    height: 8px;
}
.progress-bar { background: var(--krypta-gradient-brand); }
.spinner-border, .spinner-grow { color: var(--krypta-cyan); }

/* ============================================================================
   13. FILTROS PADRÃO KRYPTA — usado pela macro filtros_padrao.html
   ============================================================================ */
.filtros-krypta {
    background: var(--krypta-bg-card);
    border: 1px solid var(--krypta-border);
    border-radius: 12px;
    padding: 16px 18px;
    margin-bottom: 16px;
    box-shadow: var(--krypta-shadow-soft);
    position: relative;
    overflow: visible;
}
.filtros-krypta::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 2px;
    background: var(--krypta-gradient-brand);
    border-radius: 12px 12px 0 0;
    opacity: 0.7;
}
.filtros-krypta .filtro-label {
    font-family: var(--sistema-font-mono);
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--krypta-text-faded);
    margin-bottom: 4px;
    display: block;
}
.filtros-krypta .filtros-titulo {
    font-family: var(--sistema-font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--krypta-cyan);
    margin-bottom: 12px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.filtros-krypta .filtros-titulo i { font-size: 14px; }
.filtros-krypta .form-control,
.filtros-krypta .form-select,
.filtros-krypta input,
.filtros-krypta select {
    background-color: var(--krypta-bg-page);
    border: 1px solid var(--krypta-border-strong);
}
.filtros-krypta .filtros-acoes {
    display: flex;
    gap: 8px;
    margin-top: 12px;
    flex-wrap: wrap;
}
.filtros-krypta .filtros-acoes .btn { min-height: 38px; }

.custom-multi-select {
    background: var(--krypta-bg-card) !important;
    border: 1px solid var(--krypta-border-strong) !important;
    border-radius: 8px;
    color: var(--krypta-text-primary) !important;
    box-shadow: var(--krypta-shadow-medium);
}
.custom-multi-select label,
.custom-multi-select .form-check-label {
    color: var(--krypta-text-secondary);
}

/* ============================================================================
   14. CARDS DE ESTATÍSTICAS
   ============================================================================ */
.card.bg-primary,
.card.bg-success,
.card.bg-warning,
.card.bg-danger,
.card.bg-info,
.card.bg-secondary,
.card.bg-dark {
    border: none !important;
    color: #FFFFFF;
    border-radius: 12px;
    overflow: hidden;
    position: relative;
}
.card.bg-primary { background: var(--krypta-gradient-brand) !important; }
.card.bg-success { background: linear-gradient(135deg, var(--krypta-success), #15803D) !important; }
.card.bg-warning { background: linear-gradient(135deg, var(--krypta-warning), #B45309) !important; }
.card.bg-danger  { background: linear-gradient(135deg, var(--krypta-danger), #B91C1C) !important; }
.card.bg-info    { background: var(--krypta-gradient-blue) !important; }
/* KRYPTA — bg-secondary e bg-dark agora são sólidos limpos
   (banido o gradiente cinza-prata que ficou ilegível) */
.card.bg-secondary { background: #475569 !important; }
.card.bg-dark    { background: #0F172A !important; }
html[data-theme="dark"] .card.bg-secondary { background: #1E293B !important; }
html[data-theme="dark"] .card.bg-dark    { background: #030712 !important; }

.card.bg-primary *, .card.bg-success *, .card.bg-warning *,
.card.bg-danger *, .card.bg-info *, .card.bg-secondary *, .card.bg-dark * {
    color: #FFFFFF !important;
}

/* ============================================================================
   15. SIDEBAR (sempre escura)
   ============================================================================ */
.sidebar {
    background: var(--krypta-sidebar-bg) !important;
    color: var(--krypta-sidebar-text);
}
.sidebar a {
    color: var(--krypta-sidebar-text) !important;
    border-left: 3px solid transparent;
    transition: all 0.15s ease;
}
.sidebar a:hover {
    background: rgba(0,184,230,0.08) !important;
    border-left-color: var(--krypta-cyan);
    color: #FFFFFF !important;
    padding-left: 18px;
}
.sidebar a.active {
    background: var(--krypta-sidebar-active-bg) !important;
    color: var(--krypta-sidebar-text-active) !important;
    border-left: 3px solid #FFFFFF;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.15);
}
.sidebar .sidebar-sub {
    background: var(--krypta-sidebar-bg-2) !important;
}
.sidebar .sidebar-sub:hover {
    background: rgba(0,184,230,0.10) !important;
}
.sidebar .sidebar-sub.active {
    background: var(--krypta-sidebar-active-bg) !important;
}
.sidebar hr {
    border-color: var(--krypta-border) !important;
    opacity: 0.3;
}
.logo-area {
    background: linear-gradient(180deg, var(--krypta-sidebar-bg) 0%, var(--krypta-sidebar-bg-2) 100%) !important;
    border-bottom: 1px solid rgba(255,255,255,0.05);
    padding: 18px 12px;
}
.logo-area h4 {
    font-family: var(--sistema-font-display);
    font-weight: 700;
    letter-spacing: 0.12em;
    background: var(--krypta-gradient-brand);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    margin: 8px 0 2px;
    font-size: 1.2rem;
}
.logo-area small {
    color: var(--krypta-text-faded) !important;
    font-family: var(--sistema-font-mono);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.7rem;
}

.toggle-arrow {
    background: var(--krypta-gradient-brand) !important;
    color: #FFFFFF !important;
    box-shadow: 0 4px 12px rgba(0,184,230,0.35) !important;
}

/* ============================================================================
   16. THEME TOGGLE BUTTON
   ============================================================================ */
.krypta-theme-toggle {
    position: fixed;
    top: 14px;
    right: 18px;
    z-index: 1100;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--krypta-bg-card);
    border: 1px solid var(--krypta-border-strong);
    color: var(--krypta-cyan);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: var(--krypta-shadow-soft);
    transition: all 0.2s ease;
    font-size: 16px;
}
.krypta-theme-toggle:hover {
    border-color: var(--krypta-cyan);
    box-shadow: var(--krypta-shadow-glow-cyan);
    transform: translateY(-1px);
}
.krypta-theme-toggle .icon-sun { display: none; }
.krypta-theme-toggle .icon-moon { display: inline-block; }
html[data-theme="dark"] .krypta-theme-toggle .icon-sun { display: inline-block; }
html[data-theme="dark"] .krypta-theme-toggle .icon-moon { display: none; }

@media (max-width: 768px) {
    .krypta-theme-toggle {
        top: 8px;
        right: 8px;
        width: 36px;
        height: 36px;
    }
}

/* ============================================================================
   17. RODAPÉ KRYPTA
   ============================================================================ */
.sistema-footer,
footer.sistema-footer {
    background: transparent;
    color: var(--krypta-text-faded) !important;
    font-size: 0.75rem;
    border-top: 1px solid var(--krypta-border);
    padding: 16px 8px;
    margin-top: 32px;
    text-align: center;
    font-family: var(--sistema-font-mono);
    letter-spacing: 0.04em;
}
.sistema-footer a,
.sistema-footer a:visited {
    color: var(--krypta-text-muted);
    text-decoration: none;
    transition: color 0.15s ease;
    border-bottom: 1px dotted var(--krypta-border-strong);
    padding-bottom: 1px;
}
.sistema-footer a:hover {
    color: var(--krypta-cyan);
    border-bottom-color: var(--krypta-cyan);
}
.sistema-footer .krypta-mark {
    background: var(--krypta-gradient-brand);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    font-weight: 700;
    letter-spacing: 0.1em;
}

/* ============================================================================
   18. FLATPICKR
   ============================================================================ */
.flatpickr-calendar {
    background: var(--krypta-bg-card) !important;
    border: 1px solid var(--krypta-border-strong) !important;
    box-shadow: var(--krypta-shadow-medium) !important;
    border-radius: 12px;
    color: var(--krypta-text-primary) !important;
}
.flatpickr-months .flatpickr-month,
.flatpickr-current-month,
.flatpickr-weekday {
    color: var(--krypta-text-primary) !important;
    background: var(--krypta-bg-card) !important;
}
.flatpickr-day {
    color: var(--krypta-text-primary) !important;
    border-radius: 6px;
}
.flatpickr-day.flatpickr-disabled,
.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
    color: var(--krypta-text-faded) !important;
}
.flatpickr-day:hover:not(.flatpickr-disabled) {
    background: rgba(0,184,230,0.10) !important;
    border-color: transparent !important;
}
.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange,
.flatpickr-day.selected:hover,
.flatpickr-day.startRange:hover,
.flatpickr-day.endRange:hover {
    background: var(--krypta-cyan) !important;
    border-color: var(--krypta-cyan) !important;
    color: #FFFFFF !important;
}
.flatpickr-day.inRange {
    background: rgba(0,184,230,0.12) !important;
    border-color: transparent !important;
    box-shadow: -5px 0 0 rgba(0,184,230,0.12), 5px 0 0 rgba(0,184,230,0.12);
}
.flatpickr-day.today {
    border-color: var(--krypta-cyan) !important;
}

/* ============================================================================
   19. SCROLLBAR
   ============================================================================ */
::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
::-webkit-scrollbar-track {
    background: var(--krypta-bg-page);
}
::-webkit-scrollbar-thumb {
    background: var(--krypta-border-strong);
    border-radius: 999px;
    border: 2px solid var(--krypta-bg-page);
}
::-webkit-scrollbar-thumb:hover {
    background: var(--krypta-cyan);
}

/* ============================================================================
   20. SELECTION
   ============================================================================ */
::selection {
    background: rgba(0,184,230,0.25);
    color: var(--krypta-text-primary);
}
html[data-theme="dark"] ::selection {
    background: rgba(0,209,255,0.30);
    color: #FFFFFF;
}

/* ============================================================================
   21. LEGADO
   ============================================================================ */
:root {
    --primary-orange:    var(--krypta-cyan);
    --dark-orange:       var(--krypta-blue);
}
.text-orange,
.btn-orange {
    color: var(--krypta-cyan) !important;
}

/* ============================================================================
   22. GLOW LINE
   ============================================================================ */
.krypta-glow-line {
    height: 1px;
    background: linear-gradient(90deg,
        transparent 0%,
        var(--krypta-cyan) 30%,
        var(--krypta-violet) 70%,
        transparent 100%);
    opacity: 0.5;
    margin: 24px 0;
    border: 0;
}

/* ============================================================================
   23. AJUSTES MOBILE
   ============================================================================ */
@media (max-width: 768px) {
    body { font-size: 13px; }
    .card { border-radius: 10px; }
    .btn { font-size: 13px; }
    .filtros-krypta { padding: 12px; }
}

/* ============================================================================
   24. AJUSTES DE FILTROS LEGADOS — força alinhamento Krypta nos filtros
       que ainda não foram migrados pra macro nova
   ============================================================================ */
.card.border-0.shadow-sm > .card-body.bg-light {
    background-color: var(--krypta-bg-card) !important;
    border: 1px solid var(--krypta-border) !important;
    border-radius: 12px;
}

/* ============================================================================
   25. DARK MODE — OVERRIDES AGRESSIVOS (2026-05-08 hotfix)
   ============================================================================
   Resolve os problemas reportados:
   - Selects ficavam com texto branco em fundo branco
   - Multi-selects "transbordando" no dark
   - Gráficos com fundo branco (Chart.js/canvas)
   - Texto cinza ilegível em alguns componentes
   - Inputs e datepicker sem contraste

   Estratégia: regras COM data-theme="dark" + !important onde houver
   conflito com Bootstrap. Sem afetar light mode.
   ============================================================================ */

html[data-theme="dark"] {
    /* Reforço de contraste — texto sempre branco onde possível */
    color-scheme: dark;
}

/* ----- SELECTS, INPUTS, TEXTAREAS no DARK ----- */
html[data-theme="dark"] select,
html[data-theme="dark"] input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not(.btn-check),
html[data-theme="dark"] textarea,
html[data-theme="dark"] .form-control,
html[data-theme="dark"] .form-select {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.20) !important;
}
html[data-theme="dark"] select option,
html[data-theme="dark"] .form-select option {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] select:focus,
html[data-theme="dark"] input:focus,
html[data-theme="dark"] textarea:focus,
html[data-theme="dark"] .form-control:focus,
html[data-theme="dark"] .form-select:focus {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: var(--krypta-cyan) !important;
    box-shadow: 0 0 0 3px rgba(0,209,255,0.20) !important;
}
html[data-theme="dark"] input::placeholder,
html[data-theme="dark"] textarea::placeholder {
    color: rgba(255,255,255,0.40) !important;
}
html[data-theme="dark"] .form-control:disabled,
html[data-theme="dark"] .form-control[readonly],
html[data-theme="dark"] input:disabled,
html[data-theme="dark"] select:disabled {
    background-color: #0F1626 !important;
    color: rgba(255,255,255,0.55) !important;
}
html[data-theme="dark"] .input-group-text {
    background-color: #1A2233 !important;
    color: #CBD5E1 !important;
    border-color: rgba(255,255,255,0.20) !important;
}

/* ----- LABELS no DARK ----- */
html[data-theme="dark"] label,
html[data-theme="dark"] .form-label,
html[data-theme="dark"] .filtro-label,
html[data-theme="dark"] .form-check-label,
html[data-theme="dark"] small,
html[data-theme="dark"] .small {
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .text-muted,
html[data-theme="dark"] .text-secondary {
    color: #94A3B8 !important;
}
html[data-theme="dark"] strong,
html[data-theme="dark"] b {
    color: #FFFFFF;
}
html[data-theme="dark"] h1, html[data-theme="dark"] h2,
html[data-theme="dark"] h3, html[data-theme="dark"] h4,
html[data-theme="dark"] h5, html[data-theme="dark"] h6 {
    color: #FFFFFF !important;
}

/* ----- MULTI-SELECT (custom + mselect) no DARK ----- */
html[data-theme="dark"] .custom-multi-select,
html[data-theme="dark"] .mselect,
html[data-theme="dark"] .mselect-header,
html[data-theme="dark"] .mselect-dropdown {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.20) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .mselect-header {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .mselect-label,
html[data-theme="dark"] .mselect-option,
html[data-theme="dark"] .mselect .form-check-label {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .mselect-label.is-placeholder {
    color: rgba(255,255,255,0.40) !important;
}
html[data-theme="dark"] .mselect-dropdown {
    background-color: #111827 !important;
    border: 1px solid rgba(255,255,255,0.20) !important;
    box-shadow: 0 12px 40px rgba(0,0,0,0.6) !important;
}
html[data-theme="dark"] .mselect-search input {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.20) !important;
}
html[data-theme="dark"] .mselect-option:hover,
html[data-theme="dark"] .mselect-all:hover {
    background-color: rgba(0,209,255,0.10) !important;
}

/* ----- DROPDOWNS no DARK ----- */
html[data-theme="dark"] .dropdown-menu {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.20) !important;
    box-shadow: 0 12px 40px rgba(0,0,0,0.6) !important;
}
html[data-theme="dark"] .dropdown-item {
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .dropdown-item:hover,
html[data-theme="dark"] .dropdown-item:focus,
html[data-theme="dark"] .dropdown-item.active {
    background-color: rgba(0,209,255,0.12) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .dropdown-divider {
    border-top-color: rgba(255,255,255,0.10) !important;
}

/* ----- CARDS no DARK (forçar fundo escuro mesmo em cards com bg-light inline) ----- */
html[data-theme="dark"] .card {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .card-header {
    background-color: #1A2233 !important;
    border-bottom-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .card-body { color: #FFFFFF !important; }
html[data-theme="dark"] .card .text-muted,
html[data-theme="dark"] .card small,
html[data-theme="dark"] .card .small {
    color: #94A3B8 !important;
}

/* bg-light no dark vira escuro elevated */
html[data-theme="dark"] .bg-light,
html[data-theme="dark"] .bg-body-tertiary,
html[data-theme="dark"] .card-body.bg-light,
html[data-theme="dark"] .card-header.bg-light,
html[data-theme="dark"] div.bg-light,
html[data-theme="dark"] .accordion-button.bg-light {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .bg-white {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}

/* Borda do card que usava border-warning, border-success etc continua mas o conteúdo fica escuro */
html[data-theme="dark"] .card.border-warning,
html[data-theme="dark"] .card.border-success,
html[data-theme="dark"] .card.border-info,
html[data-theme="dark"] .card.border-primary,
html[data-theme="dark"] .card.border-danger {
    background-color: #111827 !important;
}
html[data-theme="dark"] .bg-warning.bg-opacity-25 {
    background-color: rgba(245,158,11,0.18) !important;
    color: #FFFFFF !important;
}

/* ----- TABELAS no DARK ----- */
html[data-theme="dark"] .table,
html[data-theme="dark"] .table > :not(caption) > * > * {
    background-color: #111827 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .table thead th,
html[data-theme="dark"] .table-light > :not(caption) > * > * {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-bottom-color: rgba(255,255,255,0.18) !important;
}
/* Mantém os títulos de coluna (THEAD) com cor levemente atenuada */
html[data-theme="dark"] .table thead th {
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .table-hover > tbody > tr:hover > * {
    background-color: rgba(0,209,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .table-secondary > :not(caption) > * > * {
    background-color: #1A2233 !important;
    color: #94A3B8 !important;
}
html[data-theme="dark"] .table-warning > :not(caption) > * > * {
    background-color: rgba(245,158,11,0.18) !important;
    color: #FFE7B0 !important;
}
html[data-theme="dark"] .table-success > :not(caption) > * > * {
    background-color: rgba(34,197,94,0.18) !important;
    color: #BBF7D0 !important;
}
html[data-theme="dark"] .table-danger > :not(caption) > * > * {
    background-color: rgba(239,68,68,0.18) !important;
    color: #FECACA !important;
}

/* ----- MODAIS no DARK ----- */
html[data-theme="dark"] .modal-content {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .modal-header,
html[data-theme="dark"] .modal-footer {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .modal-title { color: #FFFFFF !important; }
html[data-theme="dark"] .btn-close {
    filter: invert(1) grayscale(100%) brightness(2) !important;
}

/* ----- TABS / NAV no DARK ----- */
html[data-theme="dark"] .nav-tabs { border-bottom-color: rgba(255,255,255,0.12) !important; }
html[data-theme="dark"] .nav-tabs .nav-link {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .nav-tabs .nav-link:hover {
    color: #FFFFFF !important;
    background-color: rgba(0,209,255,0.10) !important;
}
html[data-theme="dark"] .nav-tabs .nav-link.active {
    color: #FFFFFF !important;
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.10) rgba(255,255,255,0.10) #111827 !important;
    border-bottom-color: var(--krypta-cyan) !important;
}

/* ----- ALERTS no DARK (mais contraste) ----- */
html[data-theme="dark"] .alert-success {
    background-color: rgba(34,197,94,0.14) !important;
    border-color: rgba(34,197,94,0.40) !important;
    color: #BBF7D0 !important;
}
html[data-theme="dark"] .alert-warning {
    background-color: rgba(245,158,11,0.14) !important;
    border-color: rgba(245,158,11,0.40) !important;
    color: #FDE68A !important;
}
html[data-theme="dark"] .alert-danger {
    background-color: rgba(239,68,68,0.14) !important;
    border-color: rgba(239,68,68,0.40) !important;
    color: #FECACA !important;
}
html[data-theme="dark"] .alert-info {
    background-color: rgba(0,209,255,0.14) !important;
    border-color: rgba(0,209,255,0.40) !important;
    color: #BAE6FD !important;
}

/* ----- LISTS, ACCORDION, OFFCANVAS ----- */
html[data-theme="dark"] .list-group-item {
    background-color: #111827 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .accordion {
    --bs-accordion-bg: #111827;
    --bs-accordion-color: #FFFFFF;
    --bs-accordion-border-color: rgba(255,255,255,0.10);
    --bs-accordion-active-bg: #1A2233;
    --bs-accordion-active-color: #FFFFFF;
    --bs-accordion-btn-bg: #111827;
    --bs-accordion-btn-color: #FFFFFF;
}
html[data-theme="dark"] .accordion-button {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .accordion-button:not(.collapsed) {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .accordion-button::after {
    filter: invert(1) brightness(2);
}
html[data-theme="dark"] .accordion-body {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .offcanvas {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}

/* ----- POPOVERS / TOOLTIPS ----- */
html[data-theme="dark"] .tooltip-inner {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border: 1px solid rgba(255,255,255,0.15);
}
html[data-theme="dark"] .popover {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.20) !important;
}
html[data-theme="dark"] .popover-header {
    background-color: #111827 !important;
    color: #FFFFFF !important;
    border-bottom-color: rgba(255,255,255,0.15) !important;
}
html[data-theme="dark"] .popover-body { color: #FFFFFF !important; }

/* ----- BADGES e PILLS no DARK (manter cores fortes) ----- */
html[data-theme="dark"] .badge.bg-light,
html[data-theme="dark"] .badge.text-dark {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}

/* ----- FILTROS-KRYPTA wrapper ----- */
html[data-theme="dark"] .filtros-krypta {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.10) !important;
}

/* ============================================================================
   26. CHART.JS / CANVAS / GRÁFICOS — fundo escuro no dark
   ============================================================================ */
html[data-theme="dark"] canvas,
html[data-theme="dark"] .chart-container,
html[data-theme="dark"] .chart-area {
    background-color: transparent !important;
}
html[data-theme="dark"] .chart-wrapper {
    background-color: #111827 !important;
    border-radius: 12px;
    padding: 8px;
}

/* Container que abriga gráficos no sistema costuma ter classes 'chart-box' ou similares */
html[data-theme="dark"] [class*="chart"]:not(canvas) {
    color: #FFFFFF;
}

/* SVG inline (alguns gráficos custom usam SVG) */
html[data-theme="dark"] svg text {
    fill: #CBD5E1 !important;
}
html[data-theme="dark"] svg .axis line,
html[data-theme="dark"] svg .axis path,
html[data-theme="dark"] svg .grid line {
    stroke: rgba(255,255,255,0.15) !important;
}

/* ----- LEGENDA / TICKS Chart.js (defaults globais setados no JS — ver injeção no base.html) -----
   O CSS sozinho não muda os textos do canvas. A injeção de Chart.defaults.color
   está em base.html. Esta seção fica apenas pra quando os labels são DOM.
   ============================================================================ */
html[data-theme="dark"] .chartjs-tooltip,
html[data-theme="dark"] .chartjs-legend {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border: 1px solid rgba(255,255,255,0.15) !important;
}

/* ============================================================================
   27. EMISSÃO RÁPIDA (hotfix dark)
   ============================================================================ */
html[data-theme="dark"] .card-header.bg-dark {
    background-color: #030712 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .card-body .bg-light.rounded {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   28. FLATPICKR no DARK (reforço de contraste)
   ============================================================================ */
html[data-theme="dark"] .flatpickr-calendar {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .flatpickr-day {
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .flatpickr-day:hover:not(.flatpickr-disabled) {
    background-color: rgba(0,209,255,0.18) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .flatpickr-day.today {
    border-color: var(--krypta-cyan) !important;
    color: var(--krypta-cyan) !important;
}
html[data-theme="dark"] .flatpickr-day.flatpickr-disabled,
html[data-theme="dark"] .flatpickr-day.prevMonthDay,
html[data-theme="dark"] .flatpickr-day.nextMonthDay {
    color: rgba(255,255,255,0.30) !important;
}
html[data-theme="dark"] .flatpickr-month,
html[data-theme="dark"] .flatpickr-current-month,
html[data-theme="dark"] .flatpickr-monthDropdown-months,
html[data-theme="dark"] .numInputWrapper input,
html[data-theme="dark"] .flatpickr-weekday {
    color: #FFFFFF !important;
    background-color: transparent !important;
}
html[data-theme="dark"] .flatpickr-prev-month,
html[data-theme="dark"] .flatpickr-next-month {
    color: #FFFFFF !important;
    fill: #FFFFFF !important;
}
html[data-theme="dark"] .flatpickr-prev-month svg,
html[data-theme="dark"] .flatpickr-next-month svg {
    fill: #FFFFFF !important;
}

/* ============================================================================
   29. AUTO-COMPLETE / DATALIST / NUMERIC INPUTS
   ============================================================================ */
html[data-theme="dark"] input[type="number"]::-webkit-outer-spin-button,
html[data-theme="dark"] input[type="number"]::-webkit-inner-spin-button {
    filter: invert(1);
}

/* Webkit autofill — Chrome polui o input com fundo amarelo */
html[data-theme="dark"] input:-webkit-autofill,
html[data-theme="dark"] input:-webkit-autofill:hover,
html[data-theme="dark"] input:-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0 1000px #1A2233 inset !important;
    -webkit-text-fill-color: #FFFFFF !important;
    caret-color: #FFFFFF !important;
}

/* ============================================================================
   30. UTILITÁRIOS GERAIS DARK (catch-all defensivo)
   ============================================================================ */
html[data-theme="dark"] .text-dark { color: #FFFFFF !important; }
html[data-theme="dark"] .text-black { color: #FFFFFF !important; }
html[data-theme="dark"] .border { border-color: rgba(255,255,255,0.15) !important; }
html[data-theme="dark"] hr { border-color: rgba(255,255,255,0.10) !important; }
html[data-theme="dark"] .border-secondary,
html[data-theme="dark"] .border-light { border-color: rgba(255,255,255,0.15) !important; }

/* Texto vermelho do "Sair" na sidebar — manter visível */
html[data-theme="dark"] .sidebar a.text-danger {
    color: #FCA5A5 !important;
}
html[data-theme="dark"] .sidebar a.text-danger:hover {
    background-color: rgba(239,68,68,0.10) !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   31. MSELECT — COMPORTAMENTO BASE (HOTFIX 2026-05-08 #2)
   ============================================================================
   O componente mselect estava sem o CSS comportamental — o dropdown ficava
   sempre aberto. Aqui criamos o display correto: dropdown escondido por
   default, mostrado quando .mselect ganha .open.
   ============================================================================ */

/* Container — relativo pra ancorar o dropdown absolutamente */
.mselect {
    position: relative;
    display: inline-block;
    width: 100%;
}

/* Header (parte clicável) */
.mselect-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    /* FIX 2026-05-12 (d): leve aumento do padding horizontal (10→12px)
       pra dar respiro ao texto do placeholder. */
    padding: 6px 12px;
    border: 1px solid var(--krypta-border-strong);
    border-radius: 8px;
    background-color: var(--krypta-bg-card);
    color: var(--krypta-text-primary);
    cursor: pointer;
    user-select: none;
    min-height: 34px;
    font-size: 14px;
    transition: border-color 0.15s ease;
}
.mselect-header:hover {
    border-color: var(--krypta-cyan);
}
.mselect-header .fa-chevron-down {
    transition: transform 0.15s ease;
    color: var(--krypta-text-muted);
    font-size: 12px;
}
.mselect.open .mselect-header .fa-chevron-down {
    transform: rotate(180deg);
}
.mselect-label {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.mselect-label.is-placeholder {
    color: var(--krypta-text-faded);
}

/* Dropdown — escondido por default, mostrado quando .mselect.open */
.mselect-dropdown {
    display: none;
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 1050;
    min-width: 220px;
    max-width: 360px;
    max-height: 320px;
    overflow-y: auto;
    background-color: var(--krypta-bg-card);
    border: 1px solid var(--krypta-border-strong);
    border-radius: 10px;
    box-shadow: var(--krypta-shadow-medium);
    padding: 8px;
}
.mselect.open .mselect-dropdown {
    display: block;
}

/* Search dentro do dropdown */
.mselect-search {
    margin-bottom: 6px;
}
.mselect-search input {
    width: 100%;
    padding: 5px 9px;
    border: 1px solid var(--krypta-border-strong);
    border-radius: 6px;
    background-color: var(--krypta-bg-page);
    color: var(--krypta-text-primary);
    font-size: 13px;
}
.mselect-search input:focus {
    outline: none;
    border-color: var(--krypta-cyan);
    box-shadow: 0 0 0 2px rgba(0,184,230,0.18);
}

/* "Selecionar todos" */
.mselect-all {
    /* FIX 2026-05-12 (d): padding-left maior pra acomodar o checkbox do
       Bootstrap `.form-check` (que usa position:absolute; left:0 dentro
       de um container com padding-left:1.5em). Antes era 4px → checkbox
       cortado à esquerda. */
    padding: 5px 4px 5px 8px;
    border-bottom: 1px solid var(--krypta-border);
    margin-bottom: 4px;
}
.mselect-all label {
    color: var(--krypta-text-primary);
    cursor: pointer;
    margin-left: 6px;
}

/* Cada opção */
.mselect-option {
    /* FIX 2026-05-12 (d): idem `.mselect-all` — padding-left maior
       garante que o checkbox `.form-check-input` não fique cortado. */
    padding: 4px 4px 4px 8px;
    border-radius: 4px;
}
.mselect-option:hover {
    background-color: rgba(0,184,230,0.06);
}
.mselect-option label {
    color: var(--krypta-text-primary);
    cursor: pointer;
    margin-left: 6px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.mselect-badge {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* Item escondido por busca */
.mselect-option.d-none { display: none !important; }

/* Estilo "selecionado" — quando há selected, badge mostra contador */
.mselect-label.has-selected {
    color: var(--krypta-cyan);
    font-weight: 600;
}

/* DARK MODE — sobrescreve cores específicas */
html[data-theme="dark"] .mselect-header {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.20) !important;
    color: #FFFFFF !important;
}

/* FIX 2026-05-12 (e) — DEFESA EM PROFUNDIDADE: força padding-left
   suficiente em QUALQUER .form-check dentro de QUALQUER dropdown de
   multi-select do sistema. Resolve definitivamente o problema dos
   checkboxes "cortados à esquerda" — que vinha porque algumas regras
   sobrescreviam o padding-left:1.5em padrão do Bootstrap com um
   padding menor, jogando o checkbox absoluto pra fora da área visível.
   `box-sizing` é forçado pra evitar que algum reset zere essa conta. */
.mselect-dropdown .form-check,
.mselect-dropdown .mselect-option,
.mselect-dropdown .mselect-all,
.custom-multi-select .dropdown-list .form-check,
.multi-dropdown .form-check,
[id^="msv_drop_"] .form-check {
    box-sizing: border-box;
    padding-left: 1.75em !important;
    position: relative;
}
.mselect-dropdown .form-check .form-check-input,
.mselect-dropdown .mselect-option .form-check-input,
.mselect-dropdown .mselect-all .form-check-input,
.custom-multi-select .dropdown-list .form-check .form-check-input,
.multi-dropdown .form-check .form-check-input,
[id^="msv_drop_"] .form-check .form-check-input {
    margin-left: -1.5em;
    margin-top: 0.25em;
}
html[data-theme="dark"] .mselect-header:hover {
    border-color: var(--krypta-cyan) !important;
}
html[data-theme="dark"] .mselect-header .fa-chevron-down {
    color: rgba(255,255,255,0.55) !important;
}
html[data-theme="dark"] .mselect-dropdown {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.20) !important;
    box-shadow: 0 12px 40px rgba(0,0,0,0.6) !important;
}
html[data-theme="dark"] .mselect-search input {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.18) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .mselect-all {
    border-bottom-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .mselect-all label,
html[data-theme="dark"] .mselect-option label {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .mselect-option:hover {
    background-color: rgba(0,209,255,0.10) !important;
}
html[data-theme="dark"] .mselect-label.is-placeholder {
    color: rgba(255,255,255,0.45) !important;
}

/* ============================================================================
   32. CARDS COM bg-white / bg-light INLINE EM TEMPLATES — DARK FIX
   ============================================================================
   Vários templates usam estilos inline (style="background:#fff..." ou classes
   como .card.bg-white) que não tinham override no dark. Aqui forçamos.
   ============================================================================ */

/* Cards de KPI (Dashboard de Performance) — costumam ter background branco inline */
html[data-theme="dark"] .card[style*="background"],
html[data-theme="dark"] .card[style*="rgb(255"],
html[data-theme="dark"] .card[style*="#fff"],
html[data-theme="dark"] .card[style*="#FFF"] {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .card-body[style*="background"],
html[data-theme="dark"] .card-body[style*="rgb(255"],
html[data-theme="dark"] .card-body[style*="#fff"],
html[data-theme="dark"] .card-body[style*="#FFF"] {
    background-color: transparent !important;
    color: #FFFFFF !important;
}

/* Containers que usaram background inline #fff */
html[data-theme="dark"] div[style*="background:#fff"],
html[data-theme="dark"] div[style*="background: #fff"],
html[data-theme="dark"] div[style*="background-color:#fff"],
html[data-theme="dark"] div[style*="background-color: #fff"],
html[data-theme="dark"] div[style*="background:white"],
html[data-theme="dark"] div[style*="background: white"] {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] div[style*="background:#f"],
html[data-theme="dark"] div[style*="background: #f"],
html[data-theme="dark"] div[style*="background-color:#f"],
html[data-theme="dark"] div[style*="background-color: #f"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}

/* Textos pretos hardcoded em estilos inline */
html[data-theme="dark"] *[style*="color:#000"],
html[data-theme="dark"] *[style*="color: #000"],
html[data-theme="dark"] *[style*="color:black"],
html[data-theme="dark"] *[style*="color: black"],
html[data-theme="dark"] *[style*="color:#111"],
html[data-theme="dark"] *[style*="color:#1f2937"],
html[data-theme="dark"] *[style*="color:#374151"],
html[data-theme="dark"] *[style*="color:#1e293b"] {
    color: #FFFFFF !important;
}
html[data-theme="dark"] *[style*="color:#6b7280"],
html[data-theme="dark"] *[style*="color: #6b7280"],
html[data-theme="dark"] *[style*="color:#64748b"],
html[data-theme="dark"] *[style*="color: #64748b"],
html[data-theme="dark"] *[style*="color:#94a3b8"] {
    color: #CBD5E1 !important;
}

/* "Painel Executivo por Equipe" tem cards brancos com texto preto — força tudo */
html[data-theme="dark"] .container-fluid > div[style*="background"]:not([style*="gradient"]),
html[data-theme="dark"] section[style*="background"]:not([style*="gradient"]) {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   33. GRÁFICOS NO DARK — texto branco/cinza, eixos visíveis
   ============================================================================
   Reforça o JS de Chart.defaults com regras CSS para casos onde o canvas
   está dentro de um wrapper com fundo branco fixo, ou para SVG charts.
   ============================================================================ */

/* Wrappers de gráfico que tinham bg-white inline */
html[data-theme="dark"] .chart-card,
html[data-theme="dark"] .chart-wrapper,
html[data-theme="dark"] .grafico-container,
html[data-theme="dark"] .chart-box,
html[data-theme="dark"] [class*="chart-bg"] {
    background-color: #111827 !important;
    color: #FFFFFF !important;
    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 12px;
}

/* SVG inline (alguns gráficos custom usam SVG ao invés de canvas) */
html[data-theme="dark"] svg text,
html[data-theme="dark"] svg .axis text,
html[data-theme="dark"] svg .label text,
html[data-theme="dark"] svg tspan {
    fill: #E2E8F0 !important;
    color: #E2E8F0 !important;
}
html[data-theme="dark"] svg .axis line,
html[data-theme="dark"] svg .axis path,
html[data-theme="dark"] svg .grid line,
html[data-theme="dark"] svg .domain {
    stroke: rgba(255,255,255,0.18) !important;
}

/* Tooltip do Chart.js em DOM (fallback) */
html[data-theme="dark"] .chartjs-tooltip-key,
html[data-theme="dark"] .chartjs-tooltip-value {
    color: #FFFFFF !important;
}

/* ============================================================================
   34. PROGRESS BARS, BADGES E PEQUENOS CARDS COM bg-white
   ============================================================================ */

/* Barras de progresso (atingimento de meta) */
html[data-theme="dark"] .progress {
    background-color: #1A2233 !important;
}

/* Cards de KPI com texto cinza específico no dark — forçar branco */
html[data-theme="dark"] .kpi-card,
html[data-theme="dark"] .stat-card,
html[data-theme="dark"] .number-card {
    background-color: #111827 !important;
    color: #FFFFFF !important;
    border: 1px solid rgba(255,255,255,0.10);
}

/* Badges discretos (37%, 47.7%, etc) com bg cinza claro — viram bg escuro */
html[data-theme="dark"] .badge-soft,
html[data-theme="dark"] .badge-light {
    background-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   35. TABELAS COM CABEÇALHO BRANCO HARDCODED — DARK FIX
   ============================================================================ */

html[data-theme="dark"] table[style*="background"],
html[data-theme="dark"] thead[style*="background"],
html[data-theme="dark"] tr[style*="background"]:not([style*="gradient"]) {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] table thead tr th[style*="background"] {
    background-color: #1A2233 !important;
    color: #CBD5E1 !important;
}

/* ============================================================================
   36. CLASSES LEGADAS COM BG-WHITE EM <style> INTERNO — OVERRIDE DARK
   ============================================================================
   Templates antigos (relatorios.html, relatorios_metricas.html, dre_consolidada.html)
   têm CSS interno com `background:#fff` hardcoded em dezenas de classes.
   Em vez de editar todos esses arquivos, sobrescrevemos as classes mais usadas
   aqui no CSS global com seletores específicos pro dark.
   ============================================================================ */

/* relatorios_metricas.html */
html[data-theme="dark"] .painel-stats {
    background: #111827 !important;
    border: 1px solid rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .painel-stats .painel-titulo,
html[data-theme="dark"] .painel-stats th,
html[data-theme="dark"] .painel-stats td {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .painel-stats th {
    color: #94A3B8 !important;
}

/* Classes específicas de tabela de meta (relatorios_metricas) */
html[data-theme="dark"] .tbl-corretor thead th {
    background: #1A2233 !important;
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .tbl-corretor tbody td {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .tbl-corretor tbody td.corretor-nome {
    color: #FFFFFF !important;
}
/* Células de meta verde — dar versão escura */
html[data-theme="dark"] .tbl-corretor tbody td.meta-cel-total {
    background: rgba(34,197,94,0.16) !important;
    color: #BBF7D0 !important;
}
html[data-theme="dark"] .tbl-corretor tbody td.meta-cel-qual {
    background: rgba(34,197,94,0.10) !important;
    color: #BBF7D0 !important;
}
html[data-theme="dark"] .tbl-corretor tbody td.meta-cel-ades {
    background: rgba(245,158,11,0.16) !important;
    color: #FEF3C7 !important;
}

/* relatorios.html — classes utilitárias */
html[data-theme="dark"] .filter-section,
html[data-theme="dark"] .custom-multi-select,
html[data-theme="dark"] .custom-multi-select .search-box,
html[data-theme="dark"] .custom-multi-select .search-box input {
    background: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.18) !important;
}

/* Inputs flatpickr dentro de relatorios.html que tinham style inline */
html[data-theme="dark"] input[style*="background:#fff"],
html[data-theme="dark"] input[style*="background: #fff"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}

/* Cards do "Resumo Executivo", "Painel Executivo por Equipe", "Tendência",
   "Cohort", "Sazonalidade" — todos usam .card padrão, então o override
   universal de .card no dark já cobre. Mas alguns têm bg inline: */
html[data-theme="dark"] .card-header.bg-white,
html[data-theme="dark"] [class*="card"][class*="bg-white"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.10) !important;
}

/* Nav-pills (Métricas, Equipes e Metas) tinham bg-white inline */
html[data-theme="dark"] .nav-pills.bg-white,
html[data-theme="dark"] ul.nav-pills.bg-white {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .nav-pills .nav-link {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .nav-pills .nav-link:hover {
    background-color: rgba(0,209,255,0.12) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .nav-pills .nav-link.active {
    background: var(--krypta-gradient-brand) !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   37. KPI CARDS DO DASHBOARD DE PERFORMANCE — DARK
   ============================================================================
   Os cards de "FATURAMENTO / CONTRATOS / CORRETORES / VIDAS / TICKET MÉDIO /
   CONCENTRAÇÃO" têm um número grande colorido (azul, verde, ciano, amarelo,
   roxo). No dark eles devem ficar com fundo escuro mantendo a cor do número.
   ============================================================================ */

html[data-theme="dark"] .kpi-card,
html[data-theme="dark"] .stat-card,
html[data-theme="dark"] .number-card,
html[data-theme="dark"] [class*="card-kpi"],
html[data-theme="dark"] [class*="kpi-tile"] {
    background-color: #111827 !important;
    border: 1px solid rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .kpi-card .label,
html[data-theme="dark"] .stat-card .label,
html[data-theme="dark"] [class*="card-kpi"] .label {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .kpi-card .value,
html[data-theme="dark"] .stat-card .value,
html[data-theme="dark"] [class*="card-kpi"] .value {
    /* mantém a cor do JS/template */
}
html[data-theme="dark"] .kpi-card small,
html[data-theme="dark"] .stat-card small {
    color: #94A3B8 !important;
}

/* ============================================================================
   38. RELATORIOS.HTML — classes legadas internas (HOTFIX)
   ============================================================================ */

/* Multi-select antigo do relatorios.html (antes do .mselect) */
html[data-theme="dark"] .multi-select-box {
    background: #1A2233 !important;
    border-color: rgba(255,255,255,0.18) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .multi-dropdown {
    background: #111827 !important;
    border-color: rgba(255,255,255,0.18) !important;
    color: #FFFFFF !important;
    box-shadow: 0 12px 40px rgba(0,0,0,0.6) !important;
}

/* Cards de gráfico do relatorios.html */
html[data-theme="dark"] .grafico-card {
    background: #111827 !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .analise-grafica-wrapper {
    color: #FFFFFF !important;
}

/* Filter-section em relatorios.html */
html[data-theme="dark"] .filter-section {
    background: #111827 !important;
    color: #FFFFFF !important;
    box-shadow: 0 4px 16px rgba(0,0,0,0.4) !important;
}

/* KPI cards (border-left azul) — manter borda mas pintar fundo */
html[data-theme="dark"] .kpi-card {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}

/* Card-header azul antigo (#004a87) — re-pinta com gradiente Krypta */
html[data-theme="dark"] .card-header-blue {
    background: var(--krypta-gradient-blue) !important;
    color: #FFFFFF !important;
}
.card-header-blue {
    /* Versão light também ganha gradiente Krypta pra ficar bonita */
    background: var(--krypta-gradient-blue) !important;
    color: #FFFFFF !important;
}

/* Tabela custom com header azul */
html[data-theme="dark"] .table-custom thead th,
.table-custom thead th {
    background: var(--krypta-gradient-blue) !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   39. SUB-DRE / "VISÃO DA EMPRESA" cards de KPI
   ============================================================================
   Os cards "FATURAMENTO / CONTRATOS / CORRETORES ATIVOS / TICKET / CONCENTRAÇÃO"
   geralmente vêm com classe genérica + cor inline. Vamos garantir contraste.
   ============================================================================ */
html[data-theme="dark"] .card .text-success { color: #4ADE80 !important; }
html[data-theme="dark"] .card .text-info,
html[data-theme="dark"] .card .text-primary { color: #38BDF8 !important; }
html[data-theme="dark"] .card .text-warning { color: #FBBF24 !important; }
html[data-theme="dark"] .card .text-danger { color: #F87171 !important; }

/* ============================================================================
   40. SUMMARY CARDS COM DOTS COLORIDOS (BARRINHA NA LATERAL)
   ============================================================================ */
html[data-theme="dark"] .card[style*="border-left"] {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .card[style*="border-top"] {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   41. TÍTULOS DE GRÁFICOS / CARDS — em ROXO Krypta (decisão de marca)
   ============================================================================
   Headers de cards que contêm gráficos ou seções analíticas ganham roxo Krypta.
   ============================================================================ */

/* Headers que CONTÊM ícones de gráfico (line/bar/pie) → roxo */
.card-header h1, .card-header h2, .card-header h3,
.card-header h4, .card-header h5, .card-header h6,
.card-header strong, .card-header b,
.card-header span.titulo,
.chart-card-header,
.grafico-titulo,
.painel-titulo {
    color: var(--krypta-violet);
}
html[data-theme="dark"] .card-header h1,
html[data-theme="dark"] .card-header h2,
html[data-theme="dark"] .card-header h3,
html[data-theme="dark"] .card-header h4,
html[data-theme="dark"] .card-header h5,
html[data-theme="dark"] .card-header h6,
html[data-theme="dark"] .card-header strong,
html[data-theme="dark"] .card-header b,
html[data-theme="dark"] .card-header span.titulo,
html[data-theme="dark"] .chart-card-header,
html[data-theme="dark"] .grafico-titulo,
html[data-theme="dark"] .painel-titulo {
    color: #C084FC !important;  /* violeta mais claro pra ler em fundo escuro */
}

/* Quando o card-header tem fundo gradiente Krypta ou bg-primary/bg-info,
   o título fica branco (não roxo) — não sobrescrevemos esses casos */
.card-header.bg-primary h1, .card-header.bg-primary h2, .card-header.bg-primary h3,
.card-header.bg-primary h4, .card-header.bg-primary h5, .card-header.bg-primary h6,
.card-header.bg-primary strong, .card-header.bg-primary b,
.card-header.bg-info h1, .card-header.bg-info h2, .card-header.bg-info h3,
.card-header.bg-info h4, .card-header.bg-info h5, .card-header.bg-info h6,
.card-header.bg-info strong, .card-header.bg-info b,
.card-header-blue h1, .card-header-blue h2, .card-header-blue h3,
.card-header-blue h4, .card-header-blue h5, .card-header-blue h6,
.card-header-blue strong, .card-header-blue b,
html[data-theme="dark"] .card-header.bg-primary *,
html[data-theme="dark"] .card-header.bg-info *,
html[data-theme="dark"] .card-header-blue * {
    color: #FFFFFF !important;
}

/* Cards de seção (com classe .secao-titulo ou h5 fora do card-header) */
.secao-titulo,
h2.secao,
h3.secao,
.titulo-roxo {
    color: var(--krypta-violet);
}
html[data-theme="dark"] .secao-titulo,
html[data-theme="dark"] h2.secao,
html[data-theme="dark"] h3.secao,
html[data-theme="dark"] .titulo-roxo {
    color: #C084FC !important;
}

/* ============================================================================
   42. RESPONSIVO — RECEITA SOBRE CONTRATOS NO MOBILE
   ============================================================================
   Tabela de entrada de caixa com inputs P1-P4 e nome do cliente.
   No mobile (≤768px) os inputs ficavam minúsculos. Aumenta e re-organiza.
   ============================================================================ */

/* Limita visualmente o nome do cliente em 15 chars com tooltip via title */
.cliente-truncado-15 {
    display: inline-block;
    max-width: 16ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
}

/* Inputs de parcela (P1-P4) — desktop: tamanho padrão; mobile: maior */
.input-parcela {
    min-width: 80px;
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-family: var(--sistema-font-mono);
    font-size: 13px;
}

@media (max-width: 768px) {
    /* 2026-05 — corrigido vazamento do container.
       Antes: min-width:100% + padding:10/12 + height:42 estavam estourando
       a linha (cell flex max-width:60%). Agora: campo respeita a cell. */
    .input-parcela {
        min-width: 0;          /* anula o 80px do desktop */
        width: 100%;           /* preenche o flex da cell, sem vazar */
        max-width: 100%;
        font-size: 15px;       /* 15px ainda evita zoom-in do iOS */
        padding: 6px 8px;
        height: 36px;
        box-sizing: border-box;
    }

    /* Tabela de Receita sobre Contratos — empilha em "cards" no mobile */
    .tabela-receita-mobile-cards {
        display: block;
    }
    .tabela-receita-mobile-cards thead {
        display: none;  /* esconde header da tabela no mobile */
    }
    .tabela-receita-mobile-cards tbody,
    .tabela-receita-mobile-cards tr {
        display: block;
    }
    .tabela-receita-mobile-cards tr {
        background: var(--krypta-bg-card);
        border: 1px solid var(--krypta-border);
        border-radius: 12px;
        padding: 12px;
        margin-bottom: 12px;
        box-shadow: var(--krypta-shadow-soft);
    }
    .tabela-receita-mobile-cards td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 6px 0 !important;
        border: none !important;
        gap: 12px;
    }
    .tabela-receita-mobile-cards td::before {
        content: attr(data-label);
        font-family: var(--sistema-font-mono);
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: var(--krypta-text-faded);
        font-weight: 500;
        min-width: 90px;
        flex-shrink: 0;        /* 2026-05 — label não encolhe, input fica com o resto */
    }
    .tabela-receita-mobile-cards td input {
        flex: 1 1 auto;        /* 2026-05 — toma o que sobrar, sem forçar 60% */
        min-width: 0;          /* permite encolher para caber */
        max-width: 100%;
    }
    .tabela-receita-mobile-cards td.cliente-cel {
        font-size: 15px;
        font-weight: 600;
        color: var(--krypta-text-primary);
        border-bottom: 1px solid var(--krypta-border) !important;
        padding-bottom: 10px !important;
        margin-bottom: 6px;
    }

    /* Cards de KPI no Receita — empilha 2 por linha */
    .row.g-2.mb-3 .col {
        flex: 0 0 50%;
        max-width: 50%;
    }
}

/* ============================================================================
   43. DARK MODE — MAIS CASOS DE CARDS BRANCOS DESCOBERTOS
   ============================================================================ */

/* "Tendência (Regressão Linear)" e "Concentração de Mercado" — quando
   o número/texto fica em fundo claro fixo no dark */
html[data-theme="dark"] [class*="card"][class*="border-warning"]:not(.bg-warning),
html[data-theme="dark"] [class*="card"][class*="border-info"]:not(.bg-info),
html[data-theme="dark"] [class*="card"][class*="border-success"]:not(.bg-success),
html[data-theme="dark"] [class*="card"][class*="border-primary"]:not(.bg-primary),
html[data-theme="dark"] [class*="card"][class*="border-danger"]:not(.bg-danger) {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}

/* Catch-all final: qualquer .card sem classe .bg-* explícita fica escuro */
html[data-theme="dark"] .card:not(.bg-primary):not(.bg-success):not(.bg-warning):not(.bg-danger):not(.bg-info):not(.bg-secondary):not(.bg-dark) {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .card:not(.bg-primary):not(.bg-success):not(.bg-warning):not(.bg-danger):not(.bg-info):not(.bg-secondary):not(.bg-dark) .text-muted,
html[data-theme="dark"] .card:not(.bg-primary):not(.bg-success):not(.bg-warning):not(.bg-danger):not(.bg-info):not(.bg-secondary):not(.bg-dark) small {
    color: #94A3B8 !important;
}

/* ============================================================================
   44. SELECTS DO SISTEMA — TODOS ESCUROS NO DARK (KRYPTA HOTFIX)
   ============================================================================
   Reforço final pra garantir que NENHUM <select> do sistema fique branco
   no dark. Cobre selects que usam Bootstrap's form-select, .form-control com
   tag <select>, custom selects com classes diversas e selects nativos.
   ============================================================================ */

/* Catch-all: TODO select no dark vira escuro com texto branco */
html[data-theme="dark"] select,
html[data-theme="dark"] select.form-select,
html[data-theme="dark"] select.form-control,
html[data-theme="dark"] select.form-control-sm,
html[data-theme="dark"] select.form-select-sm {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.20) !important;
    /* Seta do select com cor visível no dark */
    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='%23E2E8F0' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") !important;
}

/* Options do select — cada navegador renderiza diferente, mas damos contraste */
html[data-theme="dark"] select option,
html[data-theme="dark"] select.form-select option {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] select option:checked,
html[data-theme="dark"] select option:hover {
    background-color: rgba(0,209,255,0.20) !important;
    color: #FFFFFF !important;
}

/* Inputs date / datetime / month — Chrome força fundo branco se não overrider */
html[data-theme="dark"] input[type="date"],
html[data-theme="dark"] input[type="datetime-local"],
html[data-theme="dark"] input[type="month"],
html[data-theme="dark"] input[type="time"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    color-scheme: dark;
}
html[data-theme="dark"] input[type="date"]::-webkit-calendar-picker-indicator,
html[data-theme="dark"] input[type="datetime-local"]::-webkit-calendar-picker-indicator,
html[data-theme="dark"] input[type="month"]::-webkit-calendar-picker-indicator,
html[data-theme="dark"] input[type="time"]::-webkit-calendar-picker-indicator {
    filter: invert(0.9) brightness(1.5);
    cursor: pointer;
}

/* Inputs number — também força no dark */
html[data-theme="dark"] input[type="number"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] input[type="number"]::-webkit-inner-spin-button,
html[data-theme="dark"] input[type="number"]::-webkit-outer-spin-button {
    filter: invert(0.9);
}

/* ============================================================================
   45. CARDS DO TOPO — PRETOS SÓLIDOS COM BARRA LATERAL COLORIDA
   ============================================================================
   Decisão de marca KRYPTA: cards de KPI no topo das abas ficam 100% pretos,
   com uma BARRA FINA na lateral esquerda mantendo a cor semântica
   (verde/vermelho/amarelo/azul/cyan) pra leitura visual rápida.

   Tanto em LIGHT quanto em DARK — uniformidade total.
   ============================================================================ */

/* Cards .bg-primary/.bg-success/etc no topo: fundo preto sólido + barra */
.card.bg-primary,
.card.bg-success,
.card.bg-warning,
.card.bg-danger,
.card.bg-info,
.card.bg-secondary,
.card.bg-dark {
    background: #0F172A !important;
    color: #FFFFFF !important;
    border: none !important;
    border-radius: 12px !important;
    overflow: hidden !important;
    position: relative !important;
    /* barra colorida no lado esquerdo (4px) */
    border-left: 4px solid var(--krypta-cyan) !important;
}
html[data-theme="dark"] .card.bg-primary,
html[data-theme="dark"] .card.bg-success,
html[data-theme="dark"] .card.bg-warning,
html[data-theme="dark"] .card.bg-danger,
html[data-theme="dark"] .card.bg-info,
html[data-theme="dark"] .card.bg-secondary,
html[data-theme="dark"] .card.bg-dark {
    background: #030712 !important;
}

/* Cor da barra por tipo */
.card.bg-primary { border-left-color: var(--krypta-cyan) !important; }
.card.bg-success { border-left-color: var(--krypta-success) !important; }
.card.bg-warning { border-left-color: var(--krypta-warning) !important; }
.card.bg-danger  { border-left-color: var(--krypta-danger) !important; }
.card.bg-info    { border-left-color: var(--krypta-cyan) !important; }
.card.bg-secondary { border-left-color: var(--krypta-text-faded) !important; }
.card.bg-dark    { border-left-color: var(--krypta-violet) !important; }

/* Texto SEMPRE branco dentro destes cards */
.card.bg-primary *,
.card.bg-success *,
.card.bg-warning *,
.card.bg-danger *,
.card.bg-info *,
.card.bg-secondary *,
.card.bg-dark * {
    color: #FFFFFF !important;
}
.card.bg-primary .text-muted,
.card.bg-success .text-muted,
.card.bg-warning .text-muted,
.card.bg-danger .text-muted,
.card.bg-info .text-muted,
.card.bg-secondary .text-muted,
.card.bg-dark .text-muted,
.card.bg-primary small,
.card.bg-success small,
.card.bg-warning small,
.card.bg-danger small,
.card.bg-info small,
.card.bg-secondary small,
.card.bg-dark small {
    color: #94A3B8 !important;
    opacity: 0.85;
}

/* Card-header bg-primary/info etc agora também é preto com barra superior */
.card-header.bg-primary,
.card-header.bg-success,
.card-header.bg-warning,
.card-header.bg-danger,
.card-header.bg-info,
.card-header.bg-secondary,
.card-header.bg-dark,
.card-header-blue {
    background: #0F172A !important;
    color: #FFFFFF !important;
    border-bottom: 2px solid var(--krypta-cyan) !important;
}
html[data-theme="dark"] .card-header.bg-primary,
html[data-theme="dark"] .card-header.bg-success,
html[data-theme="dark"] .card-header.bg-warning,
html[data-theme="dark"] .card-header.bg-danger,
html[data-theme="dark"] .card-header.bg-info,
html[data-theme="dark"] .card-header.bg-secondary,
html[data-theme="dark"] .card-header.bg-dark,
html[data-theme="dark"] .card-header-blue {
    background: #030712 !important;
}
.card-header.bg-success { border-bottom-color: var(--krypta-success) !important; }
.card-header.bg-warning { border-bottom-color: var(--krypta-warning) !important; }
.card-header.bg-danger  { border-bottom-color: var(--krypta-danger) !important; }
.card-header.bg-info    { border-bottom-color: var(--krypta-cyan) !important; }
.card-header.bg-secondary { border-bottom-color: var(--krypta-text-faded) !important; }

/* ============================================================================
   46. UPLOAD DROPZONES — CONTRATOS / BOLETOS / COMPROVANTES
   ============================================================================
   Estilo unificado para a aba "DOCUMENTAÇÃO DRIVE" do cadastro.
   ============================================================================ */

.upload-card {
    height: 100%;
}
.upload-label {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 130px;
    padding: 24px 16px;
    border: 2px dashed var(--krypta-border-strong);
    border-radius: 12px;
    background-color: var(--krypta-bg-card);
    text-align: center;
    cursor: pointer;
    transition: all 0.2s ease;
    color: var(--krypta-text-primary);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
}
.upload-label:hover {
    border-color: var(--krypta-cyan);
    background-color: rgba(0,184,230,0.06);
    transform: translateY(-1px);
    box-shadow: var(--krypta-shadow-glow-cyan);
}
.upload-label .file-info {
    color: var(--krypta-text-muted) !important;
    font-size: 13px;
}
.upload-label .fw-bold {
    color: var(--krypta-text-primary);
    letter-spacing: 0.04em;
    font-family: var(--sistema-font-mono);
    font-size: 13px;
}

/* Dark mode das dropzones */
html[data-theme="dark"] .upload-label {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.20) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .upload-label:hover {
    background-color: rgba(0,209,255,0.10) !important;
    border-color: var(--krypta-cyan) !important;
}
html[data-theme="dark"] .upload-label .fw-bold,
html[data-theme="dark"] .upload-label span:not(.file-info) {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .upload-label .file-info {
    color: #94A3B8 !important;
}
/* Card que envolve as dropzones — body em dark também */
html[data-theme="dark"] .card-body.bg-light {
    background-color: #111827 !important;
}

/* ============================================================================
   47. CUSTOM-MULTI-SELECT (componente do relatorios.html) — DARK
   ============================================================================
   Componente DIFERENTE do .mselect (que está no _macros/filtros.html).
   Esse aqui usa .select-header / .selected-count / .dropdown-list / .search-box.
   Tem CSS hardcoded com #fff e #ced4da no template do relatórios.
   Vamos sobrepor TUDO aqui pra dark mode.
   ============================================================================ */

html[data-theme="dark"] .custom-multi-select .select-header {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.20) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .custom-multi-select .select-header:hover {
    background-color: #243044 !important;
    border-color: var(--krypta-cyan) !important;
}
html[data-theme="dark"] .custom-multi-select .selected-count {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .custom-multi-select .dropdown-list {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.20) !important;
    box-shadow: 0 12px 40px rgba(0,0,0,0.6) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .custom-multi-select .dropdown-list .form-check-label {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .custom-multi-select .search-box {
    background-color: #111827 !important;
    border-bottom-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .custom-multi-select .search-box input {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.20) !important;
}
html[data-theme="dark"] .custom-multi-select .search-box input:focus {
    background-color: #1A2233 !important;
    border-color: var(--krypta-cyan) !important;
}
html[data-theme="dark"] .custom-multi-select .search-no-results {
    color: #94A3B8 !important;
}

/* Fileira de chevron / ícone no header */
html[data-theme="dark"] .custom-multi-select .select-header i {
    color: rgba(255,255,255,0.55) !important;
}

/* Periodo input que tinha background:#fff inline em relatorios.html */
html[data-theme="dark"] #periodoRange,
html[data-theme="dark"] input#periodoRange {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.20) !important;
}

/* ============================================================================
   48. RELATÓRIOS — CATCH-ALL DEFENSIVO MUITO AGRESSIVO
   ============================================================================
   REGRA ABSOLUTA: no dark mode, NENHUM fundo pode ser branco e NENHUM texto
   pode ser preto. Esses seletores cobrem TODOS os <style> internos de
   relatorios.html / relatorios_metricas.html / dre_consolidada.html.
   ============================================================================ */

/* Qualquer container/div/section com fundo branco hardcoded */
html[data-theme="dark"] *[style*="background:#fff"],
html[data-theme="dark"] *[style*="background: #fff"],
html[data-theme="dark"] *[style*="background:#FFF"],
html[data-theme="dark"] *[style*="background: #FFF"],
html[data-theme="dark"] *[style*="background:white"],
html[data-theme="dark"] *[style*="background: white"],
html[data-theme="dark"] *[style*="background-color:#fff"],
html[data-theme="dark"] *[style*="background-color: #fff"],
html[data-theme="dark"] *[style*="background-color:white"],
html[data-theme="dark"] *[style*="background-color: white"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}

/* Texto preto/cinza-escuro hardcoded vira branco */
html[data-theme="dark"] *[style*="color:#000"],
html[data-theme="dark"] *[style*="color: #000"],
html[data-theme="dark"] *[style*="color:black"],
html[data-theme="dark"] *[style*="color: black"],
html[data-theme="dark"] *[style*="color:#111"],
html[data-theme="dark"] *[style*="color: #111"],
html[data-theme="dark"] *[style*="color:#1f2937"],
html[data-theme="dark"] *[style*="color:#1e293b"],
html[data-theme="dark"] *[style*="color:#374151"],
html[data-theme="dark"] *[style*="color:#212529"] {
    color: #FFFFFF !important;
}

/* Cinzas mais claros viram um cinza claro Krypta */
html[data-theme="dark"] *[style*="color:#5a6c7d"],
html[data-theme="dark"] *[style*="color: #5a6c7d"],
html[data-theme="dark"] *[style*="color:#6b7280"],
html[data-theme="dark"] *[style*="color: #6b7280"],
html[data-theme="dark"] *[style*="color:#6c757d"],
html[data-theme="dark"] *[style*="color:#64748b"],
html[data-theme="dark"] *[style*="color: #64748b"],
html[data-theme="dark"] *[style*="color:#94a3b8"],
html[data-theme="dark"] *[style*="color:#9ca3af"] {
    color: #94A3B8 !important;
}

/* Bordas claras viram borda escura */
html[data-theme="dark"] *[style*="border:#"],
html[data-theme="dark"] *[style*="border: #"],
html[data-theme="dark"] *[style*="border-color:#e9ecef"],
html[data-theme="dark"] *[style*="border-color:#dee2e6"],
html[data-theme="dark"] *[style*="border-color: #ced4da"],
html[data-theme="dark"] *[style*="border-color:#ced4da"],
html[data-theme="dark"] *[style*="border-color:#f1f1f1"] {
    border-color: rgba(255,255,255,0.18) !important;
}

/* Fundos cinzas-claros (#f8f9fa etc) → cinza-escuro Krypta */
html[data-theme="dark"] *[style*="background:#f8f9fa"],
html[data-theme="dark"] *[style*="background: #f8f9fa"],
html[data-theme="dark"] *[style*="background:#f9fafb"],
html[data-theme="dark"] *[style*="background: #f9fafb"],
html[data-theme="dark"] *[style*="background:#f1f5f9"],
html[data-theme="dark"] *[style*="background: #f1f5f9"],
html[data-theme="dark"] *[style*="background-color:#f8f9fa"],
html[data-theme="dark"] *[style*="background-color: #f8f9fa"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   49. RELATÓRIOS — CLASSES INTERNAS COM <style> NO TEMPLATE (override DARK)
   ============================================================================
   Templates relatorios.html e relatorios_metricas.html têm <style> internos
   com regras tipo `.painel-stats { background:#fff; }`. As classes mais
   comuns ganham override pra dark aqui.
   ============================================================================ */

/* relatorios.html */
html[data-theme="dark"] .multi-select-box,
html[data-theme="dark"] .multi-dropdown,
html[data-theme="dark"] .filter-section,
html[data-theme="dark"] .grafico-card,
html[data-theme="dark"] .kpi-card {
    background-color: #111827 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.10) !important;
}

/* Headers azul institucional (.card-header-blue) → Krypta gradient */
.card-header-blue,
.table-custom thead th {
    background: var(--krypta-gradient-blue) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .card-header-blue,
html[data-theme="dark"] .table-custom thead th {
    background: linear-gradient(135deg, #1E3A8A 0%, #0F172A 100%) !important;
    color: #FFFFFF !important;
    border-bottom: 2px solid var(--krypta-cyan) !important;
}

/* relatorios_metricas.html */
html[data-theme="dark"] .painel-stats {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .painel-stats * {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .painel-stats th {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .tbl-corretor thead th {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .tbl-corretor tbody td {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .tbl-corretor tbody td.meta-cel-total,
html[data-theme="dark"] .tbl-corretor tbody td.meta-cel-qual {
    background-color: rgba(34,197,94,0.18) !important;
    color: #BBF7D0 !important;
}
html[data-theme="dark"] .tbl-corretor tbody td.meta-cel-ades {
    background-color: rgba(245,158,11,0.18) !important;
    color: #FEF3C7 !important;
}

/* ============================================================================
   50. CHART.JS — DATALABELS plugin (rótulos sobre as barras) no DARK
   ============================================================================
   O plugin chartjs-plugin-datalabels mostra valores em cima das barras
   e usa cor preta por default. Forçamos branco no dark.
   ============================================================================ */
html[data-theme="dark"] .chartjs-render-monitor + canvas { color: #FFFFFF !important; }

/* ============================================================================
   51. HOTFIX 2026-05-10 — bug do ícone Google Drive na coluna "Drive"
   ============================================================================
   PROBLEMA: A regra .table-light > :not(caption) > * > * (linha ~385) força
   font-family: var(--sistema-font-mono) com !important. Isso cascateia até o
   <i class="fab fa-google-drive"> dentro da célula e o glyph não renderiza —
   aparece "RA" (caractere bruto) no lugar do ícone do Drive.
   FIX: ressetar font-family pro FontAwesome dentro de elementos <i> em tabelas.
   ============================================================================ */
.table-light > :not(caption) > * > * .fa,
.table-light > :not(caption) > * > * .fas,
.table-light > :not(caption) > * > * .fab,
.table-light > :not(caption) > * > * .far,
.table-light > :not(caption) > * > * .fal,
.table > :not(caption) > * > * .fa,
.table > :not(caption) > * > * .fas,
.table > :not(caption) > * > * .fab,
.table > :not(caption) > * > * .far,
.table > :not(caption) > * > * .fal {
    font-family: "Font Awesome 6 Free", "Font Awesome 6 Brands" !important;
}
.table > :not(caption) > * > * .fab,
.table-light > :not(caption) > * > * .fab {
    font-family: "Font Awesome 6 Brands" !important;
    font-weight: 400 !important;
}
.table > :not(caption) > * > * .fas,
.table-light > :not(caption) > * > * .fas {
    font-family: "Font Awesome 6 Free" !important;
    font-weight: 900 !important;
}

/* Ícone do Drive (Google) — cor que combina com a paleta
   IMPORTANTE: força a cor em qualquer contexto (dentro de <a class="text-primary">,
   dentro de .text-dark, em qualquer table-*). Senão alguns ficam pretos. */
.fa-google-drive,
a > .fa-google-drive,
.text-primary > .fa-google-drive,
.text-dark > .fa-google-drive,
a.text-primary > .fa-google-drive,
a.text-dark > .fa-google-drive,
.table .fa-google-drive,
.table-light .fa-google-drive,
.table-hover .fa-google-drive {
    color: var(--krypta-cyan) !important;
    transition: transform 0.15s ease, color 0.15s ease;
}
.fa-google-drive:hover {
    transform: scale(1.15);
    color: var(--krypta-violet) !important;
}
html[data-theme="dark"] .fa-google-drive,
html[data-theme="dark"] a > .fa-google-drive,
html[data-theme="dark"] .table .fa-google-drive {
    color: var(--krypta-cyan) !important;
    text-shadow: 0 0 8px rgba(0,209,255,0.4);
}

/* ============================================================================
   52. HOTFIX 2026-05-10 — KPIs do Visualizador (home.html)
   ============================================================================
   Os 4 cards superiores (CONTRATOS / VIDAS / VALOR TOTAL / VALOR META) usam
   classes Bootstrap puras (.card, .card-body, .text-muted, h5). No light mode
   ficam pretos demais. No dark mode os números sumiam. Aplicamos um estilo
   marca: labels alternando ciano/violeta, números brancos no dark e pretos no
   light, com bordas pintadas em gradient.
   ============================================================================ */
.row.mb-3.g-2 > .col-md-3 > .card.text-center {
    border: 1px solid var(--krypta-border) !important;
    border-radius: 12px;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
    overflow: hidden;
    position: relative;
}
.row.mb-3.g-2 > .col-md-3 > .card.text-center::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
}
.row.mb-3.g-2 > .col-md-3:nth-child(1) > .card::before {
    background: var(--krypta-cyan);
}
.row.mb-3.g-2 > .col-md-3:nth-child(2) > .card::before {
    background: var(--krypta-violet);
}
.row.mb-3.g-2 > .col-md-3:nth-child(3) > .card::before {
    background: var(--krypta-gradient-brand);
}
.row.mb-3.g-2 > .col-md-3:nth-child(4) > .card::before {
    background: var(--krypta-warning);
}
.row.mb-3.g-2 > .col-md-3 > .card.text-center:hover {
    transform: translateY(-2px);
    box-shadow: var(--krypta-shadow-medium);
}
.row.mb-3.g-2 > .col-md-3 > .card .card-body small {
    font-family: var(--sistema-font-mono);
    font-size: 0.68rem !important;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 700 !important;
}
/* Labels alternando: ciano, violeta, ciano, violeta */
.row.mb-3.g-2 > .col-md-3:nth-child(1) > .card .card-body small {
    color: var(--krypta-cyan) !important;
}
.row.mb-3.g-2 > .col-md-3:nth-child(2) > .card .card-body small {
    color: var(--krypta-violet) !important;
}
.row.mb-3.g-2 > .col-md-3:nth-child(3) > .card .card-body small {
    color: var(--krypta-cyan) !important;
}
.row.mb-3.g-2 > .col-md-3:nth-child(4) > .card .card-body small {
    color: var(--krypta-violet) !important;
}
/* Números: pretos no light, brancos no dark */
.row.mb-3.g-2 > .col-md-3 > .card .card-body h5 {
    color: var(--krypta-text-primary) !important;
    font-weight: 700;
    font-family: var(--sistema-font-display);
    margin-top: 4px !important;
}
html[data-theme="dark"] .row.mb-3.g-2 > .col-md-3 > .card .card-body h5,
html[data-theme="dark"] .row.mb-3.g-2 > .col-md-3 > .card .card-body h5.text-primary,
html[data-theme="dark"] .row.mb-3.g-2 > .col-md-3 > .card .card-body h5.text-dark {
    color: #FFFFFF !important;
}

/* ============================================================================
   53. HOTFIX 2026-05-10 — Relatórios Analíticos (relatorios_analiticos_v2.html)
   ============================================================================
   O template tem <style> inline com cores hard-coded (#fff, #dee2e6, #6c757d)
   que não respondem ao tema. Aqui forçamos os tokens Krypta no dark.
   ============================================================================ */
html[data-theme="dark"] .kpi-card {
    background: linear-gradient(135deg, #111827 0%, #1A2233 100%) !important;
    border: 1px solid rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .kpi-card .kpi-label {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .kpi-card .kpi-valor {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .kpi-card small,
html[data-theme="dark"] .kpi-card .text-muted {
    color: #94A3B8 !important;
}
/* Cores das bordas laterais — versões neon no dark */
html[data-theme="dark"] .kpi-card.primary  { border-left: 4px solid var(--krypta-cyan) !important; }
html[data-theme="dark"] .kpi-card.success  { border-left: 4px solid #22C55E !important; }
html[data-theme="dark"] .kpi-card.warning  { border-left: 4px solid #F59E0B !important; }
html[data-theme="dark"] .kpi-card.info     { border-left: 4px solid var(--krypta-cyan) !important; }
html[data-theme="dark"] .kpi-card.purple   { border-left: 4px solid var(--krypta-violet) !important; }
html[data-theme="dark"] .kpi-card.dark     { border-left: 4px solid var(--krypta-magenta) !important; }

/* Valores dentro com classes text-* respeitam o dark */
html[data-theme="dark"] .kpi-card .text-primary  { color: var(--krypta-cyan) !important; }
html[data-theme="dark"] .kpi-card .text-success  { color: #4ADE80 !important; }
html[data-theme="dark"] .kpi-card .text-warning  { color: #FBBF24 !important; }
html[data-theme="dark"] .kpi-card .text-info     { color: var(--krypta-cyan) !important; }
html[data-theme="dark"] .kpi-card .text-danger   { color: #F87171 !important; }

/* section-title (relatórios analíticos) */
html[data-theme="dark"] .section-title {
    border-left-color: var(--krypta-cyan) !important;
}
html[data-theme="dark"] .section-title h5 {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .section-title small {
    color: #94A3B8 !important;
}

/* filter-toggle-wrap (relatórios analíticos — checkboxes) */
html[data-theme="dark"] .filter-toggle-wrap {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.16) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .filter-toggle-wrap label {
    color: #CBD5E1 !important;
}

/* stat-table dark */
html[data-theme="dark"] .stat-table th {
    color: #94A3B8 !important;
    background: transparent !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-family: inherit !important;
    font-size: inherit !important;
}
html[data-theme="dark"] .stat-table td {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .stat-table .text-primary {
    color: var(--krypta-cyan) !important;
}

/* ============================================================================
   54. HOTFIX 2026-05-10 — Tabelas em "Visão Geral" (relatorios.html)
   ============================================================================
   As tabelas Performance/Categorias/Operadoras/Comparativo entre Equipes
   tinham .card-header com bg-white inline e tfoot com bg-light. No dark
   ficavam brancas mesmo. Forçamos tokens.
   ============================================================================ */
html[data-theme="dark"] .card-header.bg-white,
html[data-theme="dark"] .card-header[class*="bg-white"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-bottom: 1px solid rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .card-header.bg-white *,
html[data-theme="dark"] .card-header[class*="bg-white"] * {
    color: #FFFFFF !important;
}
/* tfoot com bg-light em tabelas */
html[data-theme="dark"] .table tfoot.bg-light,
html[data-theme="dark"] .table tfoot[class*="bg-light"] {
    background-color: #1A2233 !important;
}
html[data-theme="dark"] .table tfoot tr,
html[data-theme="dark"] .table tfoot td {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-top: 2px solid var(--krypta-cyan) !important;
}

/* Ranking podio — cores do "1º 2º 3º" no dark */
html[data-theme="dark"] .podio-1 {
    background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%) !important;
    color: #1A1100 !important;
    box-shadow: 0 0 12px rgba(255,215,0,0.4);
}
html[data-theme="dark"] .podio-2 {
    background: linear-gradient(135deg, #E2E8F0 0%, #94A3B8 100%) !important;
    color: #1F2937 !important;
}
html[data-theme="dark"] .podio-3 {
    background: linear-gradient(135deg, #CD7F32 0%, #8B4513 100%) !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   55. HOTFIX 2026-05-10 — Carrossel (botão de slide branco no dark)
   ============================================================================ */
html[data-theme="dark"] .carousel-control-prev-icon,
html[data-theme="dark"] .carousel-control-next-icon {
    filter: invert(0) !important;
    background-color: rgba(255,255,255,0.10);
    border-radius: 50%;
    background-size: 50% 50%;
    background-position: center;
    background-repeat: no-repeat;
    width: 40px;
    height: 40px;
    border: 1px solid rgba(255,255,255,0.18);
}
html[data-theme="dark"] .carousel-control-prev,
html[data-theme="dark"] .carousel-control-next {
    opacity: 1;
    width: 5%;
}
html[data-theme="dark"] .carousel-control-prev:hover .carousel-control-prev-icon,
html[data-theme="dark"] .carousel-control-next:hover .carousel-control-next-icon {
    background-color: rgba(0,209,255,0.20);
    border-color: var(--krypta-cyan);
}
html[data-theme="dark"] .carousel-indicators button {
    background-color: rgba(255,255,255,0.40) !important;
    border-radius: 50% !important;
    width: 10px !important;
    height: 10px !important;
}
html[data-theme="dark"] .carousel-indicators button.active {
    background-color: var(--krypta-cyan) !important;
}

/* ============================================================================
   56. HOTFIX 2026-05-10 — Bordas da paleta Krypta nas tabelas
   ============================================================================
   Aplicamos um leve "rim light" violeta nas bordas externas das tabelas e
   cabeçalhos seguindo a identidade Krypta.
   ============================================================================ */
html[data-theme="dark"] .table-custom,
html[data-theme="dark"] .stat-table,
html[data-theme="dark"] #tabelaCorretores,
html[data-theme="dark"] #tabelaCategorias,
html[data-theme="dark"] #tabelaOperadoras {
    border: 1px solid rgba(168,85,247,0.20);
    border-radius: 8px;
    overflow: hidden;
}
html[data-theme="dark"] .table-custom thead th,
html[data-theme="dark"] #tabelaCorretores thead th,
html[data-theme="dark"] #tabelaCategorias thead th,
html[data-theme="dark"] #tabelaOperadoras thead th {
    border-bottom: 2px solid var(--krypta-violet) !important;
    background: linear-gradient(135deg, rgba(168,85,247,0.12) 0%, rgba(0,209,255,0.08) 100%) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .table-custom tbody tr,
html[data-theme="dark"] #tabelaCorretores tbody tr,
html[data-theme="dark"] #tabelaCategorias tbody tr,
html[data-theme="dark"] #tabelaOperadoras tbody tr {
    border-bottom: 1px solid rgba(168,85,247,0.10);
}
html[data-theme="dark"] .table-custom tbody tr:hover,
html[data-theme="dark"] #tabelaCorretores tbody tr:hover,
html[data-theme="dark"] #tabelaCategorias tbody tr:hover,
html[data-theme="dark"] #tabelaOperadoras tbody tr:hover {
    background-color: rgba(168,85,247,0.08) !important;
}

/* ============================================================================
   57. HOTFIX 2026-05-10 — Selects e checkboxes do filtro (analíticos)
   ============================================================================
   Os 5 selects/checkboxes de filtro do "Relatórios Analíticos" não respeitavam
   o dark — apareciam brancos.
   ============================================================================ */
html[data-theme="dark"] .filter-section .form-control,
html[data-theme="dark"] .filter-section .form-select,
html[data-theme="dark"] .filter-section input[type="date"],
html[data-theme="dark"] .filter-section input[type="text"] {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.16) !important;
}
html[data-theme="dark"] .filter-section .form-control::placeholder {
    color: #64748B !important;
}
html[data-theme="dark"] .filter-section label,
html[data-theme="dark"] .filter-section .small {
    color: #CBD5E1 !important;
}

/* ============================================================================
   58. HOTFIX 2026-05-10 — Status badges do Mix de Produto
   ============================================================================ */
.mix-status-qualitativa {
    background: linear-gradient(135deg, #16A34A 0%, #22C55E 100%) !important;
    color: #FFFFFF !important;
    border: none;
    padding: 4px 10px;
    border-radius: 6px;
    font-weight: 600;
    font-size: 0.75rem;
}
.mix-status-equilibrada {
    background: linear-gradient(135deg, #D97706 0%, #F59E0B 100%) !important;
    color: #1F2937 !important;
    border: none;
    padding: 4px 10px;
    border-radius: 6px;
    font-weight: 600;
    font-size: 0.75rem;
}
.mix-status-fora {
    background: linear-gradient(135deg, #DC2626 0%, #EF4444 100%) !important;
    color: #FFFFFF !important;
    border: none;
    padding: 4px 10px;
    border-radius: 6px;
    font-weight: 600;
    font-size: 0.75rem;
}
.mix-pct-pme {
    background: linear-gradient(135deg, #16A34A 0%, #22C55E 100%) !important;
    color: #FFFFFF !important;
    font-weight: 700;
}
.mix-pct-pf {
    background: linear-gradient(135deg, #D97706 0%, #F59E0B 100%) !important;
    color: #1F2937 !important;
    font-weight: 700;
}
.mix-pct-adesao {
    background: linear-gradient(135deg, #DC2626 0%, #EF4444 100%) !important;
    color: #FFFFFF !important;
    font-weight: 700;
}

/* ============================================================================
   59. HOTFIX 2026-05-10 — Botão "Copiar tabela" reutilizável (analíticos)
   ============================================================================
   .btn-copy-table já existe pra Visão Geral. Reaproveitamos pro Ranking e Mix.
   E o "Recolher" do collapse precisa de cursor pointer.
   ============================================================================ */
.collapse-toggle-header {
    cursor: pointer;
    user-select: none;
    transition: background-color 0.15s ease;
}
.collapse-toggle-header:hover {
    background-color: rgba(0,184,230,0.06);
}
html[data-theme="dark"] .collapse-toggle-header:hover {
    background-color: rgba(0,209,255,0.10);
}
.collapse-toggle-header .chevron-icon {
    transition: transform 0.2s ease;
}
.collapse-toggle-header.collapsed .chevron-icon {
    transform: rotate(-90deg);
}

/* ============================================================================
   60. HOTFIX 2026-05-10 #2 — KPI Executivo (Equipes e Metas / Simulador)
   ============================================================================
   .kpi-executivo é usado em:
     - relatorios_analitico.html (Equipes e Metas) — img1
     - relatorios_simulador.html (Simulador) — Resumo do Período
   No dark estavam claros (linear-gradient com #f8f9fa→#fff hard-coded).
   ============================================================================ */
html[data-theme="dark"] .kpi-executivo {
    background: linear-gradient(135deg, #111827 0%, #1A2233 100%) !important;
    border: 1px solid rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .kpi-executivo .kpi-label {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .kpi-executivo .kpi-valor,
html[data-theme="dark"] .kpi-executivo .kpi-valor.text-dark {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .kpi-executivo .text-primary  { color: var(--krypta-cyan) !important; }
html[data-theme="dark"] .kpi-executivo .text-success  { color: #4ADE80 !important; }
html[data-theme="dark"] .kpi-executivo .text-warning  { color: #FBBF24 !important; }
html[data-theme="dark"] .kpi-executivo .text-danger   { color: #F87171 !important; }
html[data-theme="dark"] .kpi-executivo .text-info     { color: var(--krypta-cyan) !important; }
html[data-theme="dark"] .kpi-executivo .kpi-delta-up   { color: #4ADE80 !important; }
html[data-theme="dark"] .kpi-executivo .kpi-delta-down { color: #F87171 !important; }
html[data-theme="dark"] .kpi-executivo .kpi-sub,
html[data-theme="dark"] .kpi-executivo .text-muted,
html[data-theme="dark"] .kpi-executivo small {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .kpi-executivo .progress {
    background-color: rgba(255,255,255,0.10) !important;
}

/* secao-header (compartilhado por várias telas) no dark */
html[data-theme="dark"] .secao-header {
    border-left-color: var(--krypta-cyan) !important;
}
html[data-theme="dark"] .secao-header h5 { color: #FFFFFF !important; }
html[data-theme="dark"] .secao-header small,
html[data-theme="dark"] .secao-header .text-muted {
    color: #94A3B8 !important;
}

/* ============================================================================
   61. HOTFIX 2026-05-10 #2 — Simulador: aviso tributário + Resumo
   ============================================================================ */
html[data-theme="dark"] .tributos-info {
    background: rgba(245,158,11,0.10) !important;
    border-left-color: #F59E0B !important;
    color: #FEF3C7 !important;
}
html[data-theme="dark"] .tributos-info i {
    color: #F59E0B !important;
}

/* ============================================================================
   62. HOTFIX 2026-05-10 #2 — Métricas: sim-card + params-bar + painel
   ============================================================================
   .sim-card e .params-bar tinham bg branco hard-coded. Forçar dark.
   ============================================================================ */
html[data-theme="dark"] .sim-card {
    background: linear-gradient(135deg, #111827 0%, #1A2233 100%) !important;
    border-left: 5px solid var(--krypta-cyan) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .sim-card .lbl {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .sim-card .val,
html[data-theme="dark"] .sim-card .val.text-success,
html[data-theme="dark"] .sim-card .val.text-dark {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .sim-card .val.text-success { color: #4ADE80 !important; }
html[data-theme="dark"] .sim-card small,
html[data-theme="dark"] .sim-card .text-muted {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .sim-delta-pos { color: #4ADE80 !important; }
html[data-theme="dark"] .sim-delta-neg { color: #F87171 !important; }

html[data-theme="dark"] .params-bar {
    background: #111827 !important;
    border: 1px solid rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .params-bar label {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .helper-pill {
    background: rgba(168,85,247,0.15) !important;
    color: #CBD5E1 !important;
}

/* ============================================================================
   63. HOTFIX 2026-05-10 #2 — Gerenciador de Metas (img3)
   ============================================================================
   .grupo-equipe-header tinha background:#fafafa hard-coded → fundo branco
   na linha "APOIO - 3 corretores" no dark.
   ============================================================================ */
html[data-theme="dark"] .grupo-equipe {
    background: #111827 !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .grupo-equipe-header {
    background: linear-gradient(90deg, rgba(168,85,247,0.10) 0%, rgba(0,209,255,0.05) 100%) !important;
    border-bottom: 1px solid rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .grupo-equipe .table {
    background: transparent !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .grupo-equipe .table thead th {
    color: #94A3B8 !important;
    background: transparent !important;
    border-bottom: 1px solid rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .grupo-equipe .table tbody td {
    color: #FFFFFF !important;
    background: transparent !important;
    border-bottom: 1px solid rgba(255,255,255,0.06) !important;
}
html[data-theme="dark"] .grupo-equipe .table tbody td input.form-control {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.16) !important;
}
html[data-theme="dark"] .info-banner {
    background: rgba(0,209,255,0.06) !important;
    border-color: rgba(0,209,255,0.20) !important;
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .info-banner a {
    color: var(--krypta-cyan) !important;
}

/* ============================================================================
   64. HOTFIX 2026-05-10 #2 — Métricas: painel-stats + tbl-corretor já no dark
   (já existe, só reforçando que params-bar interno não fica branco)
   ============================================================================ */
html[data-theme="dark"] .metricas-page .card-body.bg-light,
html[data-theme="dark"] .metricas-page .card.bg-light,
html[data-theme="dark"] .metricas-page [class*="bg-light"] {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   65. HOTFIX 2026-05-10 #2 — flatpickr select de mês com setas duplicadas
   ============================================================================
   PROBLEMA: O <select.flatpickr-monthDropdown-months> renderizava com appearance
   nativa visível no dark (3 setinhas "v v v" sobrepondo "Maio"). Causa: regra
   anterior aplicou color #FFF mas não removeu o appearance nativo.
   ============================================================================ */
.flatpickr-monthDropdown-months {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    background-image: none !important;
    padding-right: 4px !important;
}
html[data-theme="dark"] .flatpickr-monthDropdown-months {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    background-image: none !important;
    background-color: transparent !important;
    color: #FFFFFF !important;
    border: none !important;
}
.flatpickr-monthDropdown-months option {
    background-color: var(--krypta-bg-card) !important;
    color: var(--krypta-text-primary) !important;
}
html[data-theme="dark"] .flatpickr-monthDropdown-months option {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
/* Input de ano (numInput) — remove os spinners duplicados */
.flatpickr-current-month input.cur-year {
    background: transparent !important;
}
html[data-theme="dark"] .flatpickr-current-month input.cur-year {
    color: #FFFFFF !important;
    background: transparent !important;
}
.numInputWrapper {
    background: transparent !important;
}
.numInputWrapper span {
    border-color: rgba(255,255,255,0.20) !important;
}
html[data-theme="dark"] .numInputWrapper span {
    border-color: rgba(255,255,255,0.20) !important;
}
html[data-theme="dark"] .numInputWrapper span.arrowUp::after {
    border-bottom-color: #FFFFFF !important;
}
html[data-theme="dark"] .numInputWrapper span.arrowDown::after {
    border-top-color: #FFFFFF !important;
}

/* ============================================================================
   66. HOTFIX 2026-05-10 #2 — Cards Entrada de Caixa (img8 + img9)
   ============================================================================
   Os 7 cards (TOTAL RECEBIDO, A RECEBER TOTAL, A RECEBER PME, etc) usavam
   bg-dark/bg-secondary/bg-primary/bg-info/bg-success/bg-warning/bg-danger.

   PEDIDO:
   - Light: fundo branco, letras pretas, BORDA LATERAL ESQUERDA colorida.
   - Dark: fundo escuro Krypta, letras brancas, mesma borda lateral colorida.

   Vamos taggear via classe .card-entrada-cx-* ao invés de bg-* do Bootstrap.
   Mas pra não ter que mexer em todos os usos, sobrepomos as classes bg-* QUANDO
   estão dentro do contexto da Entrada de Caixa.
   ============================================================================ */
/* Esconde a aplicação genérica de bg-* do Bootstrap dentro da Entrada de Caixa */
#sub-receita-contratos > .row > .col > .card,
#sub-vitalicio > .row > .col > .card,
#sub-entrada-manual > .row > .col > .card {
    background-color: var(--krypta-bg-card) !important;
    color: var(--krypta-text-primary) !important;
    border: 1px solid var(--krypta-border) !important;
    border-left-width: 4px !important;
    border-radius: 10px !important;
    overflow: hidden;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
    position: relative;
}
#sub-receita-contratos > .row > .col > .card small,
#sub-vitalicio > .row > .col > .card small,
#sub-entrada-manual > .row > .col > .card small {
    color: var(--krypta-text-muted) !important;
    font-family: var(--sistema-font-mono);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-size: 0.68rem !important;
    font-weight: 700;
}
#sub-receita-contratos > .row > .col > .card h5,
#sub-vitalicio > .row > .col > .card h5,
#sub-entrada-manual > .row > .col > .card h5 {
    color: var(--krypta-text-primary) !important;
    font-family: var(--sistema-font-display);
    font-weight: 700;
}
#sub-receita-contratos > .row > .col > .card:hover,
#sub-vitalicio > .row > .col > .card:hover,
#sub-entrada-manual > .row > .col > .card:hover {
    transform: translateY(-2px);
    box-shadow: var(--krypta-shadow-medium);
}
/* Bordas laterais coloridas seguindo a paleta Krypta */
#sub-receita-contratos > .row > .col:nth-child(1) > .card { border-left-color: #16A34A !important; }   /* Total recebido — verde */
#sub-receita-contratos > .row > .col:nth-child(2) > .card { border-left-color: var(--krypta-cyan) !important; }    /* A receber total — cyan */
#sub-receita-contratos > .row > .col:nth-child(3) > .card { border-left-color: var(--krypta-violet) !important; } /* A receber PME — violet */
#sub-receita-contratos > .row > .col:nth-child(4) > .card { border-left-color: var(--krypta-blue) !important; }   /* A receber PF — azul */
#sub-receita-contratos > .row > .col:nth-child(5) > .card { border-left-color: var(--krypta-magenta) !important; }/* A receber Adesão — magenta */
#sub-receita-contratos > .row > .col:nth-child(6) > .card { border-left-color: #F59E0B !important; }   /* Pago a mais — amarelo */
#sub-receita-contratos > .row > .col:nth-child(7) > .card { border-left-color: #DC2626 !important; }   /* Pago a menos — vermelho */

/* Idem para sub-vitalicio e sub-entrada-manual quando tiverem cards no mesmo padrão */
#sub-vitalicio > .row > .col:nth-child(1) > .card,
#sub-entrada-manual > .row > .col:nth-child(1) > .card { border-left-color: #16A34A !important; }
#sub-vitalicio > .row > .col:nth-child(2) > .card,
#sub-entrada-manual > .row > .col:nth-child(2) > .card { border-left-color: var(--krypta-cyan) !important; }
#sub-vitalicio > .row > .col:nth-child(3) > .card,
#sub-entrada-manual > .row > .col:nth-child(3) > .card { border-left-color: var(--krypta-violet) !important; }
#sub-vitalicio > .row > .col:nth-child(4) > .card,
#sub-entrada-manual > .row > .col:nth-child(4) > .card { border-left-color: var(--krypta-blue) !important; }
#sub-vitalicio > .row > .col:nth-child(5) > .card,
#sub-entrada-manual > .row > .col:nth-child(5) > .card { border-left-color: var(--krypta-magenta) !important; }

/* nav-tabs (sub-tabs Receita sobre Contratos / Entrada Manual / etc) light + dark */
#entradaSubTabs.nav-tabs {
    background-color: var(--krypta-bg-elevated) !important;
    border-color: var(--krypta-border) !important;
}
#entradaSubTabs .nav-link {
    color: var(--krypta-text-muted) !important;
    background-color: transparent !important;
    border: 1px solid transparent !important;
    border-radius: 6px !important;
    margin-right: 4px;
}
#entradaSubTabs .nav-link:hover {
    color: var(--krypta-text-primary) !important;
    background-color: rgba(0,184,230,0.08) !important;
}
#entradaSubTabs .nav-link.active {
    color: #FFFFFF !important;
    background: var(--krypta-gradient-brand) !important;
    border-color: transparent !important;
}
html[data-theme="dark"] #entradaSubTabs.nav-tabs {
    background-color: #111827 !important;
}

/* ============================================================================
   67. HOTFIX 2026-05-10 #2 — Modal Editar Receita do Contrato (img10) light
   ============================================================================
   No light, o modal-header bg-dark + as 3 caixas info (Cliente/Contrato/
   Corretor) bg-light + os 3 cards de KPI (Valor do Plano/Total a Receber/
   Categoria) ficavam todos pretos sobre branco bagunçando a hierarquia.
   PEDIDO: light limpo (fundo branco, textos pretos, bordas laterais coloridas).
   ============================================================================ */
#modalEditarParcela .modal-header.bg-dark {
    background: var(--krypta-gradient-brand) !important;
    color: #FFFFFF !important;
}
#modalEditarParcela .modal-body .card.bg-light {
    background-color: var(--krypta-bg-card) !important;
    border: 1px solid var(--krypta-border) !important;
    color: var(--krypta-text-primary) !important;
}
#modalEditarParcela .modal-body .bg-white {
    background-color: var(--krypta-bg-page) !important;
    color: var(--krypta-text-primary) !important;
    border-color: var(--krypta-border) !important;
}
#modalEditarParcela .modal-body label.text-muted {
    color: var(--krypta-text-muted) !important;
    font-family: var(--sistema-font-mono);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-size: 0.7rem !important;
}
/* 3 KPI cards (Valor Plano / Total a Receber / Categoria) — bordas coloridas */
#modalEditarParcela .modal-body .card.bg-primary,
#modalEditarParcela .modal-body .card.bg-success,
#modalEditarParcela .modal-body .card.bg-info {
    background-color: var(--krypta-bg-page) !important;
    color: var(--krypta-text-primary) !important;
    border: 1px solid var(--krypta-border) !important;
    border-left-width: 4px !important;
    box-shadow: var(--krypta-shadow-soft);
}
#modalEditarParcela .modal-body .card.bg-primary { border-left-color: var(--krypta-cyan) !important; }
#modalEditarParcela .modal-body .card.bg-success { border-left-color: #16A34A !important; }
#modalEditarParcela .modal-body .card.bg-info    { border-left-color: var(--krypta-violet) !important; }
#modalEditarParcela .modal-body .card.bg-primary small,
#modalEditarParcela .modal-body .card.bg-success small,
#modalEditarParcela .modal-body .card.bg-info small {
    color: var(--krypta-text-muted) !important;
    font-family: var(--sistema-font-mono);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-size: 0.68rem !important;
    font-weight: 700;
}
#modalEditarParcela .modal-body .card.bg-primary h5,
#modalEditarParcela .modal-body .card.bg-success h5,
#modalEditarParcela .modal-body .card.bg-info h5 {
    color: var(--krypta-text-primary) !important;
    font-family: var(--sistema-font-display);
}
/* Tabela de parcelas dentro do modal */
#modalEditarParcela .table thead.table-dark th {
    background-color: var(--krypta-bg-elevated) !important;
    color: var(--krypta-text-secondary) !important;
    border-bottom: 2px solid var(--krypta-cyan) !important;
}
#modalEditarParcela .table tfoot.table-light td {
    background-color: var(--krypta-bg-elevated) !important;
    color: var(--krypta-text-primary) !important;
    border-top: 2px solid var(--krypta-cyan) !important;
}
/* Saldo a receber alert */
#modal_alert_diferenca.alert-success {
    background-color: rgba(22,163,74,0.10) !important;
    border-color: rgba(22,163,74,0.30) !important;
    color: var(--krypta-text-primary) !important;
}
#modal_alert_diferenca.alert-warning {
    background-color: rgba(245,158,11,0.10) !important;
    border-color: rgba(245,158,11,0.30) !important;
    color: var(--krypta-text-primary) !important;
}
#modal_alert_diferenca.alert-danger {
    background-color: rgba(220,38,38,0.10) !important;
    border-color: rgba(220,38,38,0.30) !important;
    color: var(--krypta-text-primary) !important;
}
/* Saldo zero — preto no light, branco no dark, sem sinal de + ou - */
#modal_diferenca.saldo-zero {
    color: #0F172A !important;
    font-weight: 700;
}
html[data-theme="dark"] #modal_diferenca.saldo-zero {
    color: #FFFFFF !important;
}

/* ============================================================================
   68. HOTFIX 2026-05-10 #2 — Sub-tabs "Visão Geral" / "Relatórios Analíticos"
   nav-pills.bg-white quando estão no LIGHT mode também precisam ficar bem
   visíveis. Já tem regra no dark, vou só garantir contraste no light.
   ============================================================================ */
.nav-pills.bg-white .nav-link {
    color: var(--krypta-text-muted) !important;
}
.nav-pills.bg-white .nav-link.active {
    background: var(--krypta-gradient-brand) !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   69. HOTFIX 2026-05-10 #3 — Cards Análise de Receita (kpi-card) dark
   ============================================================================
   Eram usados em _analise_receita.html com fundo gradient hard-coded.
   Os SVGs do template já usam var(--krypta-bg-card) agora, mas mantemos
   fallback caso algum cache do navegador continue mostrando.
   ============================================================================ */
html[data-theme="dark"] ._analise_receita .kpi-card,
html[data-theme="dark"] ._analise_comissao .kpi-card,
html[data-theme="dark"] .kpi-card {
    background: var(--krypta-bg-card) !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .kpi-card .kpi-label,
html[data-theme="dark"] .kpi-card .text-muted,
html[data-theme="dark"] .kpi-card small {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .kpi-card .kpi-valor {
    color: #FFFFFF !important;
}

/* ============================================================================
   70. HOTFIX 2026-05-10 #3 — Comissionamento (financeiro_comissionamento)
   ============================================================================
   .com-card no dark + .card-body.bg-light do filtro + tabela dark.
   ============================================================================ */
html[data-theme="dark"] .com-card {
    background: var(--krypta-bg-card) !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .com-card .lbl,
html[data-theme="dark"] .com-card small,
html[data-theme="dark"] .com-card .text-muted {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .com-card .val {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .com-card .val.text-danger  { color: #F87171 !important; }
html[data-theme="dark"] .com-card .val.text-success { color: #4ADE80 !important; }
html[data-theme="dark"] .com-card .val.text-muted   { color: #94A3B8 !important; }

/* Card de filtros (bg-light no card-body) - dark mode */
html[data-theme="dark"] .card-body.bg-light {
    background-color: #111827 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .card-body.bg-light label,
html[data-theme="dark"] .card-body.bg-light .small {
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .card-body.bg-light input.form-control,
html[data-theme="dark"] .card-body.bg-light select.form-select {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.16) !important;
}

/* ============================================================================
   71. HOTFIX 2026-05-10 #3 — Multi-select: aumentar largura mínima
   ============================================================================
   Pedido: aumentar mselect-header em Corretores/Categorias/Operadoras pra
   exibir mais texto sem cortar (img3/4).
   ============================================================================ */
.mselect-header {
    min-width: 180px;
    padding: 4px 10px !important;
    font-size: 0.85rem;
}
.mselect[data-field="corretor"] .mselect-header,
.mselect[data-field="corretor_com"] .mselect-header {
    min-width: 220px !important;
}
.mselect[data-field="operadora"] .mselect-header,
.mselect[data-field="operadora_com"] .mselect-header {
    min-width: 200px !important;
}
.mselect[data-field="categoria"] .mselect-header,
.mselect[data-field="categoria_com"] .mselect-header {
    min-width: 200px !important;
}
.mselect-dropdown {
    min-width: 280px;
    max-height: 320px;
}
.mselect-search input {
    width: 100%;
    padding: 6px 10px;
    font-size: 0.85rem;
}

/* ============================================================================
   72. HOTFIX 2026-05-10 #3 — Tabela de comissões dark
   ============================================================================ */
html[data-theme="dark"] .table thead.table-dark th {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-bottom: 2px solid var(--krypta-cyan) !important;
}
html[data-theme="dark"] .badge.bg-light.text-dark {
    background-color: rgba(255,255,255,0.10) !important;
    color: #CBD5E1 !important;
}

/* ============================================================================
   73. HOTFIX 2026-05-10 #3 — Análise de Receita: helper texto descritivo
   removido — sem regra (foi removido inline do template)
   ============================================================================ */

/* ============================================================================
   74. HOTFIX 2026-05-10 #4 — Despesas: cards/badges/filtros unificados
   ============================================================================
   Classes novas vindas de financeiro_despesas_tabs.html (rodada 4):
   - .card-despesa-total  — card "DESPESA TOTAL (PERÍODO)" no light com bordas
                            (era bg-danger preenchido)
   - .card-header-ranking-cc / .card-header-ranking-mod — headers dos rankings
   - .badge-centro-custo  — badge da coluna "Centro de Custo" na tabela
   - .card-filtros-despesas / .btn-filtros-despesas / .btn-nova-despesa
   - .dropdown-centro-modelo — dropdown multi-select estilo nativo
   ============================================================================ */
.card-despesa-total {
    background: var(--krypta-bg-card) !important;
    border: 1px solid var(--krypta-border) !important;
    border-left: 4px solid #DC2626 !important;
    color: var(--krypta-text-primary) !important;
    border-radius: 10px !important;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.card-despesa-total:hover {
    transform: translateY(-2px);
    box-shadow: var(--krypta-shadow-medium);
}
.card-despesa-total .lbl-despesa-total {
    color: var(--krypta-text-muted) !important;
    font-family: var(--sistema-font-mono);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 0.72rem;
    font-weight: 700;
}
.card-despesa-total .val-despesa-total {
    color: #DC2626 !important;
    font-family: var(--sistema-font-display);
    font-weight: 700;
}
html[data-theme="dark"] .card-despesa-total .val-despesa-total {
    color: #F87171 !important;
}
.card-despesa-total .badge-fixa {
    background-color: rgba(220,38,38,0.10) !important;
    color: #DC2626 !important;
    border: 1px solid rgba(220,38,38,0.20);
    font-weight: 600;
}
.card-despesa-total .badge-variavel {
    background-color: rgba(245,158,11,0.10) !important;
    color: #B45309 !important;
    border: 1px solid rgba(245,158,11,0.20);
    font-weight: 600;
}
html[data-theme="dark"] .card-despesa-total .badge-fixa {
    background-color: rgba(248,113,113,0.15) !important;
    color: #F87171 !important;
    border-color: rgba(248,113,113,0.30);
}
html[data-theme="dark"] .card-despesa-total .badge-variavel {
    background-color: rgba(251,191,36,0.15) !important;
    color: #FCD34D !important;
    border-color: rgba(251,191,36,0.30);
}

/* Rankings de Centros de Custo e Modelos — header com gradient sutil */
.card-ranking-cc, .card-ranking-mod {
    background: var(--krypta-bg-card) !important;
    border: 1px solid var(--krypta-border) !important;
    border-radius: 10px !important;
}
.card-header-ranking-cc {
    background: linear-gradient(90deg, rgba(0,184,230,0.08) 0%, rgba(0,184,230,0.02) 100%) !important;
    border-bottom: 1px solid var(--krypta-border) !important;
    color: var(--krypta-text-primary) !important;
    border-left: 3px solid var(--krypta-cyan) !important;
}
.card-header-ranking-mod {
    background: linear-gradient(90deg, rgba(147,51,234,0.08) 0%, rgba(147,51,234,0.02) 100%) !important;
    border-bottom: 1px solid var(--krypta-border) !important;
    color: var(--krypta-text-primary) !important;
    border-left: 3px solid var(--krypta-violet) !important;
}
html[data-theme="dark"] .card-header-ranking-cc {
    background: linear-gradient(90deg, rgba(0,209,255,0.10) 0%, rgba(0,209,255,0.02) 100%) !important;
}
html[data-theme="dark"] .card-header-ranking-mod {
    background: linear-gradient(90deg, rgba(168,85,247,0.10) 0%, rgba(168,85,247,0.02) 100%) !important;
}
html[data-theme="dark"] .card-ranking-cc,
html[data-theme="dark"] .card-ranking-mod {
    border-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .card-ranking-cc .list-group-item,
html[data-theme="dark"] .card-ranking-mod .list-group-item {
    background-color: transparent !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.06) !important;
}

/* Badge Centro de Custo na tabela (img1: "letras brancas") */
.badge-centro-custo {
    background: linear-gradient(135deg, var(--krypta-cyan) 0%, var(--krypta-violet) 100%) !important;
    color: #FFFFFF !important;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: 6px;
    letter-spacing: 0.02em;
}

/* Card de filtros unificados */
.card-filtros-despesas {
    border-radius: 10px !important;
}
.card-filtros-despesas .card-body {
    padding: 1rem 1.25rem !important;
}
html[data-theme="dark"] .card-filtros-despesas .card-body.bg-light {
    background-color: #111827 !important;
}
html[data-theme="dark"] .card-filtros-despesas label,
html[data-theme="dark"] .card-filtros-despesas .small {
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .card-filtros-despesas .form-select,
html[data-theme="dark"] .card-filtros-despesas .form-control {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.16) !important;
}

/* Botões dos filtros unificados — altura padrão + Nova Despesa sem quebrar */
.btn-filtros-despesas {
    height: 36px;
    padding: 0 14px;
    font-size: 0.86rem;
    display: inline-flex;
    align-items: center;
    border-radius: 8px;
}
.btn-nova-despesa {
    min-width: 160px;     /* garante "Nova Despesa" em uma linha */
    white-space: nowrap;
}

/* Dropdown nativo de Centro de Custo / Modelo (multi-select inline) */
.dropdown-centro-modelo {
    background-color: #FFFFFF !important;
    color: var(--krypta-text-primary) !important;
    border-color: var(--krypta-border) !important;
    padding: 10px !important;
}
html[data-theme="dark"] .dropdown-centro-modelo {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.16) !important;
}
html[data-theme="dark"] .dropdown-centro-modelo strong.text-muted {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .dropdown-centro-modelo label {
    color: #FFFFFF !important;
}

/* ============================================================================
   75. HOTFIX 2026-05-10 #4 — Análise/Sub-DRE de Despesas (_analise_despesas)
   ============================================================================
   Gap maior entre filtros e cards + dark mode + suporte aos rótulos.
   ============================================================================ */
._analise_despesas .filter-section,
._analise_despesas-page .filter-section {
    margin-bottom: 1.75rem !important;
}
._analise_despesas .kpi-card,
._analise_despesas-page .kpi-card {
    background: var(--krypta-bg-card) !important;
    border-color: var(--krypta-border) !important;
}

/* ============================================================================
   76. HOTFIX 2026-05-10 #4 — DRE Consolidada (dre_consolidada.html)
   ============================================================================
   - cards .dre-card dark mode com tokens
   - .regime-info dark mode (era #fff3cd hardcoded)
   - badges do toggle Competência/Caixa OK
   ============================================================================ */
html[data-theme="dark"] .dre-card {
    background: var(--krypta-bg-card) !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .dre-card .lbl {
    color: #94A3B8 !important;
    font-family: var(--sistema-font-mono);
    letter-spacing: 0.06em;
}
html[data-theme="dark"] .dre-card .val,
html[data-theme="dark"] .dre-card .val.text-primary,
html[data-theme="dark"] .dre-card .val.text-info,
html[data-theme="dark"] .dre-card .val.text-warning {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .dre-card .val.text-primary { color: var(--krypta-cyan) !important; }
html[data-theme="dark"] .dre-card .val.text-info    { color: #4ADE80 !important; }
html[data-theme="dark"] .dre-card .val.text-warning { color: #FBBF24 !important; }
html[data-theme="dark"] .dre-card .val.text-success { color: #4ADE80 !important; }
html[data-theme="dark"] .dre-card .val.text-danger  { color: #F87171 !important; }
html[data-theme="dark"] .dre-card .sub {
    color: #94A3B8 !important;
}

/* Regime info banner */
.regime-info {
    background-color: rgba(245,158,11,0.08) !important;
    border-left: 4px solid #F59E0B !important;
    color: var(--krypta-text-primary) !important;
}
html[data-theme="dark"] .regime-info {
    background-color: rgba(245,158,11,0.12) !important;
    border-left-color: #F59E0B !important;
    color: #FEF3C7 !important;
}
html[data-theme="dark"] .regime-info strong {
    color: #FBBF24 !important;
}

/* DRE table no dark */
html[data-theme="dark"] .dre-table tr.total {
    background-color: rgba(0,184,230,0.10) !important;
}
html[data-theme="dark"] .dre-table tr.total td {
    border-top-color: var(--krypta-cyan) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .dre-table tr.subtotal {
    background-color: rgba(255,255,255,0.04) !important;
}
html[data-theme="dark"] .dre-table tr.subtotal td {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .dre-table td {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .dre-table td.label-2 {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .dre-table td.num.neg {
    color: #F87171 !important;
}

/* Toggle Competência / Caixa */
.dre-toggle .btn { min-width: 140px; }
html[data-theme="dark"] .dre-toggle .btn-outline-primary {
    color: var(--krypta-cyan) !important;
    border-color: var(--krypta-cyan) !important;
}
html[data-theme="dark"] .dre-toggle .btn-outline-primary:hover {
    background-color: rgba(0,209,255,0.10) !important;
    color: #FFFFFF !important;
}
.dre-toggle .btn-primary.active {
    background: var(--krypta-gradient-brand) !important;
    border-color: transparent !important;
    color: #FFFFFF !important;
}

/* ============================================================================
   77. HOTFIX 2026-05-10 #4 — Prevenção de Perdas (dark mode aba inteira)
   ============================================================================ */
html[data-theme="dark"] .prevencao-page,
html[data-theme="dark"] .prevencao-perdas-page {
    color: #FFFFFF;
}
html[data-theme="dark"] .prevencao-page .card,
html[data-theme="dark"] .prevencao-perdas-page .card {
    background-color: var(--krypta-bg-card) !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-page .card-header,
html[data-theme="dark"] .prevencao-perdas-page .card-header {
    background-color: rgba(255,255,255,0.04) !important;
    border-bottom: 1px solid rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-page .card-header.bg-white,
html[data-theme="dark"] .prevencao-perdas-page .card-header.bg-white {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-page .table,
html[data-theme="dark"] .prevencao-perdas-page .table {
    color: #FFFFFF !important;
    background-color: transparent !important;
}
html[data-theme="dark"] .prevencao-page .table thead th,
html[data-theme="dark"] .prevencao-perdas-page .table thead th {
    color: #94A3B8 !important;
    border-bottom-color: rgba(255,255,255,0.10) !important;
    background-color: transparent !important;
}
html[data-theme="dark"] .prevencao-page .table tbody td,
html[data-theme="dark"] .prevencao-perdas-page .table tbody td {
    border-bottom-color: rgba(255,255,255,0.06) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-page .table-light,
html[data-theme="dark"] .prevencao-perdas-page .table-light,
html[data-theme="dark"] .prevencao-page .bg-light,
html[data-theme="dark"] .prevencao-perdas-page .bg-light {
    background-color: rgba(255,255,255,0.04) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-page .form-control,
html[data-theme="dark"] .prevencao-perdas-page .form-control,
html[data-theme="dark"] .prevencao-page .form-select,
html[data-theme="dark"] .prevencao-perdas-page .form-select {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-color: rgba(255,255,255,0.16) !important;
}
html[data-theme="dark"] .prevencao-page label,
html[data-theme="dark"] .prevencao-perdas-page label,
html[data-theme="dark"] .prevencao-page .small,
html[data-theme="dark"] .prevencao-perdas-page .small {
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .prevencao-page .text-muted,
html[data-theme="dark"] .prevencao-perdas-page .text-muted {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .prevencao-page .nav-tabs,
html[data-theme="dark"] .prevencao-perdas-page .nav-tabs {
    border-bottom-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .prevencao-page .nav-tabs .nav-link,
html[data-theme="dark"] .prevencao-perdas-page .nav-tabs .nav-link {
    color: #94A3B8 !important;
    background-color: transparent !important;
    border: 1px solid transparent !important;
}
html[data-theme="dark"] .prevencao-page .nav-tabs .nav-link.active,
html[data-theme="dark"] .prevencao-perdas-page .nav-tabs .nav-link.active {
    color: #FFFFFF !important;
    background: var(--krypta-gradient-brand) !important;
    border-color: transparent !important;
}
html[data-theme="dark"] .prevencao-page .alert-info,
html[data-theme="dark"] .prevencao-perdas-page .alert-info {
    background-color: rgba(0,209,255,0.08) !important;
    border-color: rgba(0,209,255,0.25) !important;
    color: #CBD5E1 !important;
}
html[data-theme="dark"] .prevencao-page .alert-warning,
html[data-theme="dark"] .prevencao-perdas-page .alert-warning {
    background-color: rgba(245,158,11,0.12) !important;
    border-color: rgba(245,158,11,0.30) !important;
    color: #FEF3C7 !important;
}

/* Overrides das classes .prev-* que têm cores hard-coded inline no template */
html[data-theme="dark"] .prevencao-perdas-page .prev-card-resumo {
    background: var(--krypta-bg-card) !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-card-resumo .lbl {
    color: #94A3B8 !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-filter-card {
    background-color: #1A2233 !important;
    border-color: rgba(255,255,255,0.16) !important;
    border-style: dashed !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-bloco {
    background-color: var(--krypta-bg-card) !important;
    border-color: rgba(255,255,255,0.10) !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-bloco-header {
    background-color: rgba(255,255,255,0.04) !important;
    border-bottom-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-bloco-header .hdr-linha {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-bloco-header .hdr-linha .sep {
    color: #64748B !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-bloco-header .hdr-linha .telefone {
    color: #4ADE80 !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-tab-labels {
    background-color: rgba(255,255,255,0.04) !important;
    border-right-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-tab-labels > div {
    color: #CBD5E1 !important;
    border-bottom-color: rgba(255,255,255,0.06) !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-tab-labels > div:first-child {
    background-color: #0F172A !important;
    color: #FFFFFF !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-mes-strip > .prev-mes-row {
    border-bottom-color: rgba(255,255,255,0.06) !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-mes-strip > .prev-mes-row:first-child {
    background-color: #0F172A !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-mes-strip > .prev-mes-row > .prev-mes-cell {
    border-right-color: rgba(255,255,255,0.06) !important;
    color: #FFFFFF;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-mes-strip input.cell {
    color: #FFFFFF !important;
    background-color: transparent !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-mes-strip input.cell:focus {
    background-color: rgba(0,209,255,0.10) !important;
    box-shadow: inset 0 0 0 1px var(--krypta-cyan) !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-mes-strip input.cell[readonly] {
    background-color: rgba(255,255,255,0.04) !important;
    color: #94A3B8 !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-risco-geral-badge.none {
    background-color: rgba(255,255,255,0.10) !important;
    color: #94A3B8 !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-risco-dot.none {
    background-color: rgba(255,255,255,0.20) !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-scroll-outer::-webkit-scrollbar-thumb {
    background-color: rgba(255,255,255,0.20) !important;
}
html[data-theme="dark"] .prevencao-perdas-page .prev-scroll-outer::-webkit-scrollbar-thumb:hover {
    background-color: rgba(255,255,255,0.35) !important;
}

/* ============================================================================
   78. HOTFIX 2026-05-10 #4 — Vale: popover de observação
   Preserva quebras de linha (white-space: pre-wrap) e tema Krypta
   ============================================================================ */
.vale-obs-icon {
    cursor: pointer;
    transition: transform 0.15s ease;
}
.vale-obs-icon:hover {
    transform: scale(1.18);
}
.popover.vale-obs-popover {
    border: 1px solid var(--krypta-border) !important;
    box-shadow: var(--krypta-shadow-medium);
    max-width: 380px !important;
}
.popover.vale-obs-popover .popover-header {
    background-color: var(--krypta-bg-elevated) !important;
    color: var(--krypta-text-primary) !important;
    border-bottom: 1px solid var(--krypta-border) !important;
    font-family: var(--sistema-font-mono);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 0.75rem;
}
.popover.vale-obs-popover .popover-body {
    color: var(--krypta-text-primary) !important;
    white-space: pre-wrap !important;
    word-wrap: break-word;
}
html[data-theme="dark"] .popover.vale-obs-popover {
    background-color: #111827 !important;
    border-color: rgba(255,255,255,0.16) !important;
}
html[data-theme="dark"] .popover.vale-obs-popover .popover-header {
    background-color: #1A2233 !important;
    color: #FFFFFF !important;
    border-bottom-color: rgba(255,255,255,0.10) !important;
}
html[data-theme="dark"] .popover.vale-obs-popover .popover-body {
    color: #FFFFFF !important;
}
html[data-theme="dark"] .popover.vale-obs-popover .popover-arrow::after {
    border-bottom-color: #1A2233 !important;
    border-top-color: #1A2233 !important;
}


/* ============================================================================
   79. HOTFIX 2026-05-10 #5 — MOBILE POLISH (overflow / transbordo / layout)
   ============================================================================
   Objetivo: eliminar TODO transbordo horizontal e melhorar legibilidade em
   telas <= 768px. Não modifica desktop. Cobre:
   - Container e padding global
   - Headers (h1/h2/h3)
   - Tabelas (todas com scroll horizontal)
   - Cards grid (col-md-3/4/6 — empilha melhor)
   - Forms unificados / filtros / botões em row
   - mselect (largura cheia, dropdown ancorado)
   - flatpickr / periodo_range
   - Nav-tabs / nav-pills (scroll horizontal sem quebra)
   - Charts (altura menor)
   - Modais (fullscreen)
   - DRE table / Métricas table (compactas)
   - Dropdowns custom (centro/modelo) — largura total
   - Listas/badges
   - Sub-tabs do financeiro (sub_tabs_financeiro)
   - Botões em groups
   ============================================================================ */

/* ============================================================================
   79.1 — REGRA UNIVERSAL: zero overflow horizontal no <body>
   ============================================================================ */
@media (max-width: 768px) {
    html, body {
        overflow-x: hidden;
        -webkit-text-size-adjust: 100%;
    }
    /* Container do conteúdo: padding lateral reduzido, sem max-width que estoure */
    .main-content {
        padding-left: 12px !important;
        padding-right: 12px !important;
        padding-top: 60px !important;
    }
    .container-fluid {
        padding-left: 8px !important;
        padding-right: 8px !important;
    }
    /* Qualquer .row no mobile: aceita wrap sem overflow */
    .row {
        margin-left: -6px !important;
        margin-right: -6px !important;
    }
    .row > [class*="col-"] {
        padding-left: 6px !important;
        padding-right: 6px !important;
    }
}

/* ============================================================================
   79.2 — TIPOGRAFIA / HEADERS
   ============================================================================ */
@media (max-width: 768px) {
    h1 { font-size: 1.4rem !important; }
    h2 { font-size: 1.25rem !important; }
    h3 { font-size: 1.1rem !important; line-height: 1.3; }
    h4 { font-size: 1rem !important; }
    h5 { font-size: 0.95rem !important; }
    h6 { font-size: 0.85rem !important; }
    /* Headers com ícone + texto longo (ex: "Despesas & Gerenciamento") */
    h1 i, h2 i, h3 i, h4 i { font-size: 0.85em; }
    /* Quebras de linha permitidas nos headers grandes */
    h1, h2, h3 { word-break: break-word; }
}
@media (max-width: 480px) {
    h1 { font-size: 1.25rem !important; }
    h2 { font-size: 1.1rem !important; }
    h3 { font-size: 1rem !important; }
}

/* ============================================================================
   79.3 — TABELAS: scroll horizontal seguro + tipografia compacta
   ============================================================================ */
@media (max-width: 768px) {
    .table-responsive {
        -webkit-overflow-scrolling: touch;
        overflow-x: auto !important;
        max-width: 100%;
        border-radius: 8px;
    }
    /* Toda tabela em mobile fica compacta */
    .table {
        font-size: 12px !important;
    }
    .table th, .table td {
        padding: 6px 8px !important;
        white-space: nowrap;
    }
    /* Headers sempre nowrap, células de texto livre podem quebrar */
    .table thead th { font-size: 11px !important; }
    .table td.text-wrap, .table td.allow-wrap { white-space: normal; }
    /* Indicador visual de "tem mais conteúdo à direita" */
    .table-responsive {
        background-image:
            linear-gradient(to right, var(--krypta-bg-page) 30%, rgba(255,255,255,0)),
            linear-gradient(to right, rgba(0,0,0,0), var(--krypta-bg-page) 70%) 0 100%,
            radial-gradient(farthest-side at 0 50%, rgba(0,0,0,0.15), rgba(0,0,0,0)),
            radial-gradient(farthest-side at 100% 50%, rgba(0,0,0,0.15), rgba(0,0,0,0)) 0 100%;
        background-repeat: no-repeat;
        background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%;
        background-position: 0 0, 100% 0, 0 0, 100% 0;
        background-attachment: local, local, scroll, scroll;
    }
    html[data-theme="dark"] .table-responsive {
        background-image:
            linear-gradient(to right, #0A0F1A 30%, rgba(0,0,0,0)),
            linear-gradient(to right, rgba(0,0,0,0), #0A0F1A 70%) 0 100%,
            radial-gradient(farthest-side at 0 50%, rgba(0,0,0,0.6), rgba(0,0,0,0)),
            radial-gradient(farthest-side at 100% 50%, rgba(0,0,0,0.6), rgba(0,0,0,0)) 0 100%;
    }
}

/* ============================================================================
   79.4 — CARDS GRID: col-md-3 / col-md-4 / col-md-6 → empilha 2-por-linha
   ============================================================================ */
@media (max-width: 768px) {
    /* 3 e 4 colunas → 2 por linha no mobile (melhor que 1) */
    .row > .col-md-3,
    .row > .col-md-4,
    .row > .col-md-6 {
        flex: 0 0 50%;
        max-width: 50%;
    }
    /* col-lg-* (mais largos) → 1 por linha para telas médias-baixas */
    .row > .col-lg-4,
    .row > .col-lg-6,
    .row > .col-lg-8,
    .row > .col-lg-12 {
        flex: 0 0 100%;
        max-width: 100%;
    }
    /* col genérico (.col sem md) — empilha 2 por linha */
    .row.g-3 > .col,
    .row.g-2 > .col {
        flex: 0 0 50%;
        max-width: 50%;
    }
}
@media (max-width: 480px) {
    /* Telas bem pequenas: tudo 1 por linha */
    .row > .col-md-3,
    .row > .col-md-4,
    .row > .col-md-6,
    .row.g-3 > .col,
    .row.g-2 > .col {
        flex: 0 0 100%;
        max-width: 100%;
    }
}

/* Cards (genéricos + Krypta): padding e fonte reduzidos */
@media (max-width: 768px) {
    .card { border-radius: 10px !important; }
    .card-body { padding: 12px !important; }
    .kpi-card, .kpi-executivo, .com-card, .dre-card, .sim-card,
    .card-despesa-total, .prev-card-resumo {
        padding: 12px 14px !important;
    }
    .kpi-card .kpi-valor,
    .kpi-executivo .kpi-valor,
    .com-card .val,
    .dre-card .val,
    .sim-card .val {
        font-size: 1.1rem !important;
        word-break: break-all;
    }
    .kpi-card .kpi-label,
    .com-card .lbl,
    .dre-card .lbl,
    .sim-card .lbl {
        font-size: 0.62rem !important;
    }
    .card-despesa-total .val-despesa-total {
        font-size: 1.3rem !important;
    }
    .card-despesa-total .lbl-despesa-total {
        font-size: 0.65rem !important;
    }
}

/* ============================================================================
   79.5 — FORMS / FILTROS: campos largura total no mobile
   ============================================================================ */
@media (max-width: 768px) {
    /* Tudo dentro de row de filtros: 100% width, empilha vertical */
    form .row.g-2 > [class*="col-"],
    form .row.g-3 > [class*="col-"] {
        flex: 0 0 100%;
        max-width: 100%;
    }
    /* col-auto dos macros (mselect, periodo_range, filter_buttons) também full */
    form .row .col-auto {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        width: 100%;
    }
    /* Labels mais densas */
    form label, form .form-label {
        font-size: 0.78rem !important;
        margin-bottom: 2px !important;
    }
    /* Inputs e selects sempre 100% no mobile + altura confortável de toque */
    .form-control, .form-select,
    .form-control-sm, .form-select-sm {
        width: 100% !important;
        height: 38px !important;
        font-size: 14px !important;
    }
    /* Inputs numéricos / data não fazem zoom no iOS (font 16px+) */
    input[type="number"], input[type="date"], input[type="text"],
    input[type="email"], input[type="password"], input[type="tel"],
    textarea {
        font-size: 16px !important;
    }
    /* Espaçamento maior entre campos no form */
    form .row.g-2 { row-gap: 0.6rem !important; }
    form .row.g-3 { row-gap: 0.75rem !important; }
}

/* ============================================================================
   79.6 — MSELECT (multi-select padrão Krypta) — full width + dropdown seguro
   ============================================================================ */
@media (max-width: 768px) {
    .mselect {
        width: 100% !important;
    }
    .mselect-header {
        min-width: 100% !important;
        width: 100%;
        height: 40px;
        font-size: 14px;
    }
    .mselect-dropdown {
        min-width: 100% !important;
        max-width: 100% !important;
        width: 100%;
        max-height: 260px;
        overflow-y: auto;
        left: 0 !important;
        right: 0 !important;
        font-size: 14px;
    }
    .mselect-search input {
        font-size: 16px !important;     /* sem zoom iOS */
        height: 36px;
    }
    .mselect-option label,
    .mselect-all label {
        font-size: 14px;
        line-height: 1.5;
    }
    /* Versão antiga custom-multi-select-ger / dropdown nativo do despesas */
    .custom-multi-select-ger {
        width: 100% !important;
    }
    .custom-multi-select-ger .select-header {
        min-width: 100% !important;
    }
    .dropdown-centro-modelo {
        max-height: 280px !important;
        font-size: 14px;
    }
    .dropdown-centro-modelo .form-check-label {
        font-size: 14px;
        line-height: 1.5;
    }
}

/* ============================================================================
   79.7 — FLATPICKR / PERIODO_RANGE — largura total + calendário responsivo
   ============================================================================ */
@media (max-width: 768px) {
    .periodo-range {
        width: 100%;
    }
    .periodo-range input[type="text"] {
        width: 100% !important;
        font-size: 16px !important;
        height: 40px !important;
    }
    /* Calendário (popup) */
    .flatpickr-calendar {
        max-width: calc(100vw - 24px) !important;
        font-size: 13px !important;
    }
    .flatpickr-day {
        max-width: 38px !important;
        height: 36px !important;
        line-height: 36px !important;
    }
    /* Ano em input — não estourar */
    .flatpickr-current-month .cur-year { width: 56px !important; }
}

/* ============================================================================
   79.8 — NAV-TABS / NAV-PILLS — scroll horizontal sem quebrar
   ============================================================================ */
@media (max-width: 768px) {
    .nav-tabs, .nav-pills {
        flex-wrap: nowrap !important;
        overflow-x: auto !important;
        overflow-y: hidden !important;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: thin;
        white-space: nowrap;
    }
    .nav-tabs::-webkit-scrollbar,
    .nav-pills::-webkit-scrollbar { height: 4px; }
    .nav-tabs::-webkit-scrollbar-thumb,
    .nav-pills::-webkit-scrollbar-thumb {
        background: rgba(0,209,255,0.30);
        border-radius: 4px;
    }
    .nav-tabs .nav-item,
    .nav-pills .nav-item {
        flex-shrink: 0;
    }
    .nav-tabs .nav-link,
    .nav-pills .nav-link {
        font-size: 13px !important;
        padding: 6px 12px !important;
        white-space: nowrap;
    }
    /* Sub-tabs do financeiro */
    .sub-tabs-financeiro,
    .sub-tabs-fin {
        overflow-x: auto;
        flex-wrap: nowrap;
        white-space: nowrap;
    }
}

/* ============================================================================
   79.9 — CHARTS: altura menor pra não dominar a tela
   ============================================================================ */
@media (max-width: 768px) {
    .chart-wrap,
    .chart-canvas-wrapper {
        height: 240px !important;
    }
    .chart-wrap.tall,
    .chart-canvas-wrapper.tall {
        height: 320px !important;
    }
    .sparkline {
        height: 60px !important;
    }
    /* Legenda Chart.js — ocupa horizontal */
    canvas { max-width: 100% !important; }
}

/* ============================================================================
   79.10 — MODAIS — fullscreen no mobile
   ============================================================================ */
@media (max-width: 768px) {
    .modal-dialog {
        margin: 0 !important;
        max-width: 100% !important;
        min-height: 100vh;
    }
    .modal-dialog.modal-lg,
    .modal-dialog.modal-xl {
        max-width: 100% !important;
    }
    .modal-content {
        border-radius: 0 !important;
        min-height: 100vh;
    }
    .modal-header {
        padding: 12px 14px !important;
        position: sticky;
        top: 0;
        z-index: 10;
    }
    .modal-body {
        padding: 14px !important;
    }
    .modal-footer {
        padding: 10px 14px !important;
        flex-wrap: wrap;
        gap: 6px;
        position: sticky;
        bottom: 0;
        background: var(--krypta-bg-card);
        border-top: 1px solid var(--krypta-border);
        z-index: 10;
    }
    .modal-footer .btn { flex: 1 1 auto; }
    /* Dentro do modal: campos full e padding compacto */
    .modal-body .row > [class*="col-"] {
        flex: 0 0 100%;
        max-width: 100%;
    }
    .modal-body .row.g-3 > [class*="col-md-3"],
    .modal-body .row.g-3 > [class*="col-md-4"] {
        flex: 0 0 50%;
        max-width: 50%;
    }
    /* Tabela de parcelas dentro do modal — coluna % e Valor compactas */
    #modalEditarParcela .table th,
    #modalEditarParcela .table td {
        padding: 6px 4px !important;
        font-size: 12px !important;
    }
    #modalEditarParcela .table input.form-control {
        font-size: 14px !important;
        padding: 4px 6px !important;
        height: 32px !important;
    }
}

/* ============================================================================
   79.11 — DRE TABLE / Métricas table — compactas
   ============================================================================ */
@media (max-width: 768px) {
    .dre-table {
        font-size: 0.78rem !important;
    }
    .dre-table td.label,
    .dre-table td.label-2 {
        padding-left: 0.75rem !important;
        white-space: normal !important;
    }
    .dre-table td.num {
        font-size: 0.82rem !important;
    }
    /* Métricas — Definir Metas (Gerenciador) */
    .tbl-corretor {
        font-size: 12px !important;
    }
    .tbl-corretor thead th {
        font-size: 9.5px !important;
        padding: 4px 6px !important;
    }
    .tbl-corretor tbody td {
        padding: 4px 6px !important;
        font-size: 12px !important;
    }
    /* Painéis de métricas (TOTAL/QUALITATIVO/ADESÃO) — empilha */
    .painel-stats { font-size: 12px; }
    .painel-stats .painel-titulo {
        font-size: 0.72rem !important;
        padding: 6px 10px !important;
    }
}

/* ============================================================================
   79.12 — Grupos de botões / barras de ação
   ============================================================================ */
@media (max-width: 768px) {
    .btn-group { flex-wrap: wrap; gap: 4px; }
    .btn-group > .btn { flex: 1 1 auto; min-width: 100px; }
    /* Botões de exportação no header (Excel/PDF) */
    .export-wrap { width: auto; }
    .export-wrap .btn { font-size: 12px !important; padding: 4px 10px !important; }
    /* Header com h2 + botões de export — empilha vertical */
    .container-fluid > .d-flex.justify-content-between {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 10px !important;
    }
    .container-fluid > .d-flex.justify-content-between > * {
        width: 100%;
    }
    .container-fluid > .d-flex.justify-content-between .d-flex.gap-2 {
        width: 100%;
        flex-wrap: wrap;
    }
}

/* ============================================================================
   79.13 — Equipes (relatorios_analitico): card-equipe e corretor-linha
   ============================================================================ */
@media (max-width: 768px) {
    .card-equipe {
        margin-bottom: 12px;
    }
    /* Grid 5-col da corretor-linha → 2-col rolável */
    .corretor-linha {
        grid-template-columns: 1.4fr 1fr !important;
        gap: 4px !important;
        padding: 8px 10px !important;
        font-size: 0.75rem !important;
    }
    .corretor-linha .pct-bar {
        grid-column: 1 / -1;
        margin-top: 4px;
    }
    .ranking-pos {
        font-size: 1.05rem !important;
        min-width: 28px !important;
    }
    /* Header com badge da equipe — empilha */
    .grupo-equipe-header {
        flex-wrap: wrap !important;
        gap: 6px !important;
        padding: 10px 12px !important;
    }
}

/* ============================================================================
   79.14 — Entrada de Caixa (sub-tabs + cards 7-col)
   ============================================================================ */
@media (max-width: 768px) {
    /* Os 7 cards (TOTAL RECEBIDO ... PAGO A MENOS) usam .col genérico */
    #sub-receita-contratos > .row.g-2 > .col,
    #sub-vitalicio > .row.g-2 > .col,
    #sub-entrada-manual > .row.g-2 > .col {
        flex: 0 0 50%;
        max-width: 50%;
    }
    /* Sub-tabs Entrada (Receita sobre Contratos, Vitalício, etc) */
    #entradaSubTabs {
        flex-wrap: nowrap !important;
        overflow-x: auto !important;
        white-space: nowrap;
    }
    #entradaSubTabs .nav-item { flex-shrink: 0; }
    #entradaSubTabs .nav-link { font-size: 12.5px !important; padding: 6px 10px !important; }
}
@media (max-width: 480px) {
    #sub-receita-contratos > .row.g-2 > .col,
    #sub-vitalicio > .row.g-2 > .col,
    #sub-entrada-manual > .row.g-2 > .col {
        flex: 0 0 100%;
        max-width: 100%;
    }
}

/* ============================================================================
   79.15 — Botões "Filtrar / Limpar / Nova" — full width quando empilhados
   ============================================================================ */
@media (max-width: 768px) {
    .btn-filtros-despesas {
        width: 100%;
        height: 40px !important;
        margin-bottom: 4px;
    }
    .btn-nova-despesa { width: 100%; min-width: 100%; }
    /* O div ms-auto vira full width */
    .ms-auto.d-flex {
        width: 100%;
        margin-left: 0 !important;
        flex-wrap: wrap;
        gap: 8px !important;
    }
}

/* ============================================================================
   79.16 — Prevenção de Perdas — tabela com scroll horizontal
   ============================================================================ */
@media (max-width: 768px) {
    .prevencao-perdas-page .prev-tab-labels {
        flex-basis: 92px !important;
    }
    .prevencao-perdas-page .prev-tab-labels > div {
        font-size: 0.62rem !important;
        padding: 3px 5px !important;
    }
    .prevencao-perdas-page .prev-mes-strip > .prev-mes-row > .prev-mes-cell {
        min-width: 68px !important;
        flex: 1 0 68px !important;
        font-size: 0.7rem !important;
    }
    .prevencao-perdas-page .prev-bloco-header { padding: 8px 10px !important; }
    .prevencao-perdas-page .prev-bloco-header .hdr-linha {
        font-size: 0.72rem !important;
        line-height: 1.4 !important;
        word-break: break-word;
    }
    .prevencao-perdas-page .prev-risco-geral-badge {
        font-size: 0.6rem !important;
        padding: 3px 8px !important;
    }
    .prevencao-perdas-page .prev-card-resumo {
        padding: 8px 10px !important;
    }
    .prevencao-perdas-page .prev-card-resumo .val {
        font-size: 1.05rem !important;
    }
}

/* ============================================================================
   79.17 — Carrossel / Slider (Visão Geral) — cards full
   ============================================================================ */
@media (max-width: 768px) {
    .carousel-inner .row > [class*="col-"] {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        margin-bottom: 8px;
    }
}

/* ============================================================================
   79.18 — Popover de Vale Observação no mobile
   ============================================================================ */
@media (max-width: 768px) {
    .popover.vale-obs-popover {
        max-width: calc(100vw - 32px) !important;
    }
    .popover.vale-obs-popover .popover-body {
        max-width: 100% !important;
        font-size: 13px;
    }
}

/* ============================================================================
   79.19 — Tabela de Comissões / Despesas — esconde colunas opcionais
   ============================================================================ */
@media (max-width: 768px) {
    /* Coluna .opcional-mobile (adicionar nos templates onde quiser esconder) */
    .opcional-mobile,
    .d-mobile-none {
        display: none !important;
    }
    /* Badge dentro de tabela — não estoura */
    .table .badge {
        font-size: 10.5px !important;
        padding: 3px 6px !important;
        max-width: 100%;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        display: inline-block;
        vertical-align: middle;
    }
}

/* ============================================================================
   79.20 — Imagens / SVG não estouram
   ============================================================================ */
@media (max-width: 768px) {
    img, svg, picture {
        max-width: 100% !important;
        height: auto;
    }
    /* Logo Krypta no header de login */
    .login-logo, .krypta-logo {
        max-width: 220px;
    }
}

/* ============================================================================
   79.21 — Toast / Alert ocupa largura segura
   ============================================================================ */
@media (max-width: 768px) {
    .alert {
        font-size: 13px;
        padding: 10px 12px;
        word-break: break-word;
    }
    .toast, .toast-container {
        max-width: calc(100vw - 16px) !important;
        right: 8px !important;
        left: 8px !important;
    }
}

/* ============================================================================
   79.22 — Filtros de Métricas (params-bar) — full width
   ============================================================================ */
@media (max-width: 768px) {
    .params-bar {
        padding: 10px 12px !important;
    }
    .params-bar .col-md-2,
    .params-bar .col-md-3 {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        margin-bottom: 6px;
    }
    .params-bar label {
        font-size: 0.68rem !important;
    }
}

/* ============================================================================
   79.23 — Modal Editor Receita Contrato — tabela de parcelas mobile
   ============================================================================ */
@media (max-width: 768px) {
    /* As 4 caixinhas (Valor Plano / Total a Receber / Categoria) — 1 por linha */
    #modalEditarParcela .row > .col-md-4 {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        margin-bottom: 6px;
    }
    /* O card "Cliente / Contrato / Corretor" — empilha */
    #modalEditarParcela .row > .col-md-6 {
        flex: 0 0 100% !important;
        max-width: 100% !important;
    }
    #modalEditarParcela .row > .col-md-3 {
        flex: 0 0 50% !important;
        max-width: 50% !important;
    }
}

/* ============================================================================
   79.24 — Sub-tabs do financeiro_receita (Receita sobre Contratos / etc)
   ============================================================================ */
@media (max-width: 768px) {
    .sub-tabs-fin .nav-link,
    .nav.nav-tabs.sub-tabs-fin .nav-link {
        font-size: 12px !important;
        padding: 6px 10px !important;
    }
}

/* ============================================================================
   79.25 — Toggle Competência/Caixa (DRE) — empilha
   ============================================================================ */
@media (max-width: 768px) {
    .dre-toggle .btn {
        min-width: 50% !important;
        font-size: 13px !important;
        padding: 6px 12px !important;
    }
}

/* ============================================================================
   79.26 — Korrelações entre rows com badges (ex: Krypta SVG da topbar)
   evita overflow do logo + badges
   ============================================================================ */
@media (max-width: 768px) {
    .topbar, .navbar-brand img { max-width: 140px; }
    .breadcrumb { font-size: 12px; }
    .breadcrumb-item + .breadcrumb-item::before { padding: 0 4px; }
}

/* ============================================================================
   79.27 — Krypta corner toggle theme — não estoura
   ============================================================================ */
@media (max-width: 768px) {
    .krypta-theme-toggle {
        top: 64px !important;
        right: 8px !important;
        width: 34px !important;
        height: 34px !important;
        z-index: 1100;
    }
}

/* ============================================================================
   79.28 — flatpickr range — duplo calendário vira único no mobile
   ============================================================================ */
@media (max-width: 768px) {
    .flatpickr-calendar.rangeMode {
        max-width: calc(100vw - 24px);
    }
    .flatpickr-calendar.rangeMode .flatpickr-months,
    .flatpickr-calendar.rangeMode .flatpickr-rContainer {
        font-size: 12px;
    }
}

/* ============================================================================
   79.29 — Sticky table headers em mobile (opcional, melhora UX em listas longas)
   ============================================================================ */
@media (max-width: 768px) {
    .table-sticky-mobile thead th {
        position: sticky;
        top: 0;
        z-index: 5;
        background: var(--krypta-bg-elevated);
    }
}

/* ============================================================================
   79.30 — Inputs em fieldset (Modelo de Despesa, Categoria, etc) — mobile
   ============================================================================ */
@media (max-width: 768px) {
    fieldset {
        padding: 10px 12px !important;
    }
    legend {
        font-size: 0.85rem !important;
    }
}



/* ============================================================================
   80. HOTFIX 2026-05-10 #6 — Botão de copiar tabela (só ícone)
   ============================================================================
   Novo padrão: pequeno ícone "quadradinho duplo" (fa-copy) ao lado do nome
   da tabela, NUNCA com texto. Light e dark adaptados.
   ============================================================================ */
.btn-copy-icon {
    background: transparent;
    border: 1px solid var(--krypta-border-strong);
    color: var(--krypta-text-muted);
    width: 28px;
    height: 28px;
    padding: 0;
    border-radius: 6px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.78rem;
    line-height: 1;
    transition: all 0.15s ease;
    vertical-align: middle;
}
.btn-copy-icon:hover {
    background: var(--krypta-cyan);
    color: #FFFFFF;
    border-color: var(--krypta-cyan);
    transform: translateY(-1px);
}
.btn-copy-icon.copied {
    background: #16A34A !important;
    color: #FFFFFF !important;
    border-color: #16A34A !important;
}
.btn-copy-icon i {
    font-size: 0.85rem;
}
/* Dark mode */
html[data-theme="dark"] .btn-copy-icon {
    background: rgba(255,255,255,0.04);
    border-color: rgba(255,255,255,0.16);
    color: #CBD5E1;
}
html[data-theme="dark"] .btn-copy-icon:hover {
    background: var(--krypta-cyan);
    color: #FFFFFF;
    border-color: var(--krypta-cyan);
}
/* Reforço para .btn-copy-mini.copied também (compat) */
.btn-copy-mini.copied {
    background: #16A34A !important;
    color: #FFFFFF !important;
    border-color: #16A34A !important;
}

/* ============================================================================
   81. HOTFIX 2026-05-10 #6 — Carrossel: setas brancas no dark
   ============================================================================
   No light Bootstrap inverte (filter: invert(1)) → setas pretas.
   No dark queremos setas BRANCAS. Reverte o filter no dark.
   ============================================================================ */
html[data-theme="dark"] .carousel-control-prev,
html[data-theme="dark"] .carousel-control-next {
    filter: none !important;
}
html[data-theme="dark"] .carousel-control-prev-icon,
html[data-theme="dark"] .carousel-control-next-icon {
    filter: invert(0) !important;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23FFFFFF'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e") !important;
}
html[data-theme="dark"] .carousel-control-next-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23FFFFFF'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") !important;
}
/* Indicadores (bolinhas) — brancas no dark */
html[data-theme="dark"] .carousel-indicators [data-bs-target] {
    background-color: rgba(255,255,255,0.50) !important;
}
html[data-theme="dark"] .carousel-indicators [data-bs-target].active {
    background-color: #FFFFFF !important;
}

/* ============================================================================
   TRIGGERS / NOTIFICAÇÕES (bubble + modal + sidebar) — HOTFIX 2026-05-11
   ============================================================================
   CSS para os componentes criados dinamicamente pelo triggers.js:
     - .trig-bubble        → sininho flutuante no canto inferior direito
     - .trig-modal-overlay → modal de detalhes da mensagem
     - .trig-sidebar-bloco → bloco "Mensagens" dentro do sidebar
   Usa cor dinâmica via --trig-cor (vinda do trigger), com fallback Krypta.
   ============================================================================ */

/* ===== BUBBLE (sininho) ===== */
.trig-bubble {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 1080;
    --trig-cor: var(--krypta-cyan);
}
.trig-bubble-btn {
    background: var(--trig-cor);
    color: #fff;
    border: none;
    border-radius: 50%;
    width: 58px;
    height: 58px;
    box-shadow: 0 8px 24px rgba(15,23,42,0.25);
    cursor: pointer;
    position: relative;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
}
.trig-bubble-btn:hover {
    transform: translateY(-2px) scale(1.05);
    box-shadow: 0 12px 32px rgba(15,23,42,0.35);
}
.trig-bubble.has-unseen .trig-bubble-btn {
    animation: trigPulse 1.6s ease-in-out infinite;
}
@keyframes trigPulse {
    0%, 100% { box-shadow: 0 8px 24px rgba(15,23,42,0.25), 0 0 0 0 rgba(0,184,230,0.5); }
    50%      { box-shadow: 0 8px 24px rgba(15,23,42,0.25), 0 0 0 12px rgba(0,184,230,0); }
}
.trig-bubble-count {
    position: absolute;
    top: -4px;
    right: -4px;
    background: var(--krypta-danger);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    border-radius: 11px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 2px solid var(--krypta-bg-page);
}

/* ===== MODAL OVERLAY ===== */
.trig-modal-overlay {
    position: fixed;
    inset: 0;
    background: var(--krypta-bg-overlay);
    backdrop-filter: blur(4px);
    z-index: 1090;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    animation: trigFadeIn 0.18s ease-out;
}
@keyframes trigFadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}
.trig-modal {
    background: var(--krypta-bg-card);
    color: var(--krypta-text-primary);
    border: 1px solid var(--krypta-border);
    border-radius: 14px;
    box-shadow: var(--krypta-shadow-medium);
    width: 100%;
    max-width: 560px;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    --trig-cor: var(--krypta-cyan);
    border-top: 4px solid var(--trig-cor);
}
.trig-modal-header {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 16px 18px 12px;
    border-bottom: 1px solid var(--krypta-border);
}
.trig-modal-icon {
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: var(--trig-cor);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.05rem;
    flex-shrink: 0;
}
.trig-modal-title {
    flex: 1;
    min-width: 0;
}
.trig-modal-titulo {
    font-weight: 700;
    font-size: 1.02rem;
    color: var(--krypta-text-primary);
    margin-bottom: 2px;
}
.trig-modal-resumo {
    font-size: 0.85rem;
    color: var(--krypta-text-muted);
}
.trig-modal-btn-close {
    background: transparent;
    border: none;
    color: var(--krypta-text-muted);
    width: 30px;
    height: 30px;
    border-radius: 8px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s, color 0.15s;
}
.trig-modal-btn-close:hover {
    background: var(--krypta-bg-elevated);
    color: var(--krypta-text-primary);
}
.trig-modal-body {
    flex: 1;
    overflow-y: auto;
    padding: 14px 18px;
}
.trig-modal-footer {
    padding: 12px 18px;
    border-top: 1px solid var(--krypta-border);
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.trig-cta-btn {
    background: var(--trig-cor);
    color: #fff !important;
    border: none;
}
.trig-cta-btn:hover {
    filter: brightness(1.1);
    color: #fff !important;
}

/* ===== Grupos e itens dentro do modal ===== */
.trig-grupo {
    margin-bottom: 14px;
}
.trig-grupo:last-child { margin-bottom: 0; }
.trig-grupo-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 6px;
    margin-bottom: 6px;
    border-bottom: 1px dashed var(--krypta-border);
    font-size: 0.88rem;
    color: var(--krypta-text-primary);
}
.trig-grupo-total {
    font-family: var(--sistema-font-mono);
    color: var(--krypta-cyan);
    font-weight: 700;
}
.trig-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 8px;
    transition: background 0.15s;
}
.trig-item:hover {
    background: var(--krypta-bg-elevated);
}
.trig-item-main { flex: 1; min-width: 0; }
.trig-item-nome {
    font-size: 0.9rem;
    color: var(--krypta-text-primary);
}
.trig-item-sub {
    font-size: 0.75rem;
    color: var(--krypta-text-muted);
    margin-top: 1px;
}
.trig-item-valor {
    font-family: var(--sistema-font-mono);
    font-weight: 600;
    color: var(--krypta-text-primary);
    white-space: nowrap;
}

/* ===== SIDEBAR — bloco "Mensagens" ===== */
.trig-sidebar-bloco {
    margin: 12px 8px;
    padding: 8px 6px;
    border-top: 1px solid var(--krypta-border-strong);
    border-bottom: 1px solid var(--krypta-border-strong);
}
.trig-sidebar-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    cursor: pointer;
    border-radius: 8px;
    color: var(--krypta-sidebar-text, #CBD5E1);
    font-weight: 600;
    font-size: 0.85rem;
    transition: background 0.15s;
}
.trig-sidebar-header:hover {
    background: rgba(255,255,255,0.05);
}
.trig-sidebar-titulo { flex: 1; }
.trig-sidebar-count {
    background: var(--krypta-danger);
    color: #fff;
    font-size: 0.7rem;
    font-weight: 700;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.trig-sidebar-lista {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.25s ease;
}
.trig-sidebar-bloco.expanded .trig-sidebar-lista {
    max-height: 400px;
    overflow-y: auto;
    margin-top: 6px;
}
.trig-sidebar-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 8px;
    cursor: pointer;
    color: var(--krypta-sidebar-text, #CBD5E1);
    transition: background 0.15s;
    --trig-cor: var(--krypta-cyan);
    border-left: 3px solid var(--trig-cor);
    margin-bottom: 4px;
}
.trig-sidebar-item:hover {
    background: rgba(255,255,255,0.07);
}
.trig-sidebar-item.is-unseen {
    background: rgba(0,184,230,0.10);
    font-weight: 600;
}
.trig-sidebar-icon {
    color: var(--trig-cor);
    font-size: 0.95rem;
    flex-shrink: 0;
}
.trig-sidebar-item-body {
    flex: 1;
    min-width: 0;
    overflow: hidden;
}
.trig-sidebar-item-titulo {
    font-size: 0.82rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: var(--krypta-sidebar-text-active, #FFFFFF);
}
.trig-sidebar-item-resumo {
    font-size: 0.7rem;
    color: var(--krypta-sidebar-text, #CBD5E1);
    opacity: 0.8;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.trig-sidebar-item-close {
    background: transparent;
    border: none;
    color: var(--krypta-sidebar-text, #CBD5E1);
    opacity: 0.6;
    width: 24px;
    height: 24px;
    border-radius: 6px;
    cursor: pointer;
    flex-shrink: 0;
    transition: opacity 0.15s, background 0.15s;
}
.trig-sidebar-item-close:hover {
    opacity: 1;
    background: rgba(255,255,255,0.1);
}

/* Responsivo: bubble menor em mobile */
@media (max-width: 576px) {
    .trig-bubble { bottom: 16px; right: 16px; }
    .trig-bubble-btn { width: 52px; height: 52px; font-size: 1.2rem; }
    .trig-modal { max-height: 92vh; }
}

/* ===== TRIGGER MODAL — BLOCO RESUMO IA ===== */
.trig-ia-resumo {
    background: linear-gradient(135deg,
                rgba(0,184,230,0.10) 0%,
                rgba(147,51,234,0.10) 100%);
    border-left: 3px solid var(--krypta-cyan);
    border-radius: 8px;
    padding: 10px 12px 12px;
    margin-bottom: 14px;
}
.trig-ia-resumo-header {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--krypta-cyan);
    margin-bottom: 6px;
    font-family: var(--sistema-font-mono);
}
.trig-ia-resumo-corpo {
    font-size: 0.88rem;
    line-height: 1.5;
    color: var(--krypta-text-primary);
}

/* ============================================================================
   95. MULTI-SELECT PILL CARDS — modal de Admin (gerenciador)
   ============================================================================
   2026-05-14 — Substitui o select single + lista de checkboxes feios
   pela UI multi-select estilo "cartões clicáveis". Usado em:
     - Central Executiva (8 painéis)
     - Sub-abas Receita / Comissionamento / Despesas
   Cada .pill-card envolve um <input type="checkbox"> visualmente oculto
   (sem display:none — pra acessibilidade) e um .pill-body desenhável.
   ============================================================================ */
.pill-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 8px;
}
.pill-grid.pill-grid-sm {
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 6px;
}
.pill-card {
    position: relative;
    margin: 0;
    cursor: pointer;
    user-select: none;
}
.pill-card .pill-input {
    /* visualmente escondido mas focável pra acessibilidade */
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    pointer-events: none;
}
.pill-body {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border: 1.5px solid var(--krypta-border, rgba(15,23,42,0.10));
    background: var(--krypta-bg-card, #FFFFFF);
    border-radius: 10px;
    transition: all 0.15s ease;
    min-height: 54px;
}
.pill-card-sm .pill-body {
    padding: 8px 10px;
    min-height: 44px;
}
.pill-card:hover .pill-body {
    border-color: var(--krypta-cyan, #00B8E6);
    background: rgba(0, 184, 230, 0.04);
    transform: translateY(-1px);
}
.pill-icon {
    width: 32px;
    height: 32px;
    min-width: 32px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--krypta-bg-elevated, #F1F5F9);
    color: var(--krypta-text-muted, #475569);
    font-size: 0.85rem;
    transition: all 0.15s ease;
}
.pill-card-sm .pill-icon {
    width: 26px;
    height: 26px;
    min-width: 26px;
    font-size: 0.75rem;
}
.pill-text {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.pill-label {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--krypta-text-primary, #0F172A);
    line-height: 1.2;
}
.pill-card-sm .pill-label { font-size: 0.8rem; }
.pill-desc {
    font-size: 0.7rem;
    color: var(--krypta-text-muted, #64748B);
    line-height: 1.25;
}
.pill-check {
    width: 22px;
    height: 22px;
    min-width: 22px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1.5px solid var(--krypta-border, rgba(15,23,42,0.18));
    background: transparent;
    color: transparent;
    font-size: 0.65rem;
    transition: all 0.15s ease;
}

/* Estado ATIVO (checkbox marcado) */
.pill-card .pill-input:checked ~ .pill-body {
    border-color: var(--krypta-cyan, #00B8E6);
    background: linear-gradient(135deg,
                rgba(0, 184, 230, 0.10) 0%,
                rgba(147, 51, 234, 0.10) 100%);
    box-shadow: 0 1px 3px rgba(0, 184, 230, 0.18);
}
.pill-card .pill-input:checked ~ .pill-body .pill-icon {
    background: var(--krypta-gradient-brand, linear-gradient(135deg, #00B8E6 0%, #9333EA 100%));
    color: #FFFFFF;
}
.pill-card .pill-input:checked ~ .pill-body .pill-check {
    background: var(--krypta-gradient-brand, linear-gradient(135deg, #00B8E6 0%, #9333EA 100%));
    border-color: transparent;
    color: #FFFFFF;
}
.pill-card .pill-input:checked ~ .pill-body .pill-label {
    color: var(--krypta-text-primary);
}

/* Foco visível pra acessibilidade */
.pill-card .pill-input:focus-visible ~ .pill-body {
    outline: 2px solid var(--krypta-cyan, #00B8E6);
    outline-offset: 2px;
}

/* Título de seção de sub-abas */
.subaba-section-title {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: var(--krypta-cyan, #00B8E6);
    margin-bottom: 4px;
    font-family: var(--sistema-font-mono, 'JetBrains Mono', monospace);
}
.subaba-section-title i { font-size: 0.85rem; }
.subaba-section-title small {
    margin-left: auto;
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
    color: var(--krypta-text-muted, #64748B);
    font-family: var(--sistema-font-body, 'Inter', sans-serif);
    font-size: 0.7rem;
}

/* Mobile: ainda 1 coluna em telas estreitas */
@media (max-width: 480px) {
    .pill-grid, .pill-grid.pill-grid-sm {
        grid-template-columns: 1fr;
    }
    .subaba-section-title small {
        display: none;  /* economiza espaço */
    }
}

/* DARK MODE — pill cards */
html[data-theme="dark"] .pill-body {
    background: var(--krypta-bg-card);
    border-color: var(--krypta-border);
}
html[data-theme="dark"] .pill-card:hover .pill-body {
    background: rgba(0, 184, 230, 0.08);
}
html[data-theme="dark"] .pill-icon {
    background: var(--krypta-bg-elevated);
}
html[data-theme="dark"] .pill-card .pill-input:checked ~ .pill-body {
    background: linear-gradient(135deg,
                rgba(0, 184, 230, 0.18) 0%,
                rgba(147, 51, 234, 0.18) 100%);
}

/* ============================================================================
   96. GERENCIADOR — BOTÃO "EDITAR ACESSO" — fix mobile light mode
   ============================================================================
   2026-05-14 — O botão .edit-admin é btn-outline-primary. No desktop ele tem
   fundo transparente (correto), mas no mobile a tabela vira "cards" e o botão
   ganha mais protagonismo. Pedido: no light mode mobile, o botão deve ter
   fundo BRANCO (não transparente sobre o card claro). No dark, mantém o estado
   transparente que já está bom.
   ============================================================================ */
@media (max-width: 768px) {
    html[data-theme="light"] #tab-admins .edit-admin,
    html:not([data-theme="dark"]) #tab-admins .edit-admin {
        background-color: #FFFFFF !important;
        color: var(--krypta-cyan, #00B8E6);
        border-color: var(--krypta-cyan, #00B8E6);
        box-shadow: 0 1px 2px rgba(0,0,0,0.06);
    }
    html[data-theme="light"] #tab-admins .edit-admin:hover,
    html:not([data-theme="dark"]) #tab-admins .edit-admin:hover {
        background-color: #FFFFFF !important;
        filter: brightness(0.97);
    }
    /* Dark mode: mantém o comportamento padrão (transparente) — não tocar */
}

/* ============================================================================
   97. MODAL DE ADMIN — PADRÃO ENTERPRISE (2026-05-17)
   ============================================================================
   Refatoração do modal "Editar Acesso" pra um padrão único e composto:
     - Header com gradiente Krypta (não mais bg-dark hardcoded)
     - Cada permissão = LINHA com label+descrição à esquerda + controle à direita
     - Níveis hierárquicos = SEGMENTED CONTROL (botões agrupados)
     - Multi-select (filiais, painéis, sub-abas) = CHIPS clicáveis
     - Booleans simples = TOGGLE SWITCH
     - Accordion-header mostra CHIP de status atual (sem precisar abrir)
   Visual unificado em todas as áreas, sem misturar select/checkbox/pill-card.
   ============================================================================ */

/* ----- Header gradiente Krypta (substitui o bg-dark/text-white) ----- */
.adm-modal-header {
    background: var(--krypta-gradient-brand, linear-gradient(135deg, #00B8E6 0%, #9333EA 100%));
    color: #FFFFFF;
    border-bottom: none;
    padding: 1rem 1.25rem;
    border-top-left-radius: 14px;
    border-top-right-radius: 14px;
}
.adm-modal-header .modal-title,
.adm-modal-header h5 { color: #FFFFFF; font-weight: 700; }
.adm-modal-header .btn-close {
    filter: brightness(0) invert(1);
    opacity: 0.9;
}
.adm-modal-header .btn-close:hover { opacity: 1; }

/* ----- Acordeão (overhaul visual) ----- */
.adm-accordion .accordion-item {
    background: var(--krypta-bg-card);
    border: 1px solid var(--krypta-border);
    border-radius: 10px !important;
    margin-bottom: 8px;
    overflow: hidden;
}
.adm-accordion .accordion-button {
    background: var(--krypta-bg-card);
    color: var(--krypta-text-primary);
    font-weight: 600;
    font-size: 0.92rem;
    padding: 0.7rem 1rem;
    box-shadow: none;
}
.adm-accordion .accordion-button:not(.collapsed) {
    background: linear-gradient(90deg,
                rgba(0,184,230,0.08) 0%,
                rgba(147,51,234,0.05) 100%);
    color: var(--krypta-text-primary);
    box-shadow: inset 0 -1px 0 var(--krypta-border);
}
.adm-accordion .accordion-button:focus { box-shadow: none; border-color: var(--krypta-border); }
.adm-accordion .accordion-button::after {
    background-image: none;
    content: "\f078";  /* fa-chevron-down */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 0.8rem;
    transform: none !important;
    transition: transform 0.2s ease;
    color: var(--krypta-text-muted);
    width: auto;
    height: auto;
    background: transparent;
}
.adm-accordion .accordion-button:not(.collapsed)::after { transform: rotate(180deg) !important; }
.adm-accordion .accordion-body {
    background: var(--krypta-bg-card);
    padding: 1rem 1.1rem 1.1rem 1.1rem;
}

/* Chip de status que aparece no header do acordeão (resumo do estado) */
.adm-acc-summary {
    margin-left: auto;
    margin-right: 0.6rem;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    background: var(--krypta-bg-elevated);
    color: var(--krypta-text-muted);
    border: 1px solid var(--krypta-border);
    font-family: var(--sistema-font-mono, 'JetBrains Mono', monospace);
}
.adm-acc-summary.adm-summary-on {
    background: linear-gradient(135deg, rgba(0,184,230,0.12), rgba(147,51,234,0.12));
    color: var(--krypta-cyan);
    border-color: rgba(0,184,230,0.30);
}
.adm-acc-summary.adm-summary-off {
    color: var(--krypta-text-faded, #94A3B8);
}
.adm-acc-summary i { font-size: 0.65rem; }

/* ----- Linha de permissão (label/descrição + controle à direita) ----- */
.adm-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
    gap: 14px;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px dashed var(--krypta-border);
}
.adm-row:last-child { border-bottom: none; }
.adm-row-label {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.adm-row-title {
    font-size: 0.86rem;
    font-weight: 600;
    color: var(--krypta-text-primary);
    line-height: 1.25;
    display: flex;
    align-items: center;
    gap: 6px;
}
.adm-row-title i { color: var(--krypta-cyan); font-size: 0.85rem; }
.adm-row-desc {
    font-size: 0.72rem;
    color: var(--krypta-text-muted);
    line-height: 1.35;
}
.adm-row-control { min-width: 0; }

/* Mobile: empilha label em cima, controle embaixo */
@media (max-width: 640px) {
    .adm-row {
        grid-template-columns: 1fr;
        gap: 6px;
    }
}

/* ----- SEGMENTED CONTROL (níveis hierárquicos) ----- */
.adm-seg {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 2px;
    padding: 3px;
    background: var(--krypta-bg-elevated);
    border: 1px solid var(--krypta-border);
    border-radius: 10px;
    width: 100%;
}
.adm-seg-opt {
    flex: 1 1 0;
    min-width: 0;
    text-align: center;
    padding: 6px 10px;
    border-radius: 7px;
    border: 0;
    background: transparent;
    color: var(--krypta-text-secondary);
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s ease;
    line-height: 1.15;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.adm-seg-opt:hover {
    background: var(--krypta-bg-card);
    color: var(--krypta-text-primary);
}
.adm-seg-opt.is-active {
    background: var(--krypta-gradient-brand);
    color: #FFFFFF;
    box-shadow: 0 2px 6px rgba(0,184,230,0.30);
}
.adm-seg-opt.is-active:hover { color: #FFFFFF; }

/* "Compact" variant — usa quando tem 5+ opções e o espaço aperta */
.adm-seg.adm-seg-compact .adm-seg-opt {
    padding: 5px 7px;
    font-size: 0.72rem;
}

/* ----- CHIPS multi-select (filiais, painéis, sub-abas) ----- */
.adm-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.adm-chip {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px 6px 10px;
    border-radius: 999px;
    background: var(--krypta-bg-elevated);
    border: 1.5px solid var(--krypta-border);
    color: var(--krypta-text-secondary);
    font-size: 0.78rem;
    font-weight: 500;
    cursor: pointer;
    user-select: none;
    transition: all 0.15s ease;
    margin: 0;
}
.adm-chip .adm-chip-input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    pointer-events: none;
}
.adm-chip:hover {
    border-color: var(--krypta-cyan);
    color: var(--krypta-text-primary);
    background: rgba(0,184,230,0.05);
}
.adm-chip i.adm-chip-icon {
    color: var(--krypta-text-muted);
    font-size: 0.75rem;
    transition: color 0.15s ease;
}
.adm-chip .adm-chip-check {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1.5px solid var(--krypta-border);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    color: transparent;
    font-size: 0.55rem;
    transition: all 0.15s ease;
}
/* Estado ATIVO do chip */
.adm-chip.is-checked,
.adm-chip:has(.adm-chip-input:checked) {
    background: linear-gradient(135deg,
                rgba(0,184,230,0.12) 0%,
                rgba(147,51,234,0.12) 100%);
    border-color: var(--krypta-cyan);
    color: var(--krypta-text-primary);
    box-shadow: 0 1px 3px rgba(0,184,230,0.15);
}
.adm-chip.is-checked i.adm-chip-icon,
.adm-chip:has(.adm-chip-input:checked) i.adm-chip-icon {
    color: var(--krypta-cyan);
}
.adm-chip.is-checked .adm-chip-check,
.adm-chip:has(.adm-chip-input:checked) .adm-chip-check {
    background: var(--krypta-gradient-brand);
    border-color: transparent;
    color: #FFFFFF;
}

/* ----- TOGGLE SWITCH (booleans simples) ----- */
.adm-switch {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    margin: 0;
    padding: 0;
}
.adm-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.adm-switch-track {
    width: 40px;
    height: 22px;
    border-radius: 999px;
    background: var(--krypta-border, #CBD5E1);
    position: relative;
    transition: all 0.2s ease;
    flex-shrink: 0;
}
.adm-switch-track::after {
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #FFFFFF;
    box-shadow: 0 1px 3px rgba(0,0,0,0.18);
    transition: all 0.2s ease;
}
.adm-switch input:checked + .adm-switch-track {
    background: var(--krypta-gradient-brand);
}
.adm-switch input:checked + .adm-switch-track::after {
    left: 20px;
}
.adm-switch-label {
    font-size: 0.82rem;
    color: var(--krypta-text-primary);
    font-weight: 500;
}
.adm-switch input:focus-visible + .adm-switch-track {
    outline: 2px solid var(--krypta-cyan);
    outline-offset: 2px;
}

/* ----- Toolbar pequena (Marcar todos / Limpar) acima de chips ----- */
.adm-chips-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 6px;
    font-size: 0.72rem;
}
.adm-chips-toolbar-info { color: var(--krypta-text-muted); }
.adm-chips-toolbar-actions { display: flex; gap: 6px; }
.adm-chips-toolbar-actions button {
    padding: 3px 9px;
    border-radius: 7px;
    border: 1px solid var(--krypta-border);
    background: var(--krypta-bg-card);
    color: var(--krypta-text-secondary);
    font-size: 0.7rem;
    cursor: pointer;
    transition: all 0.15s ease;
}
.adm-chips-toolbar-actions button:hover {
    border-color: var(--krypta-cyan);
    color: var(--krypta-cyan);
}

/* Help/info caixinha (mantém compat com .alert-secondary/.alert-warning) */
.adm-help {
    margin-top: 8px;
    padding: 8px 10px;
    border-radius: 8px;
    background: var(--krypta-bg-elevated);
    border: 1px solid var(--krypta-border);
    color: var(--krypta-text-secondary);
    font-size: 0.75rem;
    line-height: 1.4;
}
.adm-help i { color: var(--krypta-cyan); margin-right: 4px; }
.adm-help strong { color: var(--krypta-text-primary); }
.adm-help.adm-help-warn {
    background: rgba(217,119,6,0.07);
    border-color: rgba(217,119,6,0.25);
}
.adm-help.adm-help-warn i { color: var(--krypta-warning); }

/* Sub-seção dentro do acordeão (ex: "Sub-abas — RECEITA") */
.adm-subsection {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px dashed var(--krypta-border);
}
.adm-subsection-title {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--krypta-cyan);
    margin-bottom: 8px;
    font-family: var(--sistema-font-mono, 'JetBrains Mono', monospace);
}
.adm-subsection-title small {
    margin-left: auto;
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
    color: var(--krypta-text-muted);
    font-family: var(--sistema-font-body, 'Inter', sans-serif);
    font-size: 0.7rem;
}

/* Identificação (nome / CPF / senha) - bloco superior */
.adm-ident-grid {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 10px;
    margin-bottom: 14px;
}
.adm-ident-grid label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: var(--krypta-text-muted);
    margin-bottom: 3px;
    display: block;
}
.adm-ident-grid input {
    width: 100%;
    padding: 8px 10px;
    border-radius: 8px;
    border: 1.5px solid var(--krypta-border);
    background: var(--krypta-bg-card);
    color: var(--krypta-text-primary);
    font-size: 0.88rem;
    transition: border-color 0.15s ease;
}
.adm-ident-grid input:focus {
    outline: none;
    border-color: var(--krypta-cyan);
    box-shadow: 0 0 0 3px rgba(0,184,230,0.10);
}
@media (max-width: 640px) {
    .adm-ident-grid { grid-template-columns: 1fr; }
}

/* Footer do modal — gradient subtil pra fechar */
.adm-modal-footer {
    background: var(--krypta-bg-elevated);
    border-top: 1px solid var(--krypta-border);
    padding: 0.85rem 1.25rem;
    border-bottom-left-radius: 14px;
    border-bottom-right-radius: 14px;
}
.adm-modal-footer .btn-primary {
    background: var(--krypta-gradient-brand);
    border: none;
    font-weight: 600;
    padding: 8px 18px;
}
.adm-modal-footer .btn-primary:hover {
    filter: brightness(1.08);
    box-shadow: 0 4px 12px rgba(0,184,230,0.30);
}

/* DARK MODE — sobrescritas */
html[data-theme="dark"] .adm-modal-header { /* gradiente já tem contraste */ }
html[data-theme="dark"] .adm-seg-opt { color: #94A3B8; }
html[data-theme="dark"] .adm-seg-opt:hover { color: #FFFFFF; }
html[data-theme="dark"] .adm-chip { background: rgba(255,255,255,0.05); color: #CBD5E1; }
html[data-theme="dark"] .adm-chip:hover { background: rgba(0,184,230,0.10); color: #FFFFFF; }
html[data-theme="dark"] .adm-switch-track { background: rgba(255,255,255,0.18); }
html[data-theme="dark"] .adm-help { background: rgba(255,255,255,0.03); }
html[data-theme="dark"] .adm-ident-grid input { background: rgba(255,255,255,0.04); color: #FFFFFF; }
html[data-theme="dark"] .adm-acc-summary { background: rgba(255,255,255,0.05); }
