/* Tokens do painel: tema claro por padrão, escuro pelo sistema ou por data-theme. */
:root {
  --font-sans: "Inter Tight", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --color-bg: #f6f7f9;
  --color-panel: #ffffff;
  --color-fg: #18202b;
  --color-fg-muted: #5b6676;
  --color-border-line: #dde2e9;
  --color-ok: #17803d;
  --color-bad: #c0352b;
  --serie-1: #2f6fdb;
  --serie-2: #e07b39;
  --cds-chart-grid: #e8ecf1;
  --cds-chart-axis: #9aa5b4;
  --cds-chart-reference: #8792a2;
  --cds-surface-popover: #ffffff;
  --cds-border: #d3d9e1;
  --cds-shadow-popover: 0 6px 20px rgb(15 23 42 / 0.12);
  --cds-text-secondary: #5b6676;
  --cds-font-size-caption: 0.8125rem;
  --cds-font-size-body: 0.9375rem;
  --cds-font-size-heading: 1.0625rem;
  --cds-font-size-title: 1.75rem;
  --cds-font-weight-medium: 550;
  --cds-gap-xs: 4px;
  --cds-gap-sm: 8px;
  --cds-gap-md: 16px;
  --cds-gap-lg: 24px;
  --cds-pad-xs: 4px;
  --cds-pad-sm: 8px;
  --cds-pad-md: 12px;
  --cds-pad-lg: 20px;
  --cds-radius: 10px;
  --cds-dur-slow: 400ms;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --color-bg: #0f141b;
    --color-panel: #171e27;
    --color-fg: #e8edf3;
    --color-fg-muted: #9aa6b5;
    --color-border-line: #2a3441;
    --color-ok: #4cc27a;
    --color-bad: #f0776c;
    --serie-1: #6c9ff0;
    --serie-2: #f0a061;
    --cds-chart-grid: #222b36;
    --cds-chart-axis: #5d6878;
    --cds-chart-reference: #74808f;
    --cds-surface-popover: #1d2530;
    --cds-border: #333e4c;
    --cds-shadow-popover: 0 6px 20px rgb(0 0 0 / 0.4);
    --cds-text-secondary: #9aa6b5;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --color-bg: #0f141b;
  --color-panel: #171e27;
  --color-fg: #e8edf3;
  --color-fg-muted: #9aa6b5;
  --color-border-line: #2a3441;
  --color-ok: #4cc27a;
  --color-bad: #f0776c;
  --serie-1: #6c9ff0;
  --serie-2: #f0a061;
  --cds-chart-grid: #222b36;
  --cds-chart-axis: #5d6878;
  --cds-chart-reference: #74808f;
  --cds-surface-popover: #1d2530;
  --cds-border: #333e4c;
  --cds-shadow-popover: 0 6px 20px rgb(0 0 0 / 0.4);
  --cds-text-secondary: #9aa6b5;
  color-scheme: dark;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-fg);
  font-family: var(--font-sans);
  font-size: var(--cds-font-size-body);
  padding-block: 24px 40px;
  padding-left: max(16px, env(safe-area-inset-left, 0px));
  padding-right: max(16px, env(safe-area-inset-right, 0px));
}
.fv-pagina { max-width: 1440px; margin-inline: auto; }
.fv-atualizado { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); margin: 0 0 var(--cds-gap-sm); }
.dash-skeleton { position: relative; color: transparent !important; }
.dash-skeleton::after {
  content: ""; position: absolute; inset: 0; border-radius: 6px;
  background: var(--cds-chart-grid);
}
@media (prefers-reduced-motion: no-preference) {
  .dash-skeleton::after { animation: fv-pulso 1.2s ease-in-out infinite alternate; }
}
@keyframes fv-pulso { from { opacity: .55; } to { opacity: 1; } }
.fv-erro-global { border: 1px solid var(--color-bad); color: var(--color-fg); background: var(--color-panel); border-radius: var(--cds-radius); padding: var(--cds-pad-md) var(--cds-pad-lg); margin-bottom: var(--cds-gap-md); }

/* Painel */
.fv{display:grid;gap:var(--cds-gap-lg);font-family:var(--font-sans)}
.fv-head{display:flex;flex-wrap:wrap;gap:var(--cds-gap-md);align-items:flex-end;justify-content:space-between}
.fv-head-text{min-width:0;flex:1 1 30rem}
.fv-head h1{font-family:var(--font-serif);font-weight:400;font-size:var(--cds-font-size-title);margin:0;text-wrap:balance}
.fv-take{color:var(--color-fg-muted);font-size:var(--cds-font-size-body);margin:var(--cds-gap-xs) 0 0;max-width:74ch;line-height:1.5}
.fv .fv-take b{font-weight:600;color:var(--color-fg);font-variant-numeric:tabular-nums}
.fv-filtro{display:inline-flex;border:1px solid var(--color-border-line);border-radius:var(--cds-radius);background:var(--color-panel);padding:3px;gap:3px;flex-wrap:wrap}
.fv-filtro button{font:inherit;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);background:transparent;border:0;border-radius:calc(var(--cds-radius) - 2px);padding:var(--cds-pad-xs) var(--cds-pad-md);cursor:pointer;text-align:left;line-height:1.3}
.fv-filtro button strong{display:block;font-size:var(--cds-font-size-body);font-weight:var(--cds-font-weight-medium);color:var(--color-fg)}
.fv-filtro button[aria-pressed="true"]{background:var(--color-bg);box-shadow:0 0 0 1px var(--color-border-line)}
.fv-filtro button:focus-visible{outline:2px solid var(--fv-c0);outline-offset:1px}
.fv-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));gap:var(--cds-gap-md)}
.fv-card{background:var(--color-panel);border:1px solid var(--color-border-line);border-radius:var(--cds-radius);padding:var(--cds-pad-lg);min-width:0}
.fv-card-destaque{border-color:var(--fv-c0);box-shadow:inset 0 0 0 1px var(--fv-c0)}
.fv-card-suprimido{background:transparent;border-style:dashed}
.fv-k-label{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.fv-k-value{font-family:var(--font-serif);font-weight:400;font-size:clamp(1.5rem, 2.3vw, calc(var(--cds-font-size-title) * 1.3));white-space:nowrap;line-height:1.15;margin-top:var(--cds-gap-xs);font-variant-numeric:tabular-nums;min-height:1.15em}
.fv-card-suprimido .fv-k-value{font-size:var(--cds-font-size-title)}
.fv-k-sub{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);margin-top:var(--cds-gap-xs);font-variant-numeric:tabular-nums}
.fv .fv-pos{color:var(--color-ok)}
.fv .fv-neg{color:var(--color-bad)}
.fv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,28rem),1fr));gap:var(--cds-gap-md)}
.fv-card h2{font-size:var(--cds-font-size-heading);font-weight:var(--cds-font-weight-medium);margin:0}
.fv-note{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);margin:2px 0 var(--cds-gap-md)}
.fv-legend{display:flex;gap:var(--cds-gap-md);flex-wrap:wrap;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);margin-bottom:var(--cds-gap-sm)}
.fv-sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.fv-sw-line{height:2px;width:14px;vertical-align:3px}
.fv-sw-dash{height:0;width:14px;border-top:2px dashed var(--fv-c0);vertical-align:3px;border-radius:0}
.fv-chart{position:relative;min-height:260px}
.fv-tip{position:absolute;pointer-events:none;background:var(--cds-surface-popover);border:1px solid var(--cds-border);border-radius:var(--cds-radius);box-shadow:var(--cds-shadow-popover);padding:var(--cds-pad-xs) var(--cds-pad-sm);font-size:var(--cds-font-size-caption);white-space:nowrap;z-index:2;font-variant-numeric:tabular-nums}
.fv-tip .t{color:var(--cds-text-secondary);margin-bottom:2px}
.fv-table-wrap{overflow-x:auto}
.fv-table-wrap-alto{max-height:22rem;overflow:auto}
.fv-table{width:100%;border-collapse:collapse;font-size:var(--cds-font-size-caption);font-variant-numeric:tabular-nums}
.fv-table th{position:sticky;top:0;background:var(--color-panel);text-align:left;font-weight:var(--cds-font-weight-medium);color:var(--color-fg-muted);padding:var(--cds-pad-xs) var(--cds-pad-sm);border-bottom:1px solid var(--color-border-line)}
.fv-table td{padding:var(--cds-pad-xs) var(--cds-pad-sm);border-bottom:1px solid var(--color-border-line)}
.fv-table .num{text-align:right;white-space:nowrap}
.fv-dem{font-size:var(--cds-font-size-body)}
.fv-dem td{padding-block:var(--cds-pad-sm)}
.fv-dem td:first-child{padding-left:var(--cds-pad-lg)}
.fv-dem tr.subtotal td{font-weight:600;border-top:2px solid var(--color-fg);border-bottom:2px solid var(--color-border-line);font-size:calc(var(--cds-font-size-body) * 1.1)}
.fv-dem tr.subtotal td:first-child,.fv-dem tr.total td:first-child{padding-left:var(--cds-pad-sm)}
.fv-dem tr.subtotal{background:color-mix(in srgb,var(--fv-c0) 8%,transparent)}
.fv-dem tr.suprimido td{color:var(--color-fg-muted);font-size:var(--cds-font-size-caption);padding-block:var(--cds-pad-xs);border-bottom-style:dashed}
.fv-dem tr.suprimido.primeiro td{padding-top:var(--cds-pad-md)}
.fv-dem tr.total td{font-weight:var(--cds-font-weight-medium);border-top:1px solid var(--color-border-line)}
.fv-vazio{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);margin:var(--cds-gap-sm) 0 0}
.fv-fail{display:flex;align-items:center;justify-content:center;gap:6px;color:var(--color-fg-muted);font-size:var(--cds-font-size-caption);min-height:inherit}
.fv-fail::before{content:"";width:.375rem;height:.375rem;border-radius:50%;background:var(--color-bad)}
[data-dash-source-state=refreshing]{opacity:.5;transition:opacity var(--cds-dur-slow)}
[data-dash-source-state=empty]{color:transparent}

/* Navegação entre as páginas */
.fv-nav{display:flex;gap:var(--cds-gap-md);font-size:var(--cds-font-size-caption);margin-bottom:var(--cds-gap-sm)}
.fv-nav a{color:var(--color-fg-muted);text-decoration:none;padding-bottom:2px;border-bottom:2px solid transparent}
.fv-nav a:hover{color:var(--color-fg)}
.fv-nav a[aria-current="page"]{color:var(--color-fg);border-bottom-color:var(--serie-1)}

/* Contas a receber */
.cr{--fv-c0:var(--serie-1)}
.cr-filtro{align-items:center}
.cr-filtro button{font-size:var(--cds-font-size-body);color:var(--color-fg);min-width:2.25rem;text-align:center;padding:var(--cds-pad-sm) var(--cds-pad-md)}
.cr-filtro button:hover{background:var(--color-bg)}
.cr-mes{display:flex;flex-direction:column;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);padding:0 var(--cds-pad-sm)}
.cr-mes input{font:inherit;font-size:var(--cds-font-size-body);color:var(--color-fg);background:transparent;border:0;padding:0}
.cr-k[data-sit="atrasado"]{border-color:var(--color-bad);box-shadow:inset 0 0 0 1px var(--color-bad)}
.cr h2::after{content:attr(data-qtd);color:var(--color-fg-muted);font-weight:400}
.cr details>summary{cursor:pointer;list-style:none}
.cr details>summary::-webkit-details-marker{display:none}
.cr section>details>summary h2{display:inline}
.cr section>details>summary::before{content:"▸";display:inline-block;width:1.1em;color:var(--color-fg-muted);transition:transform .15s}
.cr section>details[open]>summary::before{transform:rotate(90deg)}
.cr-lista{display:grid;gap:var(--cds-gap-sm)}
.cr-carregando{min-height:4rem}
.cr-item{border:1px solid var(--color-border-line);border-left:4px solid var(--color-border-line);border-radius:var(--cds-radius);padding:var(--cds-pad-md) var(--cds-pad-lg);display:grid;gap:var(--cds-gap-sm)}
.cr-item.cr-atrasado{border-left-color:var(--color-bad)}
.cr-item.cr-vence_hoje{border-left-color:var(--serie-2)}
.cr-item.cr-vencido{border-left-color:var(--serie-1)}
.cr-item-topo{display:flex;gap:var(--cds-gap-md);justify-content:space-between;align-items:flex-start;flex-wrap:wrap}
.cr-quem{display:grid;gap:2px;min-width:0;flex:1 1 18rem}
.cr-quem strong{font-weight:var(--cds-font-weight-medium)}
.cr-quem span,.cr-valor span{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.cr-valor{display:grid;justify-items:end;font-variant-numeric:tabular-nums;white-space:nowrap}
.cr-valor strong{font-family:var(--font-serif);font-weight:400;font-size:var(--cds-font-size-heading)}
.cr-datas{display:flex;flex-wrap:wrap;gap:var(--cds-gap-xs) var(--cds-gap-md);font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-variant-numeric:tabular-nums}
.cr-remarcado{text-decoration:line-through}
.cr-atraso{color:var(--color-bad);font-weight:var(--cds-font-weight-medium)}
.cr-notas{display:grid;gap:var(--cds-gap-sm);background:var(--color-bg);border-radius:calc(var(--cds-radius) - 4px);padding:var(--cds-pad-sm) var(--cds-pad-md)}
.cr-nota{display:grid;gap:2px}
.cr-mais .cr-nota{border-top:1px solid var(--color-border-line);padding-top:var(--cds-pad-sm);margin-top:var(--cds-pad-sm)}
.cr-nota-texto{margin:0;white-space:pre-line;line-height:1.45}
.cr-nota-meta{margin:0;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.cr-mais summary{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.cr-sem-nota{margin:0;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-style:italic}
