/**
 * Quantilica Design System (QDS) — Design Tokens & Universal Theme Overrides
 * Alinhado com as especificações oficiais em branding/ e WCAG 2.1 AA/AAA
 */

:root {
    /* Brand Foundation Colors */
    --q-brand-primary: #AF5C33;        /* Marrom Tabby */
    --q-brand-primary-light: #DF9D6A;  /* Bege Areia */
    --q-brand-cyan: #00D8D6;           /* Cyan Iluminado */
    --q-brand-ocean: #0C4A6E;          /* Deep Ocean */
    --q-brand-night: #0B101E;          /* Fundo Noturno */

    /* Typography */
    --q-font-ui: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    --q-font-title: 'Inter Tight', 'Inter', -apple-system, sans-serif;
    --q-font-data: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;

    /* Light Mode Semantic Tokens */
    --q-bg-body: #F8FAFC;
    --q-bg-surface: #FFFFFF;
    --q-bg-surface-alt: #F1F5F9;
    --q-bg-surface-hover: #E2E8F0;
    
    --q-border-subtle: #E2E8F0;
    --q-border-medium: #CBD5E1;
    --q-border-strong: #94A3B8;

    --q-text-main: #0F172A;
    --q-text-muted: #64748B;
    --q-text-subtle: #94A3B8;
    --q-text-inverse: #FFFFFF;

    /* Semantic Status Colors */
    --q-status-success: #16A34A;
    --q-status-success-bg: #DCFCE7;
    --q-status-danger: #DC2626;
    --q-status-danger-bg: #FEE2E2;
    --q-status-warning: #D97706;
    --q-status-warning-bg: #FEF3C7;
    --q-status-info: #0284C7;
    --q-status-info-bg: #E0F2FE;

    /* Elevation & Shadows */
    --q-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --q-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);
    --q-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -2px rgba(0, 0, 0, 0.03);
    --q-shadow-hover: 0 8px 24px -4px rgba(0, 0, 0, 0.12);

    /* Radii */
    --q-radius-sm: 0.375rem;
    --q-radius-md: 0.5rem;
    --q-radius-lg: 0.75rem;
    --q-radius-full: 9999px;

    /* Default Sub-app Accent (Quantilica Root) */
    --q-accent: var(--q-brand-primary);
    --q-accent-subtle: #FDF2E9;
    --q-accent-contrast: #FFFFFF;
}

/* Dark Mode Tokens */
[data-bs-theme="dark"],
body.dark-mode {
    --q-bg-body: #070B14;
    --q-bg-surface: #0B101E;
    --q-bg-surface-alt: #131B2E;
    --q-bg-surface-hover: #1E293B;

    --q-border-subtle: #1E293B;
    --q-border-medium: #334155;
    --q-border-strong: #475569;

    --q-text-main: #F8FAFC;
    --q-text-muted: #94A3B8;
    --q-text-subtle: #64748B;
    --q-text-inverse: #0B101E;

    --q-status-success-bg: rgba(22, 163, 74, 0.2);
    --q-status-danger-bg: rgba(220, 38, 38, 0.2);
    --q-status-warning-bg: rgba(217, 119, 6, 0.2);
    --q-status-info-bg: rgba(2, 132, 199, 0.2);

    --q-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
    --q-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4);
    --q-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5);
    --q-shadow-hover: 0 8px 24px -4px rgba(0, 0, 0, 0.6);

    --q-accent-subtle: rgba(175, 92, 51, 0.2);
}

/* ==========================================================================
   Universal Typography, Inputs & Tables in Light Mode
   ========================================================================== */
body {
    font-family: var(--q-font-ui);
    color: var(--q-text-main);
    background-color: var(--q-bg-body);
}

.form-control::placeholder,
.form-select::placeholder {
    color: var(--q-text-muted);
    opacity: 0.85;
}

thead th,
.table thead th {
    background-color: var(--q-bg-surface-alt);
    color: #475569;
    font-weight: 600;
    font-size: 0.775rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 2px solid var(--q-border-medium);
}

code:not(pre code) {
    background-color: var(--q-bg-surface-alt);
    color: #0284C7;
    border: 1px solid var(--q-border-subtle);
    padding: 0.15rem 0.4rem;
    border-radius: var(--q-radius-sm);
    font-family: var(--q-font-data);
    font-size: 0.85em;
    font-weight: 500;
}

pre {
    background-color: #070B14;
    color: #F8FAFC;
    border: 1px solid var(--q-border-subtle);
    border-radius: var(--q-radius-md);
    padding: 1rem 1.25rem;
    font-family: var(--q-font-data);
    font-size: 0.875rem;
}

pre code {
    background-color: transparent !important;
    color: inherit !important;
    border: none !important;
    padding: 0 !important;
    font-family: inherit;
}

/* ==========================================================================
   Universal Overrides in Dark Mode (High-Contrast & Refined)
   Garante contraste perfeito e elimina fundos brancos rígidos
   ========================================================================== */
[data-bs-theme="dark"] body {
    background-color: var(--q-bg-body);
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .bg-white {
    background-color: var(--q-bg-surface) !important;
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] .bg-light,
[data-bs-theme="dark"] .bg-body-tertiary {
    background-color: var(--q-bg-surface-alt) !important;
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] .text-dark,
[data-bs-theme="dark"] .text-body {
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] .text-secondary {
    color: var(--q-text-muted) !important;
}

[data-bs-theme="dark"] .article-body,
[data-bs-theme="dark"] .content-body,
[data-bs-theme="dark"] .markdown-content,
[data-bs-theme="dark"] .content-article {
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] .card {
    background-color: var(--q-bg-surface);
    border-color: var(--q-border-subtle);
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .card-header {
    background-color: var(--q-bg-surface-alt) !important;
    border-color: var(--q-border-subtle) !important;
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] .card-footer {
    background-color: var(--q-bg-surface-alt) !important;
    border-color: var(--q-border-subtle) !important;
    color: var(--q-text-muted) !important;
}

/* --- Form Controls & Search Fields in Dark Mode --- */
[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select {
    background-color: var(--q-bg-surface-alt);
    border-color: var(--q-border-medium);
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .form-control::placeholder,
[data-bs-theme="dark"] .form-select::placeholder {
    color: #94A3B8 !important;
    opacity: 0.85;
}

[data-bs-theme="dark"] .form-control:focus,
[data-bs-theme="dark"] .form-select:focus {
    background-color: var(--q-bg-surface);
    border-color: var(--q-accent);
    color: var(--q-text-main);
    box-shadow: 0 0 0 0.25rem var(--q-accent-subtle);
}

[data-bs-theme="dark"] .input-group-text {
    background-color: var(--q-bg-surface-alt);
    border-color: var(--q-border-medium);
    color: var(--q-text-muted);
}

/* --- Tables in Dark Mode --- */
[data-bs-theme="dark"] .table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--q-text-main);
    --bs-table-border-color: var(--q-border-subtle);
    --bs-table-hover-bg: #1A2337;
    --bs-table-striped-bg: rgba(255, 255, 255, 0.02);
}

[data-bs-theme="dark"] tr.even-row,
[data-bs-theme="dark"] .even-row,
[data-bs-theme="dark"] .table-striped > tbody > tr:nth-of-type(odd) > *,
[data-bs-theme="dark"] .table-striped > tbody > tr:nth-of-type(even) > * {
    background-color: rgba(255, 255, 255, 0.02) !important;
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] tr.even-row:hover,
[data-bs-theme="dark"] tr.odd-row:hover,
[data-bs-theme="dark"] #pricesTable tbody tr:hover,
[data-bs-theme="dark"] #pricesTable tbody tr.even-row:hover,
[data-bs-theme="dark"] .table-hover > tbody > tr:hover > * {
    background-color: var(--q-bg-surface-hover) !important;
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] #pricesTable tbody tr,
[data-bs-theme="dark"] #pricesTable tbody tr.even-row {
    background-color: var(--q-bg-surface) !important;
    border-color: var(--q-border-subtle) !important;
}

[data-bs-theme="dark"] #pricesTable td {
    color: var(--q-text-main) !important;
    border-bottom-color: var(--q-border-subtle) !important;
}

[data-bs-theme="dark"] #pricesTable td::before {
    color: var(--q-text-muted) !important;
}

/* Heatmap tables sticky column in Dark Mode */
[data-bs-theme="dark"] .heatmap-table th.row-label,
[data-bs-theme="dark"] .heatmap-table td.row-label {
    background-color: var(--q-bg-surface) !important;
    color: var(--q-text-main) !important;
}
[data-bs-theme="dark"] .heatmap-table thead th.row-label {
    background-color: var(--q-bg-surface-alt) !important;
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] thead th,
[data-bs-theme="dark"] .table thead th,
[data-bs-theme="dark"] .q-table th {
    background-color: #131B2E !important;
    color: #CBD5E1 !important;
    border-bottom: 2px solid #2A364F !important;
    font-weight: 600;
    font-size: 0.775rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

[data-bs-theme="dark"] .table td,
[data-bs-theme="dark"] .q-table td {
    color: var(--q-text-main);
    border-color: var(--q-border-subtle);
}

[data-bs-theme="dark"] .table-light,
[data-bs-theme="dark"] .table-light > th,
[data-bs-theme="dark"] .table-light > td {
    background-color: #131B2E !important;
    color: var(--q-text-main) !important;
    border-color: var(--q-border-subtle) !important;
}

/* Executive summary cards and gradient cards in Dark Mode */
.executive-summary-card {
    background: linear-gradient(145deg, #ffffff, #f8fafc);
    border: 1px solid var(--q-border-subtle);
    border-left-width: 5px !important;
}

[data-bs-theme="dark"] .executive-summary-card,
[data-bs-theme="dark"] .card[style*="linear-gradient"] {
    background: linear-gradient(145deg, var(--q-bg-surface), var(--q-bg-surface-alt)) !important;
    border-color: var(--q-border-subtle) !important;
    color: var(--q-text-main) !important;
}

/* --- Buttons in Dark Mode --- */
[data-bs-theme="dark"] .btn-light {
    background-color: var(--q-bg-surface-alt) !important;
    border-color: var(--q-border-medium) !important;
    color: var(--q-text-main) !important;
}

[data-bs-theme="dark"] .btn-light:hover {
    background-color: var(--q-bg-surface-hover) !important;
    border-color: var(--q-border-strong) !important;
    color: #FFFFFF !important;
}

[data-bs-theme="dark"] .btn-outline-secondary {
    border-color: var(--q-border-medium);
    color: #CBD5E1;
}

[data-bs-theme="dark"] .btn-outline-secondary:hover {
    background-color: var(--q-bg-surface-hover);
    border-color: var(--q-border-strong);
    color: #FFFFFF;
}

[data-bs-theme="dark"] .btn-secondary {
    background-color: #334155 !important;
    border-color: #475569 !important;
    color: #F8FAFC !important;
}

[data-bs-theme="dark"] .btn-outline-primary {
    color: #38BDF8;
    border-color: #0284C7;
}

[data-bs-theme="dark"] .btn-outline-primary:hover {
    background-color: #0284C7;
    color: #FFFFFF;
}

[data-bs-theme="dark"] .btn-outline-light {
    border-color: rgba(255, 255, 255, 0.35);
    color: #F8FAFC;
}

[data-bs-theme="dark"] .btn-outline-light:hover {
    background-color: rgba(255, 255, 255, 0.15);
    border-color: rgba(255, 255, 255, 0.6);
    color: #FFFFFF;
}

[data-bs-theme="dark"] .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

/* --- Code & Pre in Dark Mode --- */
[data-bs-theme="dark"] code:not(pre code) {
    background-color: #131B2E;
    color: #38BDF8;
    border: 1px solid #2A364F;
}

[data-bs-theme="dark"] pre {
    background-color: #070B14;
    border-color: var(--q-border-subtle);
    color: #F8FAFC;
}

/* --- Alerts in Dark Mode --- */
[data-bs-theme="dark"] .alert-info {
    background-color: rgba(14, 165, 233, 0.12) !important;
    border-color: rgba(14, 165, 233, 0.35) !important;
    color: #7DD3FC !important;
}

[data-bs-theme="dark"] .alert-success {
    background-color: rgba(16, 185, 129, 0.12) !important;
    border-color: rgba(16, 185, 129, 0.35) !important;
    color: #6EE7B7 !important;
}

[data-bs-theme="dark"] .alert-warning {
    background-color: rgba(245, 158, 11, 0.12) !important;
    border-color: rgba(245, 158, 11, 0.35) !important;
    color: #FCD34D !important;
}

[data-bs-theme="dark"] .alert-danger {
    background-color: rgba(239, 68, 68, 0.12) !important;
    border-color: rgba(239, 68, 68, 0.35) !important;
    color: #FCA5A5 !important;
}

[data-bs-theme="dark"] .alert-link {
    color: #FFFFFF !important;
    text-decoration: underline;
}

/* --- Badges in Dark Mode --- */
[data-bs-theme="dark"] .bg-primary-subtle {
    background-color: rgba(14, 165, 233, 0.2) !important;
    color: #38BDF8 !important;
    border: 1px solid rgba(14, 165, 233, 0.3) !important;
}

[data-bs-theme="dark"] .bg-secondary-subtle {
    background-color: #1E293B !important;
    color: #94A3B8 !important;
    border: 1px solid #334155 !important;
}

[data-bs-theme="dark"] .bg-success-subtle {
    background-color: rgba(16, 185, 129, 0.2) !important;
    color: #34D399 !important;
    border: 1px solid rgba(16, 185, 129, 0.3) !important;
}

[data-bs-theme="dark"] .bg-warning-subtle {
    background-color: rgba(245, 158, 11, 0.2) !important;
    color: #FBBF24 !important;
    border: 1px solid rgba(245, 158, 11, 0.3) !important;
}

[data-bs-theme="dark"] .bg-danger-subtle {
    background-color: rgba(239, 68, 68, 0.2) !important;
    color: #F87171 !important;
    border: 1px solid rgba(239, 68, 68, 0.3) !important;
}

[data-bs-theme="dark"] .bg-info-subtle {
    background-color: rgba(14, 165, 233, 0.2) !important;
    color: #38BDF8 !important;
    border: 1px solid rgba(14, 165, 233, 0.3) !important;
}

/* --- UI Controls in Dark Mode --- */
[data-bs-theme="dark"] .dropdown-menu {
    background-color: var(--q-bg-surface);
    border-color: var(--q-border-medium);
    box-shadow: var(--q-shadow-lg);
}

[data-bs-theme="dark"] .dropdown-item {
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .dropdown-item:hover,
[data-bs-theme="dark"] .dropdown-item:focus {
    background-color: var(--q-bg-surface-hover);
    color: #FFFFFF;
}

[data-bs-theme="dark"] .dropdown-divider {
    border-color: var(--q-border-subtle);
}

[data-bs-theme="dark"] .list-group-item {
    background-color: var(--q-bg-surface);
    border-color: var(--q-border-subtle);
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .list-group-item:hover,
[data-bs-theme="dark"] .list-group-item-action:hover {
    background-color: var(--q-bg-surface-hover);
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .accordion-button {
    background-color: var(--q-bg-surface) !important;
    color: var(--q-text-main) !important;
    border-color: var(--q-border-subtle);
}

[data-bs-theme="dark"] .accordion-button:not(.collapsed) {
    background-color: var(--q-bg-surface-alt) !important;
    color: var(--q-accent) !important;
}

[data-bs-theme="dark"] .accordion-item {
    background-color: var(--q-bg-surface);
    border-color: var(--q-border-subtle);
}

[data-bs-theme="dark"] .modal-content,
[data-bs-theme="dark"] .offcanvas {
    background-color: var(--q-bg-surface);
    color: var(--q-text-main);
    border-color: var(--q-border-medium);
}

[data-bs-theme="dark"] .page-link {
    background-color: var(--q-bg-surface-alt);
    border-color: var(--q-border-medium);
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .page-link:hover {
    background-color: var(--q-bg-surface-hover);
    color: #FFFFFF;
}

[data-bs-theme="dark"] .page-item.active .page-link {
    background-color: var(--q-brand-primary);
    border-color: var(--q-brand-primary);
    color: #FFFFFF;
}

[data-bs-theme="dark"] .nav-tabs {
    border-color: var(--q-border-medium);
}

[data-bs-theme="dark"] .nav-tabs .nav-link {
    color: var(--q-text-muted);
}

[data-bs-theme="dark"] .nav-tabs .nav-link:hover {
    border-color: var(--q-border-subtle) var(--q-border-subtle) transparent;
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .nav-tabs .nav-link.active {
    background-color: var(--q-bg-surface);
    border-color: var(--q-border-medium) var(--q-border-medium) var(--q-bg-surface);
    color: var(--q-accent);
}

[data-bs-theme="dark"] .breadcrumb-item a {
    color: var(--q-text-muted);
}

[data-bs-theme="dark"] .breadcrumb-item.active {
    color: var(--q-text-main);
}

[data-bs-theme="dark"] .border,
[data-bs-theme="dark"] .border-top,
[data-bs-theme="dark"] .border-bottom,
[data-bs-theme="dark"] .border-start,
[data-bs-theme="dark"] .border-end {
    border-color: var(--q-border-subtle) !important;
}

[data-bs-theme="dark"] footer.bg-body-tertiary {
    background-color: var(--q-bg-surface-alt) !important;
    border-top-color: var(--q-border-subtle) !important;
    color: var(--q-text-muted) !important;
}

/* ==========================================================================
   Module Badges & Admin UI Utilities
   ========================================================================== */
.badge-module-hedgehog {
    background-color: #6366F1 !important;
    color: #FFFFFF !important;
}
.badge-module-sloth {
    background-color: #0D9488 !important;
    color: #FFFFFF !important;
}
.badge-module-flamingo {
    background-color: #F43F5E !important;
    color: #FFFFFF !important;
}
.badge-module-alpaca {
    background-color: #0284C7 !important;
    color: #FFFFFF !important;
}
.badge-module-fish {
    background-color: #EAB308 !important;
    color: #0F172A !important;
}

[data-bs-theme="dark"] .badge-module-fish {
    background-color: #FACC15 !important;
    color: #0F172A !important;
}

