/* ============================================================
   PLATAFORMA FINANCEIRA — sistema visual (reformulação TASK-016 v2)
   Linguagem "mesa de análise": tela clara e silenciosa, navegação em
   grafite, um acento só, números em fonte monoespaçada.
   Superfícies separadas por linha, não por sombra; sombra só no que flutua.
   ============================================================ */

:root{
  color-scheme: light;

  /* --- tela e superfícies --- */
  --bg:#F7F8FA;
  --surface:#FFFFFF;
  --surface-2:#F2F4F7;
  --surface-3:#E7EBF0;
  --border:#E3E8EE;
  --border-strong:#CFD6E0;
  --linha:#EDF0F4;

  /* --- texto --- */
  --text-primary:#0F1721;
  --text-secondary:#5A6675;
  --text-tertiary:#65707E;   /* 5,0:1 sobre --surface e 4,6:1 sobre --surface-2 (cabeçalho de tabela; com #6B7685 dava 4,18:1) */
  --kpi-label-color:#5A6675;

  /* --- navegação (grafite nos dois temas) --- */
  --chrome-bg-1:#0F1720;
  --chrome-bg-2:#141D28;
  --chrome-text:#EAEEF3;
  --chrome-text-dim:#93A0B0;
  --chrome-border:#22303F;
  --chrome-field-bg:#1A2430;
  --chrome-pill-bg:rgba(255,255,255,.07);
  --chrome-scroll:#2A3949;
  --chrome-scroll-hover:#3E5268;

  /* --- acento e semântica --- */
  --brand:#0E6E68;
  --brand-strong:#0A544F;
  --brand-soft:#E6F2F0;
  --brand-on:#FFFFFF;

  --positive:#1B7F53;
  --positive-soft:#E7F4EC;
  --positive-on-soft:#187049;   /* texto de selo sobre --positive-soft: 5,4:1 (o --positive dava 4,41:1) */
  --negative:#B23A30;
  --negative-soft:#FBEBE9;
  --warning:#95641A;   /* 4,55:1 sobre --warning-soft (.badge.warn); com #96651A dava 4,49:1 */
  --warning-soft:#FBF1DE;
  --info:#2B5F9E;
  --info-soft:#EAF1FA;
  --neutral-chip-bg:#EEF1F5;
  --neutral-chip-text:#5A6675;

  /* série de dados dos gráficos (discreta) */
  --dado-1:#0E6E68; --dado-2:#2B5F9E; --dado-3:#96651A; --dado-4:#6B4C9A;
  --dado-5:#B23A30; --dado-6:#3F7A4F; --dado-7:#8A5A44; --dado-8:#41748C;

  /* idades do vencido (até 30, 31 a 90, 91 a 365 dias, 1 a 2 anos, mais de
     2 anos), em um tom só: escurece com a idade da dívida (no escuro,
     clareia). Lê-se pela luminosidade, não pela matiz, e por isso funciona
     para quem não distingue vermelho de âmbar. Hoje só a Inadimplência usa
     (TASK-078, G3). */
  --id-1:#E3988F; --id-2:#CC5A4E; --id-3:#A8352B; --id-4:#7A1D16; --id-5:#4A100C;
  --dado-neutro:#8A94A3;
  /* horizontes da safra (no vencimento, D+30, D+60, D+90): o mesmo verde do
     acento, do mais claro ao mais fechado */
  --hz-0:#4E9C96; --hz-30:#2F8780; --hz-60:#0E6E68; --hz-90:#08413D;

  /* --- elevação --- */
  --shadow-sm: none;
  --shadow-md: 0 8px 24px -12px rgba(15,23,33,.18);
  --shadow-lg: 0 24px 60px -24px rgba(15,23,33,.35);
  --ring: 0 0 0 3px color-mix(in srgb, var(--brand) 20%, transparent);

  /* --- forma --- */
  --radius-sm:6px;
  --radius-md:8px;
  --radius-lg:10px;
  --radius-pill:999px;

  /* --- ritmo (base 4) --- */
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:20px; --s-6:28px; --s-7:40px; --s-8:56px;
  --gap:16px; --gap-lg:20px;

  /* --- medidas --- */
  --largura-max:1680px;
  --altura-controle:34px;
  --sidebar:236px;
  --topbar:56px;

  /* --- tipografia --- */
  --font-display:'Fraunces', ui-serif, Georgia, serif;   /* número herói e marca */
  --font-body:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-mono:'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
  --t-micro:10.5px; --t-mini:11.5px; --t-corpo:13px; --t-medio:14px; --t-titulo:16px; --t-secao:20px; --t-heroi:40px;
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme: dark;
    --bg:#0B0F14;
    --surface:#111821;
    --surface-2:#161F2A;
    --surface-3:#1E2935;
    --border:#202C3A;
    --border-strong:#2C3B4C;
    --linha:#1A242F;

    --text-primary:#E9EEF4;
    --text-secondary:#9AA7B6;
    --text-tertiary:#8695A6;   /* 4,8:1 sobre o fundo escuro */
    --kpi-label-color:#9AA7B6;

    --brand:#3FBDB2;
    --brand-strong:#63D2C7;
    --brand-soft:#0E2C2A;
    --brand-on:#04201D;

    --positive:#46C48A;
    --positive-soft:#0E2A1F;
    --positive-on-soft:#46C48A;
    --negative:#E8756C;
    --negative-soft:#2E1614;
    --warning:#D9A150;
    --warning-soft:#2C2109;
    --info:#6BA0E0;
    --info-soft:#122236;
    --neutral-chip-bg:#1B2531;
    --neutral-chip-text:#9AA7B6;

    --dado-1:#3FBDB2; --dado-2:#6BA0E0; --dado-3:#D9A150; --dado-4:#A78BD0;
    --dado-5:#E8756C; --dado-6:#6FBF87; --dado-7:#C2937C; --dado-8:#7FB3C8;

    --id-1:#8E3B34; --id-2:#C2554B; --id-3:#E8756C; --id-4:#F5A39B; --id-5:#FFD3CD;
    --dado-neutro:#5B6878;
    --hz-0:#2A7F78; --hz-30:#3FBDB2; --hz-60:#7DD6CD; --hz-90:#BFEDE8;

    --shadow-md: 0 10px 30px -14px rgba(0,0,0,.7);
    --shadow-lg: 0 28px 70px -28px rgba(0,0,0,.85);
    --ring: 0 0 0 3px color-mix(in srgb, var(--brand) 30%, transparent);
  }
}

:root[data-theme="dark"]{
  color-scheme: dark;
  --bg:#0B0F14;
  --surface:#111821;
  --surface-2:#161F2A;
  --surface-3:#1E2935;
  --border:#202C3A;
  --border-strong:#2C3B4C;
  --linha:#1A242F;

  --text-primary:#E9EEF4;
  --text-secondary:#9AA7B6;
  --text-tertiary:#8695A6;
  --kpi-label-color:#9AA7B6;

  --brand:#3FBDB2;
  --brand-strong:#63D2C7;
  --brand-soft:#0E2C2A;
  --brand-on:#04201D;

  --positive:#46C48A;
  --positive-soft:#0E2A1F;
    --positive-on-soft:#46C48A;
  --negative:#E8756C;
  --negative-soft:#2E1614;
  --warning:#D9A150;
  --warning-soft:#2C2109;
  --info:#6BA0E0;
  --info-soft:#122236;
  --neutral-chip-bg:#1B2531;
  --neutral-chip-text:#9AA7B6;

  --dado-1:#3FBDB2; --dado-2:#6BA0E0; --dado-3:#D9A150; --dado-4:#A78BD0;
  --dado-5:#E8756C; --dado-6:#6FBF87; --dado-7:#C2937C; --dado-8:#7FB3C8;

  --id-1:#8E3B34; --id-2:#C2554B; --id-3:#E8756C; --id-4:#F5A39B; --id-5:#FFD3CD;
  --dado-neutro:#5B6878;
  --hz-0:#2A7F78; --hz-30:#3FBDB2; --hz-60:#7DD6CD; --hz-90:#BFEDE8;

  --shadow-md: 0 10px 30px -14px rgba(0,0,0,.7);
  --shadow-lg: 0 28px 70px -28px rgba(0,0,0,.85);
  --ring: 0 0 0 3px color-mix(in srgb, var(--brand) 30%, transparent);
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  font-family:var(--font-body);
  background:var(--bg);
  color:var(--text-primary);
  line-height:1.45;
  font-size:var(--t-corpo);
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{line-height:1.2; font-weight:600; letter-spacing:-.01em;}
::selection{background:color-mix(in srgb, var(--brand) 25%, transparent);}
a{color:var(--brand); text-underline-offset:2px;}
button{font-family:inherit;}
.num, .mono{font-family:var(--font-mono); font-variant-numeric:tabular-nums; letter-spacing:-.02em;}

/* rótulo de seção/coluna, usado em todo o produto */
.rotulo, .eyebrow{font-size:var(--t-micro); font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--text-tertiary);}

/* esqueleto de carga */
.sk{position:relative; overflow:hidden; background:var(--surface-2); border-radius:var(--radius-md);}
.sk::after{
  content:''; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--surface) 75%, transparent), transparent);
  animation:sk-brilho 1.5s infinite;
}
@keyframes sk-brilho{100%{transform:translateX(100%);}}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important;}
}
