/* =================================================================
   Prisma — Paleta Teal Moderno (fintech)
   Override das CSS variables do tema Greeva.
   Especificidade aumentada (html[...]) para vencer regras do app.min.css.
   ================================================================= */

/* ---------- LIGHT MODE ---------- */
html:root,
html[data-bs-theme="light"],
html:not([data-bs-theme="dark"]) {
    /* Brand */
    --greeva-primary: #0F766E !important;
    --greeva-primary-rgb: 15, 118, 110 !important;
    --greeva-primary-text-emphasis: #0B5A55 !important;
    --greeva-primary-bg-subtle: #CCFBF1 !important;
    --greeva-primary-border-subtle: #5EEAD4 !important;

    --greeva-secondary: #475569 !important;
    --greeva-secondary-rgb: 71, 85, 105 !important;
    --greeva-secondary-text-emphasis: #334155 !important;
    --greeva-secondary-bg-subtle: #F1F5F9 !important;
    --greeva-secondary-border-subtle: #CBD5E1 !important;

    --greeva-success: #15803D !important;
    --greeva-success-rgb: 21, 128, 61 !important;
    --greeva-success-text-emphasis: #0E5C2C !important;
    --greeva-success-bg-subtle: #DCFCE7 !important;
    --greeva-success-border-subtle: #86EFAC !important;

    --greeva-warning: #CA8A04 !important;
    --greeva-warning-rgb: 202, 138, 4 !important;
    --greeva-warning-text-emphasis: #92660A !important;
    --greeva-warning-bg-subtle: #FEF9C3 !important;
    --greeva-warning-border-subtle: #FDE68A !important;

    --greeva-danger: #B91C1C !important;
    --greeva-danger-rgb: 185, 28, 28 !important;
    --greeva-danger-text-emphasis: #8B1414 !important;
    --greeva-danger-bg-subtle: #FEE2E2 !important;
    --greeva-danger-border-subtle: #FCA5A5 !important;

    --greeva-info: #0369A1 !important;
    --greeva-info-rgb: 3, 105, 161 !important;
    --greeva-info-text-emphasis: #024975 !important;
    --greeva-info-bg-subtle: #E0F2FE !important;
    --greeva-info-border-subtle: #7DD3FC !important;

    /* Neutros / superfícies */
    --greeva-body-bg: #F1F5F9 !important;   /* slate-100, contraste com cards brancos */
    --greeva-body-bg-rgb: 241, 245, 249 !important;
    --greeva-body-color: #0F172A !important;
    --greeva-body-color-rgb: 15, 23, 42 !important;
    --greeva-secondary-color: #64748B !important;
    --greeva-tertiary-color: #94A3B8 !important;
    --greeva-emphasis-color: #020617 !important;
    --greeva-border-color: #CBD5E1 !important;  /* slate-300, borda mais visível */

    /* Topbar/Sidebar superfícies */
    --greeva-topbar-bg: #FFFFFF !important;
    --greeva-menu-bg: #FFFFFF !important;

    /* Bootstrap mirror */
    --bs-body-bg: #F1F5F9 !important;
    --bs-body-color: #0F172A !important;
    --bs-border-color: #CBD5E1 !important;
    --bs-primary: #0F766E !important;
    --bs-primary-rgb: 15, 118, 110 !important;
    --bs-link-color: #0F766E !important;
    --bs-link-color-rgb: 15, 118, 110 !important;
    --bs-link-hover-color: #14B8A6 !important;
}

/* ---------- DARK MODE ---------- */
html[data-bs-theme="dark"] {
    --greeva-primary: #14B8A6 !important;
    --greeva-primary-rgb: 20, 184, 166 !important;
    --greeva-primary-text-emphasis: #2DD4BF !important;
    --greeva-primary-bg-subtle: #0F2F2C !important;
    --greeva-primary-border-subtle: #134E48 !important;

    --greeva-secondary: #94A3B8 !important;
    --greeva-secondary-rgb: 148, 163, 184 !important;
    --greeva-secondary-text-emphasis: #CBD5E1 !important;
    --greeva-secondary-bg-subtle: #1E293B !important;
    --greeva-secondary-border-subtle: #334155 !important;

    --greeva-success: #22C55E !important;
    --greeva-success-rgb: 34, 197, 94 !important;
    --greeva-success-text-emphasis: #4ADE80 !important;
    --greeva-success-bg-subtle: #0F2A1A !important;
    --greeva-success-border-subtle: #16432A !important;

    --greeva-warning: #EAB308 !important;
    --greeva-warning-rgb: 234, 179, 8 !important;
    --greeva-warning-text-emphasis: #FACC15 !important;
    --greeva-warning-bg-subtle: #2A2410 !important;
    --greeva-warning-border-subtle: #444019 !important;

    --greeva-danger: #EF4444 !important;
    --greeva-danger-rgb: 239, 68, 68 !important;
    --greeva-danger-text-emphasis: #F87171 !important;
    --greeva-danger-bg-subtle: #2A1414 !important;
    --greeva-danger-border-subtle: #4C1D1D !important;

    --greeva-info: #38BDF8 !important;
    --greeva-info-rgb: 56, 189, 248 !important;
    --greeva-info-text-emphasis: #7DD3FC !important;
    --greeva-info-bg-subtle: #0C2333 !important;
    --greeva-info-border-subtle: #155069 !important;

    --greeva-body-bg: #0C1310 !important;
    --greeva-body-bg-rgb: 12, 19, 16 !important;
    --greeva-body-color: #E5E7EB !important;
    --greeva-body-color-rgb: 229, 231, 235 !important;
    --greeva-secondary-color: #94A3B8 !important;
    --greeva-tertiary-color: #64748B !important;
    --greeva-emphasis-color: #F8FAFC !important;
    --greeva-border-color: #1F2937 !important;

    --greeva-topbar-bg: #111827 !important;
    --greeva-menu-bg: #0F1815 !important;

    --bs-body-bg: #0C1310 !important;
    --bs-body-color: #E5E7EB !important;
    --bs-border-color: #1F2937 !important;
    --bs-primary: #14B8A6 !important;
    --bs-primary-rgb: 20, 184, 166 !important;
    --bs-link-color: #14B8A6 !important;
    --bs-link-color-rgb: 20, 184, 166 !important;
    --bs-link-hover-color: #2DD4BF !important;
}

/* Body bg explícito (algumas vezes Greeva tem rule específico em body) */
body {
    background-color: var(--greeva-body-bg) !important;
    color: var(--greeva-body-color) !important;
}

/* =================================================================
   Componentes — ajustes específicos
   ================================================================= */

/* =================================================================
   Topbar e Menu — força cores acompanhando o tema (light/dark)
   O Greeva tem regras que mantêm topbar/sidenav escuros mesmo no
   tema claro. Sobrescrevemos com seletor de máxima especificidade.
   ================================================================= */

/* LIGHT — topbar/menu com sutil tom da paleta teal */
html[data-bs-theme="light"][data-topbar-color],
html[data-bs-theme="light"]:not([data-bs-theme="dark"]) {
    --greeva-topbar-bg: #FFFFFF !important;
    --greeva-topbar-item-color: #475569 !important;
    --greeva-topbar-item-hover-color: #0F766E !important;
    --greeva-topbar-search-bg: #F1F5F9 !important;
    --greeva-topbar-user-bg: #F0FDFA !important;     /* mint pale */
    --greeva-topbar-user-border: #CCFBF1 !important;
}
html[data-bs-theme="light"][data-menu-color],
html[data-bs-theme="light"]:not([data-bs-theme="dark"]) {
    --greeva-menu-bg: #F0FDFA !important;            /* mint pale — diferencia do body */
    --greeva-menu-item-color: #475569 !important;
    --greeva-menu-item-hover-color: #0F766E !important;
    --greeva-menu-item-hover-bg: #CCFBF1 !important;
    --greeva-menu-item-active-color: #0F766E !important;
    --greeva-menu-item-active-bg: #CCFBF1 !important;
    --greeva-menu-title-color: #94A3B8 !important;
}

/* DARK — topbar/menu escuros mas alinhados ao teal */
html[data-bs-theme="dark"][data-topbar-color],
html[data-bs-theme="dark"] {
    --greeva-topbar-bg: #111827 !important;
    --greeva-topbar-item-color: #94A3B8 !important;
    --greeva-topbar-item-hover-color: #2DD4BF !important;
    --greeva-topbar-search-bg: #1F2937 !important;
    --greeva-topbar-user-bg: #1F2937 !important;
    --greeva-topbar-user-border: #1F2937 !important;
}
html[data-bs-theme="dark"][data-menu-color],
html[data-bs-theme="dark"] {
    --greeva-menu-bg: #0F1815 !important;
    --greeva-menu-item-color: #94A3B8 !important;
    --greeva-menu-item-hover-color: #2DD4BF !important;
    --greeva-menu-item-hover-bg: #0F2F2C !important;
    --greeva-menu-item-active-color: #2DD4BF !important;
    --greeva-menu-item-active-bg: #0F2F2C !important;
    --greeva-menu-title-color: #64748B !important;
}

/* =================================================================
   Topbar FIXO no topo (sticky não funciona aqui por causa do flex no body)
   ================================================================= */
.app-topbar {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    left: var(--greeva-sidenav-width, 250px) !important;
    margin-left: 0 !important;
    z-index: 1020 !important;
    background-color: var(--greeva-topbar-bg) !important;
    border-bottom: 1px solid var(--greeva-border-color) !important;
    min-height: var(--greeva-topbar-height, 70px) !important;
}
/* Quando a sidebar está em modo compacto/recolhido */
html[data-sidenav-size="condensed"] .app-topbar,
html[data-sidenav-size="sm-hover"] .app-topbar {
    left: var(--greeva-sidenav-width-sm, 70px) !important;
}
html[data-sidenav-size="compact"] .app-topbar {
    left: var(--greeva-sidenav-width-md, 160px) !important;
}
@media (max-width: 991.98px) {
    .app-topbar {
        left: 0 !important;
    }
}

/* Compensar a topbar fixa: conteúdo desce pra não ficar atrás dela */
.page-content {
    padding-top: var(--greeva-topbar-height, 70px) !important;
}

/* =================================================================
   Logo do sidebar — altura igual à topbar para alinhamento perfeito
   ================================================================= */
.sidenav-menu .logo {
    height: var(--greeva-topbar-height, 70px) !important;
    min-height: var(--greeva-topbar-height, 70px) !important;
    top: 0 !important;
    display: flex !important;
    align-items: center !important;
    padding-left: 1.25rem !important;
    padding-right: 1.25rem !important;
    border-bottom: 1px solid var(--greeva-border-color) !important;
    visibility: visible !important;
}

/* Acento teal no topo da topbar — toque "branded" sutil */
html[data-bs-theme="light"] .app-topbar::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, #0F766E 0%, #14B8A6 50%, #0F766E 100%);
    z-index: 1;
}
html[data-bs-theme="dark"] .app-topbar::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, #14B8A6 0%, #2DD4BF 50%, #14B8A6 100%);
    opacity: 0.6;
    z-index: 1;
}

/* Cards no light com sombra mais marcada e borda sutil teal no hover */
html[data-bs-theme="light"] .card {
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04) !important;
    border-color: var(--greeva-border-color) !important;
}

/* Page-container — usa o body bg, mas com cards destacados */
html[data-bs-theme="light"] body {
    background-color: #E2E8F0 !important;  /* slate-200, mais visível atrás dos cards */
}
html[data-bs-theme="light"] {
    --greeva-body-bg: #E2E8F0 !important;
    --bs-body-bg: #E2E8F0 !important;
}

/* Footer com fundo levemente colorido pra fechar a página */
.footer {
    background-color: transparent !important;
    color: var(--greeva-tertiary-color) !important;
}

/* Cards */
html[data-bs-theme="light"] .card {
    background-color: #FFFFFF !important;
    border-color: var(--greeva-border-color) !important;
    box-shadow: 0 1px 2px 0 rgba(15, 23, 42, 0.04);
}
html[data-bs-theme="dark"] .card {
    background-color: #111827 !important;
    border-color: var(--greeva-border-color) !important;
    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
}

/* Sidenav */
.sidenav-menu {
    background-color: var(--greeva-menu-bg) !important;
    border-right: 1px solid var(--greeva-border-color) !important;
}

/* Sidenav active state — fundo teal-subtle, borda lateral teal */
.side-nav .side-nav-item .side-nav-link.active {
    background-color: var(--greeva-primary-bg-subtle) !important;
    color: var(--greeva-primary) !important;
    border-left: 3px solid var(--greeva-primary) !important;
}
.side-nav .side-nav-item .side-nav-link:hover {
    color: var(--greeva-primary) !important;
}

/* Brand no sidenav — texto teal */
.sidenav-menu .logo iconify-icon {
    color: var(--greeva-primary) !important;
}

/* Botão primary */
.btn-primary {
    --bs-btn-color: #FFFFFF !important;
    --bs-btn-bg: var(--greeva-primary) !important;
    --bs-btn-border-color: var(--greeva-primary) !important;
    --bs-btn-hover-bg: #14B8A6 !important;
    --bs-btn-hover-border-color: #14B8A6 !important;
    --bs-btn-active-bg: #0B5A55 !important;
    --bs-btn-active-border-color: #0B5A55 !important;
    background-color: var(--greeva-primary) !important;
    border-color: var(--greeva-primary) !important;
    color: #FFFFFF !important;
}
.btn-primary:hover {
    background-color: #14B8A6 !important;
    border-color: #14B8A6 !important;
}

/* Botão outline-primary */
.btn-outline-primary {
    color: var(--greeva-primary) !important;
    border-color: var(--greeva-primary) !important;
}
.btn-outline-primary:hover {
    background-color: var(--greeva-primary) !important;
    color: #FFFFFF !important;
}

/* Texto colorido */
.text-primary { color: var(--greeva-primary) !important; }
.text-success { color: var(--greeva-success) !important; }
.text-warning { color: var(--greeva-warning) !important; }
.text-danger  { color: var(--greeva-danger)  !important; }
.text-info    { color: var(--greeva-info)    !important; }

/* Badge subtle backgrounds */
.text-bg-primary-subtle { background-color: var(--greeva-primary-bg-subtle) !important; color: var(--greeva-primary-text-emphasis) !important; }
.text-bg-success-subtle { background-color: var(--greeva-success-bg-subtle) !important; color: var(--greeva-success-text-emphasis) !important; }
.text-bg-warning-subtle { background-color: var(--greeva-warning-bg-subtle) !important; color: var(--greeva-warning-text-emphasis) !important; }
.text-bg-danger-subtle  { background-color: var(--greeva-danger-bg-subtle)  !important; color: var(--greeva-danger-text-emphasis)  !important; }
.text-bg-info-subtle    { background-color: var(--greeva-info-bg-subtle)    !important; color: var(--greeva-info-text-emphasis)    !important; }
.text-bg-secondary-subtle { background-color: var(--greeva-secondary-bg-subtle) !important; color: var(--greeva-secondary-text-emphasis) !important; }

/* Bootstrap-style backgrounds (cards de KPI) */
.bg-primary-subtle { background-color: var(--greeva-primary-bg-subtle) !important; }
.bg-success-subtle { background-color: var(--greeva-success-bg-subtle) !important; }
.bg-warning-subtle { background-color: var(--greeva-warning-bg-subtle) !important; }
.bg-danger-subtle  { background-color: var(--greeva-danger-bg-subtle)  !important; }
.bg-info-subtle    { background-color: var(--greeva-info-bg-subtle)    !important; }

/* Form focus */
.form-control:focus,
.form-select:focus {
    border-color: var(--greeva-primary) !important;
    box-shadow: 0 0 0 0.2rem rgba(var(--greeva-primary-rgb), 0.15) !important;
}

/* Avatar-title bg-*-subtle */
.avatar-title.bg-primary-subtle { background-color: var(--greeva-primary-bg-subtle) !important; color: var(--greeva-primary) !important; }
.avatar-title.bg-success-subtle { background-color: var(--greeva-success-bg-subtle) !important; color: var(--greeva-success) !important; }
.avatar-title.bg-warning-subtle { background-color: var(--greeva-warning-bg-subtle) !important; color: var(--greeva-warning) !important; }
.avatar-title.bg-danger-subtle  { background-color: var(--greeva-danger-bg-subtle)  !important; color: var(--greeva-danger)  !important; }
.avatar-title.bg-info-subtle    { background-color: var(--greeva-info-bg-subtle)    !important; color: var(--greeva-info)    !important; }

/* Avatar-title cores sólidas (KPI cards) */
.avatar-title.text-bg-primary { background-color: var(--greeva-primary) !important; color: #FFF !important; }
.avatar-title.text-bg-success { background-color: var(--greeva-success) !important; color: #FFF !important; }
.avatar-title.text-bg-warning { background-color: var(--greeva-warning) !important; color: #FFF !important; }
.avatar-title.text-bg-danger  { background-color: var(--greeva-danger)  !important; color: #FFF !important; }
.avatar-title.text-bg-info    { background-color: var(--greeva-info)    !important; color: #FFF !important; }

/* Tabela header */
.table > thead {
    background-color: var(--greeva-secondary-bg-subtle) !important;
}
.table {
    --bs-table-bg: transparent !important;
    color: var(--greeva-body-color) !important;
}
html[data-bs-theme="dark"] .table {
    --bs-table-color: var(--greeva-body-color) !important;
}

/* Link */
a {
    color: var(--greeva-primary);
}
a:hover {
    color: var(--greeva-link-hover-color, #14B8A6);
}

/* ============================================================
   Fluxo de Caixa (handoff DRE previsto x realizado) — tokens
   ============================================================ */
:root {
    --fc-good-fg: #166534;
    --fc-good-bg: #D1FAE5;
    --fc-bad-fg:  #991B1B;
    --fc-bad-bg:  #FEE2E2;
    --fc-neutral-fg: #475569;
    --fc-neutral-bg: #E2E8F0;
    --fc-grupo-bg:   #F1F5F9;
    --fc-subgrupo-bg:#F8FAFC;
    --fc-resultado-bg: #0F172A;
    --fc-resultado-fg: #F8FAFC;
}
html[data-bs-theme="dark"] {
    --fc-good-fg: #6EE7B7;
    --fc-good-bg: rgba(16,185,129,0.16);
    --fc-bad-fg:  #FCA5A5;
    --fc-bad-bg:  rgba(239,68,68,0.16);
    --fc-neutral-fg: #94A3B8;
    --fc-neutral-bg: rgba(148,163,184,0.18);
    --fc-grupo-bg:   rgba(20,184,166,0.10);
    --fc-subgrupo-bg:rgba(20,184,166,0.04);
    --fc-resultado-bg: #14B8A6;
    --fc-resultado-fg: #0F172A;
}

.fc-table { width:100%; }
.fc-table thead th { font-weight:600; font-size:.85rem; }
.fc-table td, .fc-table th { padding:.6rem .75rem; vertical-align:middle; }
.fc-table.fc-compact td, .fc-table.fc-compact th { padding:.35rem .55rem; font-size:.85rem; }

.fc-num { font-variant-numeric: tabular-nums; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

.fc-row-grupo > td {
    background: var(--fc-grupo-bg);
    font-weight: 700;
    font-size: 1.02rem;
    cursor: pointer;
}
.fc-row-subgrupo > td { background: var(--fc-subgrupo-bg); }
.fc-row-conta { cursor: pointer; }
.fc-row-conta:hover > td { background: var(--fc-subgrupo-bg); }
.fc-row-resultado > td {
    background: var(--fc-resultado-bg);
    color: var(--fc-resultado-fg);
    font-weight: 700;
    font-size: 1.05rem;
    border-top: 3px double rgba(15,118,110,.6);
}
.fc-row-resultado > td .fc-pill { background: rgba(255,255,255,.15); color: var(--fc-resultado-fg); }

.fc-caret { display:inline-block; min-width:14px; text-align:center; color: var(--greeva-primary); font-weight:600; }
.fc-collapsed { display:none !important; }

.fc-pill {
    display: inline-flex; align-items: center; gap:.4rem;
    padding:.18rem .6rem; border-radius:999px;
    font-size:.82rem; font-weight:600; line-height:1.1;
    font-variant-numeric: tabular-nums;
}
.fc-pill.fc-good    { color: var(--fc-good-fg);    background: var(--fc-good-bg); }
.fc-pill.fc-bad     { color: var(--fc-bad-fg);     background: var(--fc-bad-bg); }
.fc-pill.fc-neutral { color: var(--fc-neutral-fg); background: var(--fc-neutral-bg); }
.fc-pill .fc-pct { opacity:.7; font-weight:500; }

.fc-bar { position:relative; height:8px; background: var(--fc-neutral-bg); border-radius:4px; overflow:hidden; }
.fc-bar-axis { position:absolute; left:50%; top:0; bottom:0; width:1px; background:rgba(0,0,0,.18); }
.fc-bar-fill { position:absolute; top:0; bottom:0; border-radius:3px; }
.fc-bar-fill.fc-good { background: var(--fc-good-fg); opacity:.75; }
.fc-bar-fill.fc-bad  { background: var(--fc-bad-fg);  opacity:.75; }
.fc-bar-fill.fc-neutral { background: var(--fc-neutral-fg); opacity:.5; }

.fc-kpi { background:#fff; border:1px solid var(--greeva-border-color); border-radius:12px; padding:14px 16px; height:100%; }
html[data-bs-theme="dark"] .fc-kpi { background:#0B1220; }
.fc-kpi-lbl { font-size:.78rem; text-transform:uppercase; letter-spacing:.04em; color:var(--bs-secondary-color); margin-bottom:4px; }
.fc-kpi-val { font-size:1.6rem; font-weight:700; line-height:1.1; font-variant-numeric: tabular-nums; }
.fc-kpi-sub { font-size:.82rem; color:var(--bs-secondary-color); margin-top:2px; }
.fc-kpi-sub-inline { font-size:1rem; color: var(--bs-secondary-color); }
.fc-good { color: var(--fc-good-fg); }
.fc-bad  { color: var(--fc-bad-fg); }

.fc-alert {
    display:flex; gap:14px; align-items:flex-start;
    background:#fff; border:1px solid var(--greeva-border-color);
    border-left:4px solid var(--fc-neutral-bg);
    border-radius:12px; padding:14px 16px; cursor:pointer; height:100%;
}
html[data-bs-theme="dark"] .fc-alert { background:#0B1220; }
.fc-alert:hover { box-shadow: 0 4px 18px rgba(15,118,110,.08); }
.fc-alert.fc-bad  { border-left-color: var(--fc-bad-fg); }
.fc-alert.fc-good { border-left-color: var(--fc-good-fg); }
.fc-alert-icon {
    width:34px; height:34px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    font-weight:700; font-size:1.1rem; flex-shrink:0;
}
.fc-alert.fc-bad  .fc-alert-icon { background: var(--fc-bad-bg);  color: var(--fc-bad-fg); }
.fc-alert.fc-good .fc-alert-icon { background: var(--fc-good-bg); color: var(--fc-good-fg); }
.fc-alert-body { flex:1; }
.fc-alert-name { font-size:1.05rem; font-weight:600; }
.fc-alert-crumb { font-size:.78rem; color:var(--bs-secondary-color); text-transform:uppercase; letter-spacing:.04em; }
.fc-alert-delta { font-size:1.4rem; font-weight:700; font-variant-numeric: tabular-nums; line-height:1.1; }
.fc-alert.fc-bad  .fc-alert-delta { color: var(--fc-bad-fg); }
.fc-alert.fc-good .fc-alert-delta { color: var(--fc-good-fg); }
.fc-alert-nums { font-size:.8rem; color:var(--bs-secondary-color); font-variant-numeric: tabular-nums; }

@media (max-width: 720px) {
    .fc-hide-mobile { display:none !important; }
}
