  :root{
    color-scheme: light;
    /* Unifique — azul principal PANTONE 2746C #212492, secundárias PANTONE 299C/319C/101C */
    --page:#f5f7fc; --surface:#ffffff; --surface-2:#eaedf4;
    --ink:#15192b; --ink-secondary:#474c5d; --muted:#767a87;
    --border:rgba(21,25,43,0.12); --border-strong:rgba(21,25,43,0.22);
    --accent:#212492; --accent-strong:#0e0060; --accent-soft:#e4ebff;
    --cat-estrutural:#3FCFD5; --cat-variavel:#212492; --cat-pontual:#00A2FF; --cat-naoclass:#84868c; --cat-estruturalnovo:#b8860b;
    --tipo-opex:#212492; --tipo-capex:#505259;
    --delta-up:#665d00; --delta-down:#212492;
    --good:#0ca30c; --shadow: 0 1px 2px rgba(21,25,43,.06), 0 8px 24px -12px rgba(21,25,43,.18);
  }
  @media (prefers-color-scheme: dark){
    :root:where(:not([data-theme="light"])){
      color-scheme: dark;
      --page:#0a0c12; --surface:#14171f; --surface-2:#20242e;
      --ink:#f1f3fa; --ink-secondary:#c0c4d0; --muted:#858996;
      --border:rgba(255,255,255,0.10); --border-strong:rgba(255,255,255,0.18);
      --accent:#7b92eb; --accent-strong:#9eb3fe; --accent-soft:#222a51;
      --cat-estrutural:#3FCFD5; --cat-variavel:#7b92eb; --cat-pontual:#00A2FF; --cat-naoclass:#787a80; --cat-estruturalnovo:#d6ad1f;
      --tipo-opex:#7b92eb; --tipo-capex:#8f929a;
      --delta-up:#F5EC5A; --delta-down:#7b92eb;
      --good:#22c55e; --shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);
    }
  }
  :root[data-theme="dark"]{
    color-scheme: dark;
    --page:#0a0c12; --surface:#14171f; --surface-2:#20242e;
    --ink:#f1f3fa; --ink-secondary:#c0c4d0; --muted:#858996;
    --border:rgba(255,255,255,0.10); --border-strong:rgba(255,255,255,0.18);
    --accent:#7b92eb; --accent-strong:#9eb3fe; --accent-soft:#222a51;
    --cat-estrutural:#3FCFD5; --cat-variavel:#7b92eb; --cat-pontual:#00A2FF; --cat-naoclass:#787a80; --cat-estruturalnovo:#d6ad1f;
    --tipo-opex:#7b92eb; --tipo-capex:#8f929a;
    --delta-up:#F5EC5A; --delta-down:#7b92eb;
    --good:#22c55e; --shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);
  }
  :root[data-theme="light"]{
    color-scheme: light;
    --page:#f5f7fc; --surface:#ffffff; --surface-2:#eaedf4;
    --ink:#15192b; --ink-secondary:#474c5d; --muted:#767a87;
    --border:rgba(21,25,43,0.12); --border-strong:rgba(21,25,43,0.22);
    --accent:#212492; --accent-strong:#0e0060; --accent-soft:#e4ebff;
    --cat-estrutural:#3FCFD5; --cat-variavel:#212492; --cat-pontual:#00A2FF; --cat-naoclass:#84868c; --cat-estruturalnovo:#b8860b;
    --tipo-opex:#212492; --tipo-capex:#505259;
    --delta-up:#665d00; --delta-down:#212492;
    --good:#0ca30c; --shadow: 0 1px 2px rgba(21,25,43,.06), 0 8px 24px -12px rgba(21,25,43,.18);
  }

  *{ box-sizing:border-box; }
  html,body{ margin:0; padding:0; }
  body{
    background:var(--page); color:var(--ink);
    font-family: "Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
    font-size:14px; line-height:1.45; -webkit-font-smoothing:antialiased;
  }
  .app{ max-width:1320px; margin:0 auto; padding:28px 24px 64px; display:flex; flex-direction:column; gap:20px; }

  h1,h2,h3{ font-weight:650; text-wrap:balance; margin:0; }
  a{ color:inherit; }
  button{ font-family:inherit; }

  .num{ font-variant-numeric: tabular-nums; }

  /* ---------- Header ---------- */
  .topbar{ display:flex; justify-content:space-between; align-items:flex-end; gap:16px; flex-wrap:wrap; }
  .topbar h1{ font-size:26px; letter-spacing:-0.01em; }
  .topbar .eyebrow{ font-size:11.5px; text-transform:uppercase; letter-spacing:.09em; color:var(--accent); font-weight:700; margin:0 0 4px; }
  .topbar .subtitle{ margin:4px 0 0; color:var(--ink-secondary); font-size:13.5px; }
  .topbar-meta{ text-align:right; font-size:12px; color:var(--muted); }
  .topbar-meta strong{ color:var(--ink-secondary); font-weight:650; }

  /* ---------- Tab nav ---------- */
  .tabnav{ display:flex; gap:6px; border-bottom:1px solid var(--border); }
  .tabbtn{
    border:none; background:none; color:var(--muted); font-weight:650; font-size:13.5px;
    padding:10px 4px 12px; cursor:pointer; position:relative; top:1px;
    border-bottom:2px solid transparent;
  }
  .tabbtn:hover{ color:var(--ink-secondary); }
  .tabbtn[aria-selected="true"]{ color:var(--ink); border-bottom-color:var(--accent); }
  .tabbtn:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
  .tabpanel[hidden]{ display:none; }
  .tabpanel{ display:flex; flex-direction:column; gap:20px; }
  .card[hidden]{ display:none; }
  .load-more-row[hidden]{ display:none; }

  /* ---------- Filter bar ---------- */
  .filterbar{
    background:var(--surface); border:1px solid var(--border); border-radius:14px;
    padding:14px 16px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:12px;
    position:sticky; top:12px; z-index:30;
  }
  .filter-row{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
  .filter-label{ font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); font-weight:650; margin-right:2px; white-space:nowrap; }
  .chipset{ display:flex; gap:6px; flex-wrap:wrap; }
  .chip{
    border:1px solid var(--border-strong); background:var(--surface); color:var(--ink-secondary);
    border-radius:999px; padding:5px 12px; font-size:12.5px; font-weight:600; cursor:pointer;
    display:inline-flex; align-items:center; gap:6px; transition:background .12s,color .12s,border-color .12s;
    user-select:none;
  }
  .chip .dot{ width:8px; height:8px; border-radius:50%; background:var(--dotcolor,var(--muted)); flex:none; }
  .chip[aria-pressed="true"]{ background:var(--accent-soft); color:var(--ink); border-color:transparent; }
  .chip:hover{ border-color:var(--accent); }
  .chip:focus-visible{ outline:2px solid var(--accent); outline-offset:1px; }

  select, .text-input{
    border:1px solid var(--border-strong); background:var(--surface); color:var(--ink);
    border-radius:9px; padding:6px 10px; font-size:13px; min-width:150px; max-width:240px;
  }
  select:focus-visible, .text-input:focus-visible{ outline:2px solid var(--accent); outline-offset:1px; }
  .text-input{ min-width:200px; }
  .btn-clear{
    border:1px solid var(--border-strong); background:transparent; color:var(--ink-secondary);
    border-radius:9px; padding:6px 12px; font-size:12.5px; font-weight:600; cursor:pointer;
  }
  .btn-clear:hover{ border-color:var(--accent); color:var(--accent); }
  .filter-status{ font-size:12px; color:var(--muted); margin-left:auto; white-space:nowrap; }
  .filter-status strong{ color:var(--ink); font-weight:700; }

  /* ---------- multi-select (ex.: Natureza) ---------- */
  .msel{ position:relative; display:inline-block; }
  .msel-btn{
    border:1px solid var(--border-strong); background:var(--surface); color:var(--ink);
    border-radius:9px; padding:6px 10px; font-size:13px; min-width:150px; max-width:240px;
    text-align:left; cursor:pointer; display:inline-flex; align-items:center; justify-content:space-between; gap:8px;
  }
  .msel-btn:focus-visible{ outline:2px solid var(--accent); outline-offset:1px; }
  .msel-btn .msel-label{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .msel-btn .msel-caret{ font-size:10px; color:var(--muted); flex:none; }
  .msel-panel{
    position:absolute; top:calc(100% + 4px); left:0; z-index:60; min-width:280px; max-width:340px;
    background:var(--surface); border:1px solid var(--border-strong); border-radius:10px; box-shadow:var(--shadow);
    padding:8px; display:flex; flex-direction:column; gap:6px;
  }
  .msel-panel[hidden]{ display:none; }
  .msel-search{
    border:1px solid var(--border); background:var(--surface); color:var(--ink); border-radius:7px;
    padding:5px 8px; font-size:12.5px; width:100%; box-sizing:border-box;
  }
  .msel-actions{ display:flex; gap:12px; }
  .msel-actions button{ border:none; background:none; color:var(--accent); font-size:11.5px; font-weight:650; cursor:pointer; padding:2px 0; }
  .msel-actions button:hover{ text-decoration:underline; }
  .msel-list{ max-height:230px; overflow:auto; display:flex; flex-direction:column; gap:1px; }
  .msel-opt{ display:flex; align-items:center; gap:8px; padding:5px 6px; border-radius:6px; font-size:12.5px; cursor:pointer; }
  .msel-opt:hover{ background:var(--accent-soft); }
  .msel-opt input{ accent-color:var(--accent); flex:none; }
  .msel-empty{ font-size:12px; color:var(--muted); padding:6px; }

  /* ---------- Cards / layout ---------- */
  .grid-2{ display:grid; grid-template-columns:1.05fr .95fr; gap:16px; }
  .grid-1{ display:grid; grid-template-columns:1fr; gap:16px; }
  @media (max-width:880px){ .grid-2{ grid-template-columns:1fr; } }

  .card{
    background:var(--surface); border:1px solid var(--border); border-radius:14px;
    padding:18px 18px 16px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:12px;
  }
  .card-head{ display:flex; justify-content:space-between; align-items:baseline; gap:8px; flex-wrap:wrap; }
  .card-head h2{ font-size:15px; }
  .card-head .card-note{ font-size:12px; color:var(--muted); }

  /* ---------- KPIs ---------- */
  .kpis{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
  @media (max-width:880px){ .kpis{ grid-template-columns:repeat(2,1fr); } }
  #kpisResumo{ grid-template-columns:repeat(3,1fr); }
  @media (max-width:880px){ #kpisResumo{ grid-template-columns:repeat(1,1fr); } }
  .kpis-3col{ grid-template-columns:repeat(3,1fr); }
  @media (max-width:880px){ .kpis-3col{ grid-template-columns:repeat(1,1fr); } }
  .kpi-catlist{ display:flex; flex-direction:column; gap:5px; margin-top:2px; }
  .kpi-catlist .kc-row{ display:flex; justify-content:space-between; align-items:center; gap:8px; font-size:12px; color:var(--ink-secondary); }
  .kpi-catlist .kc-row .kc-name{ display:flex; align-items:center; gap:6px; }
  .kpi-catlist .kc-row b{ font-weight:700; }
  .kpi-group-label{ font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); font-weight:700; grid-column:1/-1; margin:6px 0 -6px; }
  @media (min-width:881px){ .kpi-group-label:first-child{ margin-top:0; } }
  .kpi{
    background:var(--surface); border:1px solid var(--border); border-radius:14px;
    padding:16px 16px 14px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:8px; min-height:118px;
  }
  .kpi .label{ font-size:11.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); font-weight:650; }
  .kpi .value{ font-size:25px; font-weight:700; letter-spacing:-0.01em; }
  .kpi .sub{ font-size:12px; color:var(--ink-secondary); }
  .kpi .mini-bar{ display:flex; height:8px; border-radius:5px; overflow:hidden; background:var(--surface-2); gap:2px; }
  .kpi .mini-bar span{ display:block; height:100%; border-radius:2px; }
  .kpi .mini-legend{ display:flex; gap:10px; flex-wrap:wrap; font-size:11px; color:var(--ink-secondary); }
  .kpi .mini-legend b{ color:var(--ink); font-weight:700; }
  .kpi .swatch{ width:7px; height:7px; border-radius:50%; display:inline-block; margin-right:4px; }

  /* ---------- Legend ---------- */
  .legend{ display:flex; gap:14px; flex-wrap:wrap; font-size:12px; color:var(--ink-secondary); }
  .legend .item{ display:flex; align-items:center; gap:6px; }
  .legend .swatch{ width:9px; height:9px; border-radius:2px; flex:none; }

  /* ---------- Composição do OBZ 2027 por natureza ---------- */
  .obz-legend-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:18px; }
  .obz-legend-item{ display:flex; gap:10px; align-items:flex-start; }
  .obz-legend-bar{ width:4px; align-self:stretch; min-height:34px; border-radius:3px; background:var(--obz-color); flex:none; }
  .obz-legend-label{ font-size:11px; font-weight:750; letter-spacing:.04em; text-transform:uppercase; color:var(--obz-color); margin-bottom:3px; }
  .obz-legend-desc{ font-size:12px; color:var(--ink-secondary); line-height:1.4; }
  .obz-composicao-wrap{ display:grid; grid-template-columns:1fr 280px; gap:20px; align-items:start; }
  .obz-table-wrap{ overflow-x:auto; border-radius:12px; border:1px solid var(--border); }
  table.obz-comp-table{ width:100%; border-collapse:collapse; font-size:13px; min-width:820px; }
  table.obz-comp-table thead th{
    background:var(--tipo-opex); color:#fff; text-align:right; padding:11px 14px; font-weight:700; font-size:12px;
  }
  table.obz-comp-table thead th:first-child{ text-align:left; }
  table.obz-comp-table td{ padding:9px 14px; text-align:right; border-bottom:1px solid var(--border); font-variant-numeric:tabular-nums; }
  table.obz-comp-table td.obz-ger-name{ text-align:left; font-weight:650; color:var(--ink); }
  table.obz-comp-table tr.obz-section-row td{
    background:var(--cat-estrutural); color:#0a2a2c; font-weight:700; text-align:left; padding:8px 14px; border-bottom:none; font-size:12.5px;
  }
  table.obz-comp-table tr.obz-total-row td{ background:#00A2FF; color:#fff; font-weight:750; border-bottom:none; }
  table.obz-comp-table tr.obz-total-row td.obz-ger-name{ color:#fff; }
  table.obz-comp-table td.obz-var-cell.obz-up{ color:var(--delta-up); font-weight:700; }
  table.obz-comp-table td.obz-var-cell.obz-down{ color:var(--delta-down); font-weight:700; }
  table.obz-comp-table tr.obz-total-row td.obz-var-cell{ color:#fff; }
  .pg-bloco{ margin-top:14px; }
  .pg-bloco+.pg-bloco{ border-top:1px solid var(--border); padding-top:14px; }
  .pg-bloco-title{ font-weight:700; font-size:12.5px; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-secondary); margin-bottom:8px; }
  .an-label{ display:flex; align-items:center; gap:6px; text-align:left; font-weight:600; }
  .an-label .swatch{ width:8px; height:8px; border-radius:2px; flex:none; }
  .an-subtotal-row, .an-total-row{
    display:grid; grid-template-columns:1fr 110px 110px 110px 90px; gap:8px; align-items:center;
    padding:8px 10px; border-radius:8px; font-size:12.5px; font-weight:700;
  }
  .an-subtotal-row{ background:var(--surface-2); margin-top:4px; }
  .an-total-row{ background:#00A2FF; color:#fff; margin-top:16px; }
  .an-total-row .an-label{ color:#fff; }
  @media (max-width:900px){
    .an-subtotal-row, .an-total-row{ grid-template-columns:1fr 90px 90px; }
    .an-subtotal-row span:nth-child(4), .an-subtotal-row span:nth-child(5),
    .an-total-row span:nth-child(4){ display:none; }
  }
  #porGerenciaCards, #porGerenciaCardsCapex{ display:flex; flex-direction:column; gap:20px; }
  #porGerenciaGeralOpex, #porGerenciaGeralCapex{ display:flex; flex-direction:column; gap:16px; margin-bottom:20px; }
  .an-header-row{ display:grid; grid-template-columns:1fr 110px 110px 110px 90px; gap:8px; font-size:11px; font-weight:700; color:var(--muted); padding:4px 10px; }
  .an-header-row .an-num{ text-align:right; }
  details.an-node{ border:1px solid var(--border); border-radius:8px; margin-bottom:6px; background:var(--surface); }
  details.an-node[open]>summary{ border-bottom:1px solid var(--border); }
  details.an-node summary.an-summary{
    display:grid; grid-template-columns:1fr 110px 110px 110px 90px; gap:8px; align-items:center;
    padding:8px 10px; cursor:pointer; list-style:none; font-size:12.5px;
  }
  details.an-node summary.an-summary::-webkit-details-marker{ display:none; }
  /* a seta fica no .an-label (flex), nunca como ::before direto do summary — senão vira um item
     "fantasma" na grid e empurra todas as colunas numéricas uma casa pra direita. */
  details.an-node summary.an-summary .an-label::before{ content:'▸'; margin-right:2px; color:var(--muted); font-size:10px; flex:none; }
  details.an-node[open]>summary.an-summary .an-label::before{ content:'▾'; }
  details.an-node.an-cat > summary.an-summary{ font-weight:700; }
  details.an-node.an-flag{ border-color:#F5EC5A; background:rgba(245,236,90,0.08); }
  .an-label{ min-width:0; }
  .an-label .swatch{ flex:none; }
  .an-num{ text-align:right; font-variant-numeric:tabular-nums; }
  .an-num.up{ color:var(--delta-up); }
  .an-num.down{ color:var(--delta-down); }
  .an-badge{ font-weight:800; }
  /* mesmo recuo (16px) em cada nível — Natureza > Centro de Custo > Conta > (Fornecedor em tabela) —
     pra manter os códigos da hierarquia alinhados à esquerda de forma consistente e previsível. */
  .an-children{ padding:6px 0 6px 16px; }
  table.an-forn-table{ width:100%; border-collapse:collapse; font-size:12px; margin:4px 0; }
  table.an-forn-table th{ text-align:right; font-size:10.5px; color:var(--muted); font-weight:700; padding:4px 8px; border-bottom:1px solid var(--border); }
  table.an-forn-table th:first-child, table.an-forn-table td:first-child{ text-align:left; }
  table.an-forn-table th:last-child, table.an-forn-table td:last-child{ text-align:left; }
  table.an-forn-table td{ padding:5px 8px; border-bottom:1px solid var(--border); text-align:right; font-variant-numeric:tabular-nums; }
  table.an-forn-table td.an-obs{ font-size:11.5px; color:var(--ink-secondary); max-width:360px; }
  table.an-forn-table tr.an-flag-row{ background:rgba(245,236,90,0.12); }
  @media (max-width:900px){
    .an-header-row, details.an-node summary.an-summary{ grid-template-columns:1fr 90px 90px; }
    .an-header-row span:nth-child(4), .an-header-row span:nth-child(5),
    details.an-node summary.an-summary span:nth-child(4){ display:none; }
  }
  /* variante com 5 colunas numéricas — quadro "Destaques 2027 — % sobre a ROB", que compara 2027 e 2026 lado a lado */
  .an-header-row-6{ display:grid; grid-template-columns:1fr 100px 100px 100px 100px 90px; gap:8px; font-size:11px; font-weight:700; color:var(--muted); padding:4px 10px; }
  .an-header-row-6 .an-num{ text-align:right; }
  details.an-node.an-rob > summary.an-summary{ grid-template-columns:1fr 100px 100px 100px 100px 90px; }
  @media (max-width:1000px){
    .an-header-row-6, details.an-node.an-rob > summary.an-summary{ grid-template-columns:1fr 90px 90px; }
    .an-header-row-6 span:nth-child(4), .an-header-row-6 span:nth-child(5), .an-header-row-6 span:nth-child(6),
    details.an-node.an-rob > summary.an-summary span:nth-child(4), details.an-node.an-rob > summary.an-summary span:nth-child(5), details.an-node.an-rob > summary.an-summary span:nth-child(6){ display:none; }
  }
  /* variante do an-node com coluna de Observações — usada na aba "Detalhe por Natureza" (nível topo = natureza) */
  .an-header-row-obs{ display:grid; grid-template-columns:1.3fr 105px 105px 105px 80px 2.4fr; gap:8px; font-size:11px; font-weight:700; color:var(--muted); padding:4px 10px; }
  .an-header-row-obs .an-num{ text-align:right; }
  details.an-node.an-natobs > summary.an-summary{ grid-template-columns:1.3fr 105px 105px 105px 80px 2.4fr; }
  details.an-node.an-natobs > summary.an-summary .an-obs-cell{ font-size:11.5px; color:var(--ink-secondary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  @media (max-width:1100px){
    .an-header-row-obs, details.an-node.an-natobs > summary.an-summary{ grid-template-columns:1fr 90px 90px; }
    .an-header-row-obs span:nth-child(4), .an-header-row-obs span:nth-child(5), .an-header-row-obs span:nth-child(6),
    details.an-node.an-natobs > summary.an-summary span:nth-child(4), details.an-node.an-natobs > summary.an-summary span:nth-child(5), details.an-node.an-natobs > summary.an-summary .an-obs-cell{ display:none; }
  }
  /* totalizador de cada quadro da aba "Detalhe por Natureza" — soma o recorte já filtrado por categoria OBZ */
  .an-total-row-obs{ background:#00A2FF; border-radius:8px; margin-top:8px; }
  .an-total-row-obs .an-summary{ display:grid; grid-template-columns:1.3fr 105px 105px 105px 80px 2.4fr; gap:8px; align-items:center; padding:8px 10px; font-size:12.5px; font-weight:700; }
  .an-total-row-obs .an-label, .an-total-row-obs .an-num, .an-total-row-obs .an-obs-cell{ color:#fff; }
  .an-total-row-obs .an-num{ text-align:right; font-variant-numeric:tabular-nums; }
  @media (max-width:1100px){
    .an-total-row-obs .an-summary{ grid-template-columns:1fr 90px 90px; }
    .an-total-row-obs .an-summary span:nth-child(4), .an-total-row-obs .an-summary span:nth-child(5), .an-total-row-obs .an-obs-cell{ display:none; }
  }

  .obz-donut-panels{ display:flex; flex-direction:column; gap:14px; }
  .obz-donut-card{ background:var(--surface-2); border:1px solid var(--border); border-radius:12px; padding:16px; }
  .obz-donut-title{ font-size:11px; font-weight:750; letter-spacing:.05em; text-transform:uppercase; color:var(--muted); margin-bottom:12px; }
  .obz-donut-row{ display:flex; align-items:center; gap:8px; padding:6px 0; font-size:13px; }
  .obz-donut-dot{ width:11px; height:11px; border-radius:50%; flex:none; }
  .obz-donut-label{ flex:1; color:var(--ink); }
  .obz-donut-pct{ font-weight:750; color:var(--ink); font-variant-numeric:tabular-nums; }
  @media (max-width:900px){
    .obz-legend-row{ grid-template-columns:repeat(2,1fr); }
    .obz-composicao-wrap{ grid-template-columns:1fr; }
  }

  /* ---------- Stacked bar rows (composition) ---------- */
  .stack-rows{ display:flex; flex-direction:column; gap:14px; }
  .stack-row{ display:flex; align-items:center; gap:10px; }
  .stack-row .rlabel{ width:64px; flex:none; font-size:12.5px; font-weight:650; color:var(--ink-secondary); }
  .stack-track-wrap{ flex:1; min-width:0; }
  .stack-track{ height:26px; border-radius:6px; background:var(--surface-2); display:flex; gap:2px; overflow:hidden; }
  .stack-seg{ height:100%; position:relative; cursor:pointer; transition:filter .1s; }
  .stack-seg:hover, .stack-seg:focus-visible{ filter:brightness(1.08); outline:none; }
  .stack-row .rvalue{ width:96px; flex:none; text-align:right; font-size:12.5px; font-weight:700; color:var(--ink); }

  /* ---------- Bar list (natureza ranking) ---------- */
  .barlist{ display:flex; flex-direction:column; gap:9px; }
  .barlist-row{ display:grid; grid-template-columns:180px 1fr 92px; align-items:center; gap:10px; }
  .barlist-row .blabel{ font-size:12.5px; color:var(--ink-secondary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .barlist-track{ height:16px; background:var(--surface-2); border-radius:4px; overflow:hidden; }
  .barlist-fill{ height:100%; border-radius:4px 2px 2px 4px; background:var(--accent); min-width:2px; cursor:pointer; }
  .barlist-fill-wrap{ display:flex; height:100%; border-radius:4px 2px 2px 4px; overflow:hidden; min-width:2px; }
  .barlist-seg{ height:100%; cursor:pointer; transition:filter .1s; }
  .barlist-seg:hover, .barlist-seg:focus-visible{ filter:brightness(1.08); outline:none; }
  .barlist-row .bvalue{ font-size:12px; font-weight:700; text-align:right; color:var(--ink); }
  @media (max-width:640px){ .barlist-row{ grid-template-columns:110px 1fr 76px; } .barlist-row .blabel{ font-size:11.5px; } }

  /* ---------- Trend chart ---------- */
  .trend-wrap{ position:relative; }
  svg.trend-svg{ width:100%; height:190px; display:block; overflow:visible; }
  .trend-grid line{ stroke:var(--border); stroke-width:1; }
  .trend-area{ fill:var(--accent); opacity:.10; }
  .trend-line{ fill:none; stroke:var(--accent); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .trend-dot{ fill:var(--accent); stroke:var(--surface); stroke-width:2; cursor:pointer; }
  .trend-axis text{ fill:var(--muted); font-size:10.5px; font-family:inherit; }
  .trend-endlabel{ fill:var(--ink); font-size:12px; font-weight:700; font-family:inherit; }

  /* ---------- Tooltip ---------- */
  .tooltip{
    position:fixed; z-index:100; pointer-events:none; background:var(--ink); color:var(--page);
    border-radius:8px; padding:8px 10px; font-size:12px; box-shadow:var(--shadow); max-width:240px;
    transform:translate(-50%,-100%); margin-top:-10px;
  }
  :root[data-theme="dark"] .tooltip{ background:var(--surface-2); color:var(--ink); border:1px solid var(--border-strong); }
  @media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .tooltip{ background:var(--surface-2); color:var(--ink); border:1px solid var(--border-strong); } }
  .tooltip .tt-title{ font-weight:700; margin-bottom:2px; color:var(--page); }
  .tooltip .tt-row{ display:flex; align-items:center; gap:6px; }
  .tooltip .tt-key{ width:10px; height:2px; border-radius:1px; flex:none; }
  .tooltip .tt-val{ font-weight:700; margin-left:auto; }

  /* ---------- Matrix (gerência x centro de custo) ---------- */
  .matrix-list{ display:flex; flex-direction:column; gap:10px; }
  details.ger-block{ border:1px solid var(--border); border-radius:10px; overflow:hidden; }
  details.ger-block summary{
    list-style:none; cursor:pointer; padding:11px 14px; background:var(--surface-2);
    display:grid; grid-template-columns:1fr 100px 92px 92px 130px 60px; gap:10px; align-items:center;
    font-size:12.5px;
  }
  details.ger-block summary::-webkit-details-marker{ display:none; }
  details.ger-block summary .caret{ display:inline-block; width:10px; margin-right:8px; transition:transform .15s; color:var(--muted); }
  details.ger-block[open] summary .caret{ transform:rotate(90deg); }
  .g-name{ font-weight:700; color:var(--ink); }
  .g-name small{ display:block; font-weight:500; color:var(--muted); font-size:11px; margin-top:1px; }
  .matrix-mix{ display:flex; height:8px; border-radius:4px; overflow:hidden; background:var(--surface); gap:1px; }
  .matrix-mix span{ display:block; height:100%; }
  .heat-cell{ border-radius:6px; padding:3px 6px; text-align:right; font-weight:700; }

  table.cc-table{ width:100%; border-collapse:collapse; font-size:12.5px; }
  table.cc-table th{ text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:650; padding:8px 14px; border-bottom:1px solid var(--border); }
  table.cc-table td{ padding:7px 14px; border-bottom:1px solid var(--border); vertical-align:middle; }
  table.cc-table tr:last-child td{ border-bottom:none; }
  table.cc-table td.tnum, table.cc-table th.tnum{ text-align:right; font-variant-numeric:tabular-nums; }
  table.cc-table td.cc-name{ color:var(--ink-secondary); }
  table.cc-table td.cc-name small{ display:block; font-weight:500; color:var(--muted); font-size:10.5px; margin-top:1px; font-variant-numeric:tabular-nums; }
  table.cc-table td.cc-just{ font-size:11px; color:var(--ink-secondary); max-width:280px; }
  .matrix-scroll{ overflow-x:auto; }
  .matrix-head-row{ display:none; }
  @media (min-width:680px){ .matrix-head-row{ display:grid; grid-template-columns:1fr 100px 92px 92px 130px 60px; gap:10px; padding:0 14px; font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:650; } }

  .toolbar-mini{ display:flex; gap:8px; align-items:center; font-size:12px; }
  .link-btn{ background:none; border:none; color:var(--accent); font-weight:650; cursor:pointer; font-size:12px; padding:0; }
  .link-btn:hover{ text-decoration:underline; }

  /* ---------- Highlights ---------- */
  .highlights{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
  @media (max-width:960px){ .highlights{ grid-template-columns:repeat(2,1fr); } }
  @media (max-width:640px){ .highlights{ grid-template-columns:1fr; } }
  .hl-card{ background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:16px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:8px; }
  .hl-card.alert{ border-color:color-mix(in srgb, var(--cat-pontual) 45%, var(--border)); background:color-mix(in srgb, var(--cat-pontual) 6%, var(--surface)); }
  .hl-tag{ font-size:10.5px; text-transform:uppercase; letter-spacing:.07em; font-weight:700; color:var(--accent); }
  .hl-card.alert .hl-tag{ color:var(--cat-pontual); }
  .hl-title{ font-size:14px; font-weight:650; }
  .hl-value{ font-size:21px; font-weight:750; }
  .hl-sub{ font-size:12px; color:var(--ink-secondary); }
  .hl-detail{ font-size:11.5px; color:var(--ink-secondary); border-top:1px solid var(--border); padding-top:8px; margin-top:2px; line-height:1.5; }
  .hl-list{ display:flex; flex-direction:column; gap:6px; margin-top:2px; }
  .hl-list .hli{ display:flex; justify-content:space-between; gap:10px; font-size:12px; border-top:1px dashed var(--border); padding-top:6px; }
  .hl-list .hli:first-child{ border-top:none; padding-top:0; }
  .hl-list .hli .n{ color:var(--ink-secondary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .hl-list .hli .v{ font-weight:700; flex:none; }

  .empty-state{ text-align:center; color:var(--muted); padding:24px; font-size:13px; }

  footer.appfoot{ text-align:center; color:var(--muted); font-size:11.5px; padding-top:8px; }

  /* ---------- Approval summary tab ---------- */
  .cover-card{
    display:flex; gap:14px; align-items:flex-start; background:color-mix(in srgb, var(--cat-pontual) 7%, var(--surface));
    border:1px solid color-mix(in srgb, var(--cat-pontual) 40%, var(--border)); border-radius:14px; padding:16px 18px; box-shadow:var(--shadow);
  }
  .cover-card .cover-icon{ font-size:19px; line-height:1; flex:none; margin-top:1px; }
  .cover-card h3{ font-size:14px; margin:0 0 4px; }
  .cover-card p{ margin:0; font-size:12.5px; color:var(--ink-secondary); line-height:1.55; }
  .cover-card p + p{ margin-top:6px; }
  .cover-card b{ color:var(--ink); }

  .kpi.kpi-lg .value{ font-size:27px; }
  .kpi .tag{ font-size:10.5px; text-transform:uppercase; letter-spacing:.06em; font-weight:700; padding:2px 7px; border-radius:5px; background:var(--surface-2); color:var(--ink-secondary); display:inline-block; }
  .kpi .tag.warn{ background:color-mix(in srgb, var(--cat-pontual) 16%, var(--surface-2)); color:var(--cat-pontual); }

  table.bridge-table{ width:100%; border-collapse:collapse; font-size:12.5px; }
  table.bridge-table th{ text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:650; padding:8px 12px; border-bottom:1px solid var(--border); }
  table.bridge-table td{ padding:8px 12px; border-bottom:1px solid var(--border); vertical-align:middle; }
  table.bridge-table tr:last-child td{ border-bottom:none; }
  table.bridge-table td.tnum, table.bridge-table th.tnum{ text-align:right; font-variant-numeric:tabular-nums; }
  .delta-val{ font-weight:700; }
  .delta-val.up{ color:var(--delta-up); }
  .delta-val.down{ color:var(--delta-down); }
  .delta-bar-wrap{ display:flex; align-items:center; justify-content:flex-end; height:14px; min-width:90px; }
  .delta-bar{ height:8px; border-radius:3px; }
  .delta-bar.up{ background:var(--delta-up); }
  .delta-bar.down{ background:var(--delta-down); }
  .badge-partial{ font-size:10.5px; font-weight:700; color:var(--cat-pontual); background:color-mix(in srgb, var(--cat-pontual) 14%, transparent); border-radius:5px; padding:2px 6px; white-space:nowrap; }
  .badge-nodata{ font-size:10.5px; font-weight:650; color:var(--muted); }

  .compare-bars{ display:flex; flex-direction:column; gap:16px; }
  .compare-row .clabel{ font-size:12.5px; font-weight:650; color:var(--ink-secondary); margin-bottom:6px; display:flex; justify-content:space-between; }
  .compare-track{ display:flex; flex-direction:column; gap:4px; }
  .compare-bar-line{ display:flex; align-items:center; gap:8px; }
  .compare-bar-line .bl-tag{ width:74px; flex:none; font-size:11px; color:var(--muted); }
  .compare-bar-line .bl-track{ flex:1; height:14px; background:var(--surface-2); border-radius:4px; overflow:hidden; }
  .compare-bar-line .bl-fill{ height:100%; border-radius:4px; }
  .compare-bar-line .bl-val{ width:88px; flex:none; text-align:right; font-size:12px; font-weight:700; }

  .note-box{ font-size:12px; color:var(--ink-secondary); background:var(--surface-2); border-radius:10px; padding:10px 12px; line-height:1.55; }
  .note-box b{ color:var(--ink); }

  /* ---------- Estilo "quadro de premissas" (numerados, coloridos) ---------- */
  .card-badge-head{ display:flex !important; align-items:center; gap:10px; }
  .card-num-badge{
    width:24px; height:24px; border-radius:50%; flex:none; display:inline-flex; align-items:center; justify-content:center;
    font-size:12px; font-weight:800; color:#fff; background:var(--accent);
  }
  .card-accent{ border-top:4px solid var(--card-accent,var(--accent)); }
  .note-box.note-dark{
    background:var(--accent); color:#fff; border-radius:12px;
  }
  .note-box.note-dark b{ color:#F5EC5A; }
  .grp-header-row td{
    padding:9px 12px !important; font-size:11px; text-transform:uppercase; letter-spacing:.05em; font-weight:800 !important;
    border-bottom:none !important; border-left:4px solid var(--grp-color,var(--accent));
    background:color-mix(in srgb, var(--grp-color,var(--accent)) 12%, var(--surface-2)); color:var(--grp-color,var(--accent));
  }

  /* ---------- Quadro no estilo do Excel "Análise da Receita.xlsx" (cores exatas da planilha) ---------- */
  .xlsx-table{ width:100%; border-collapse:separate; border-spacing:3px; font-size:12.5px; }
  .xlsx-table th, .xlsx-table td{ padding:9px 10px; text-align:right; border-radius:4px; font-variant-numeric:tabular-nums; white-space:nowrap; }
  .xlsx-table th:first-child, .xlsx-table td:first-child{ text-align:left; }
  .xlsx-table th{ background:#212492; color:#fff; font-weight:700; font-size:11px; text-transform:none; letter-spacing:0; }
  .xlsx-table th.xlsx-hl{ background:#66C7FF; color:#212492; }
  .xlsx-table td.xlsx-label{ background:#212492; color:#fff; font-weight:700; }
  .xlsx-table td.xlsx-val{ background:#CCECFF; color:#212492; font-weight:700; }
  .xlsx-table td.xlsx-val.xlsx-plain{ color:#1a1a1a; font-weight:400; }
  .xlsx-table td.xlsx-group{ background:#CCECFF; color:#1a1a1a; font-weight:400; text-align:left; }
  .xlsx-table tr.xlsx-total td{ background:transparent; color:#212492; font-weight:800; border-radius:0; border-top:2px solid #212492; }
  .xlsx-footnote{ font-size:11px; color:var(--ink-secondary); margin-top:8px; line-height:1.5; }

  /* ---------- Natureza > Gerência > Centro de custo drill-down ---------- */
  .nat-list{ display:flex; flex-direction:column; gap:8px; }
  .ger-compare-list{ display:flex; flex-direction:column; gap:12px; }
  details.ger-compare-block{ border:1px solid var(--border); border-radius:10px; overflow:hidden; background:var(--surface); box-shadow:var(--shadow); }
  details.ger-compare-block summary{
    list-style:none; cursor:pointer; padding:14px 16px; background:var(--surface-2);
    display:flex; flex-direction:column; gap:6px; font-size:13px;
  }
  details.ger-compare-block summary .gcb-row{ display:grid; grid-template-columns:1fr 130px 150px 110px; gap:14px; align-items:center; }
  details.ger-compare-block summary::-webkit-details-marker{ display:none; }
  details.ger-compare-block summary .caret{ display:inline-block; width:10px; margin-right:8px; transition:transform .15s; color:var(--muted); }
  details.ger-compare-block[open] summary .caret{ transform:rotate(90deg); }
  details.ger-compare-block summary .gcb-name{ font-weight:700; font-size:13.5px; }
  details.ger-compare-block summary .gcb-impact-wrap{ display:flex; justify-content:flex-end; }
  details.ger-compare-block summary .gcb-impact{
    display:inline-flex; flex-direction:column; gap:2px; max-width:min(70%,620px);
    padding:7px 12px; border-radius:9px; font-size:11.5px; line-height:1.5; text-align:left;
    background:color-mix(in srgb, var(--gcb-accent) 10%, var(--surface));
    border-left:3px solid var(--gcb-accent);
    color:var(--ink-secondary);
    white-space:normal; overflow-wrap:break-word;
  }
  details.ger-compare-block summary .gcb-impact-label{ font-weight:700; color:var(--gcb-accent); text-transform:uppercase; letter-spacing:.04em; font-size:9.5px; }
  details.ger-compare-block summary .gcb-impact-just{ color:var(--muted); }
  .gcb-impact-metrica{ color:var(--brand,#00A2FF); font-style:italic; }
  .ger-compare-body{ padding:16px; display:flex; flex-direction:column; gap:16px; }
  @media (max-width:640px){
    details.ger-compare-block summary .gcb-row{ grid-template-columns:1fr; row-gap:4px; }
    details.ger-compare-block summary .gcb-impact{ max-width:100%; }
  }

  details.nat-block{ border:1px solid var(--border); border-radius:10px; overflow:hidden; }
  details.nat-block summary{
    list-style:none; cursor:pointer; padding:11px 14px; background:var(--surface-2);
    display:grid; grid-template-columns:1fr 110px 110px 150px; gap:10px; align-items:center; font-size:12.5px;
  }
  details.nat-block summary::-webkit-details-marker{ display:none; }
  details.nat-block summary .caret{ display:inline-block; width:10px; margin-right:8px; transition:transform .15s; color:var(--muted); }
  details.nat-block[open] summary .caret{ transform:rotate(90deg); }
  .nat-body{ padding:10px 14px 14px 28px; display:flex; flex-direction:column; gap:7px; }

  details.ger-subblock{ border:1px solid var(--border); border-radius:8px; overflow:hidden; }
  details.ger-subblock summary{
    list-style:none; cursor:pointer; padding:9px 12px; background:var(--surface);
    display:grid; grid-template-columns:1fr 100px 100px 140px; gap:10px; align-items:center; font-size:12px;
  }
  details.ger-subblock summary::-webkit-details-marker{ display:none; }
  details.ger-subblock summary .caret{ display:inline-block; width:9px; margin-right:6px; font-size:10px; transition:transform .15s; color:var(--muted); }
  details.ger-subblock[open] summary .caret{ transform:rotate(90deg); }
  .nat-list-scroll{ overflow-x:auto; }
  .nat-list-scroll .nat-list{ min-width:560px; }
  .nat-subblock-wrap{ display:flex; flex-direction:column; gap:6px; padding:8px 0 4px 18px; margin-top:6px; border-left:2px solid var(--border); }
  details.nat-subblock summary{ font-size:11.5px; background:var(--surface-2); }
  .conta-subblock-wrap{ display:flex; flex-direction:column; gap:6px; padding:8px 0 4px 18px; margin-top:6px; border-left:2px solid var(--border); }
  details.conta-subblock summary{ font-size:11px; background:var(--page); }

  /* ---------- Base de dados (drill-down) tab ---------- */
  .data-table-wrap{ display:flex; flex-direction:column; }
  .data-head-row, .data-row{
    display:grid; grid-template-columns:26px 1.3fr 1fr 1fr 96px 84px 84px 108px; gap:10px; align-items:center;
    padding:9px 12px;
  }
  .data-head-row{ font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:650; border-bottom:1px solid var(--border); }
  .data-row{ border-bottom:1px solid var(--border); cursor:pointer; font-size:12.5px; user-select:none; }
  .data-row:hover{ background:var(--surface-2); }
  .data-row .chevron{ color:var(--muted); transition:transform .15s; font-size:11px; }
  .data-row[aria-expanded="true"] .chevron{ transform:rotate(90deg); color:var(--ink); }
  .data-row .dr-main{ overflow:hidden; }
  .data-row .dr-main .dr-title{ color:var(--ink); font-weight:650; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .data-row .dr-main .dr-sub{ color:var(--muted); font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin-top:1px; }
  .data-row .dr-nat, .data-row .dr-forn{ color:var(--ink-secondary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .cat-pill{ display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:650; white-space:nowrap; }
  .cat-pill .dot{ width:7px; height:7px; border-radius:50%; flex:none; }
  .tipo-pill{ font-size:10.5px; font-weight:700; padding:2px 7px; border-radius:5px; white-space:nowrap; justify-self:start; }
  .data-row .dr-val{ text-align:right; font-weight:700; color:var(--ink); }
  @media (max-width:900px){
    .data-head-row, .data-row{ grid-template-columns:20px 1.3fr 1fr 90px 76px 84px; }
    .data-head-row span:nth-child(5), .data-head-row span:nth-child(7),
    .data-row .dr-forn, .data-row .tipo-pill{ display:none; }
  }

  .data-detail{ display:none; padding:14px 16px 16px 48px; background:var(--surface-2); border-bottom:1px solid var(--border); font-size:12.5px; }
  .data-detail.open{ display:block; }
  .data-detail-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:12px 20px; margin-bottom:12px; }
  .data-detail-grid .dd-item .dd-label{ font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:650; margin-bottom:2px; }
  .data-detail-grid .dd-item .dd-val{ color:var(--ink); }
  .comment-box{
    background:var(--surface); border-left:3px solid var(--accent); border-radius:0 8px 8px 0;
    padding:10px 12px; margin-top:4px; font-size:12.5px; color:var(--ink-secondary); line-height:1.55;
  }
  .comment-box .cb-label{ font-size:10.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--accent); font-weight:700; margin-bottom:4px; }
  .comment-box.empty{ color:var(--muted); font-style:italic; border-left-color:var(--border-strong); }
  .mini-months{ display:grid; grid-template-columns:repeat(12,1fr); gap:4px; margin-top:10px; }
  .mini-months .mm{ text-align:center; }
  .mini-months .mm .mm-bar-wrap{ height:36px; display:flex; align-items:flex-end; background:var(--surface); border-radius:3px; overflow:hidden; }
  .mini-months .mm .mm-bar{ width:100%; background:var(--accent); border-radius:2px 2px 0 0; min-height:2px; }
  .mini-months .mm .mm-lbl{ font-size:9.5px; color:var(--muted); margin-top:3px; }
  .mini-months .mm .mm-val{ font-size:9px; color:var(--ink-secondary); font-variant-numeric:tabular-nums; }

  .load-more-row{ display:flex; justify-content:center; padding:16px 0 4px; }
  .load-more-btn{
    border:1px solid var(--border-strong); background:var(--surface); color:var(--ink); border-radius:9px;
    padding:8px 18px; font-size:12.5px; font-weight:650; cursor:pointer;
  }
  .load-more-btn:hover{ border-color:var(--accent); color:var(--accent); }

  /* ---------- Métricas (simulação) tab ---------- */
  .driver-list{ display:flex; flex-direction:column; gap:14px; }
  .driver-card{
    display:flex; flex-direction:column; gap:10px;
    padding:14px 16px; border:1px solid var(--border); border-radius:10px; background:var(--surface);
  }
  .driver-card.is-revenue{ border-color:color-mix(in srgb, var(--accent) 40%, var(--border)); background:color-mix(in srgb, var(--accent) 5%, var(--surface)); }
  .driver-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; }
  .driver-card .dc-name{ font-weight:650; color:var(--ink); font-size:13.5px; }
  .driver-card .dc-scope{ font-size:11px; color:var(--muted); margin-top:2px; }
  .driver-summary{ display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
  .driver-summary .ds-item{ font-size:12px; color:var(--ink-secondary); text-align:right; }
  .driver-summary .ds-item b{ color:var(--ink); }
  .driver-factor{ font-weight:700; font-size:13.5px; }
  .driver-factor.up{ color:var(--delta-up); }
  .driver-factor.down{ color:var(--delta-down); }
  .month-grid-wrap{ overflow-x:auto; }
  .month-grid{ display:grid; grid-template-columns:repeat(12, minmax(72px,1fr)); gap:6px; min-width:640px; }
  .month-cell{ display:flex; flex-direction:column; gap:3px; }
  .month-cell .mc-lbl{ font-size:9.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); font-weight:650; text-align:center; }
  .month-cell .mc-base{ font-size:9.5px; color:var(--muted); text-align:center; font-variant-numeric:tabular-nums; }
  .month-cell input{
    border:1px solid var(--border-strong); background:var(--surface); color:var(--ink); border-radius:6px;
    padding:5px 4px; font-size:11.5px; font-variant-numeric:tabular-nums; width:100%; text-align:center;
  }
  .month-cell input:focus-visible{ outline:2px solid var(--accent); outline-offset:1px; }
  .month-cell input.changed{ border-color:var(--accent); background:var(--accent-soft); font-weight:700; }
  .month-cell .derived-val{
    border:1px dashed var(--border-strong); background:var(--surface-2); color:var(--ink-secondary); border-radius:6px;
    padding:5px 4px; font-size:11.5px; font-variant-numeric:tabular-nums; width:100%; text-align:center; box-sizing:border-box;
  }
  .month-cell .derived-val.changed{ border-color:var(--accent); background:var(--accent-soft); color:var(--ink); font-weight:700; }
  .dc-derived-tag{ font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--accent); }
  .month-cell .mc-lbl2{ font-size:8.5px; text-transform:uppercase; letter-spacing:.03em; color:var(--accent); font-weight:650; text-align:center; margin-top:3px; padding-top:3px; border-top:1px dashed var(--border); }
  .month-cell input.growth-input{ border-color:var(--accent); }
  .driver-btnrow{ display:flex; gap:8px; }
  .btn-mini{
    border:1px solid var(--border-strong); background:var(--surface); color:var(--ink-secondary); border-radius:7px;
    padding:4px 10px; font-size:11px; font-weight:650; cursor:pointer;
  }
  .btn-mini:hover{ border-color:var(--accent); color:var(--accent); }

  /* ---------- Comentários tab ---------- */
  .cc-name-hdr{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:650; margin:2px 0 4px; padding-left:2px; }
  .comment-leaf{ border:1px solid var(--border); border-radius:10px; padding:12px 14px; background:var(--surface); display:flex; flex-direction:column; gap:8px; margin-bottom:8px; }
  .comment-leaf .cl-head{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; }
  .comment-leaf .cl-conta{ font-weight:650; color:var(--ink); font-size:12.5px; }
  .comment-leaf .cl-forn{ color:var(--muted); font-size:11.5px; }
  .comment-leaf .cl-val{ font-weight:700; color:var(--ink); font-size:12.5px; white-space:nowrap; }
  .comment-leaf .comment-box{ margin:0; }
  .comment-badge{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 6px; border-radius:5px; background:color-mix(in srgb, var(--cat-pontual) 16%, transparent); color:var(--cat-pontual); }

  /* ---------- Despesa x ROB (tab Orçado) ---------- */
  .rob-line{ fill:none; stroke:var(--cat-pontual); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:5 4; }
  .rob-ratio-row{ display:grid; grid-template-columns:repeat(12,1fr); gap:4px; margin-top:10px; }
  .rob-ratio-row .rr-cell{ text-align:center; font-size:11px; }
  .rob-ratio-row .rr-cell .rr-m{ color:var(--muted); font-size:9.5px; text-transform:uppercase; }
  .rob-ratio-row .rr-cell .rr-v{ font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; }
  .rob-empty-note{ text-align:center; color:var(--muted); font-size:12.5px; padding:14px; background:var(--surface-2); border-radius:10px; }

  .macro-table-wrap{ overflow-x:auto; }
  table.macro-table{ width:100%; border-collapse:collapse; font-size:12.5px; }
  table.macro-table th{ text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:650; padding:8px 12px; border-bottom:1px solid var(--border); }
  table.macro-table td{ padding:7px 12px; border-bottom:1px solid var(--border); font-variant-numeric:tabular-nums; }
  table.macro-table td.diverge{ color:var(--delta-up); font-weight:700; }
  table.macro-table tr:last-child td{ border-bottom:none; }

  .btn-reset{
    border:1px solid var(--border-strong); background:var(--surface); color:var(--ink-secondary); border-radius:9px;
    padding:7px 14px; font-size:12.5px; font-weight:650; cursor:pointer;
  }
  .btn-reset:hover{ border-color:var(--accent); color:var(--accent); }

  .disclaimer-banner{
    background:rgba(245,236,90,0.16); border:1px solid #F5EC5A; border-radius:10px;
    padding:10px 16px; font-size:12.5px; color:var(--ink); line-height:1.5;
  }

.login-screen{
  min-height: 100vh; display:flex; align-items:center; justify-content:center;
  background: var(--page); padding: 24px;
}
.login-screen[hidden]{ display:none; }
.login-card{
  width: 100%; max-width: 380px; background: var(--surface); border: 1px solid var(--border);
  border-radius: 14px; padding: 32px 28px; box-shadow: var(--shadow);
}
.login-card .eyebrow{ margin-bottom: 4px; }
.login-card h1{ font-size: 20px; margin: 0 0 6px; }
.login-card p.subtitle{ margin: 0 0 24px; }
.login-field{ margin-bottom: 16px; }
.login-field label{ display:block; font-size: 12.5px; color: var(--ink-secondary); margin-bottom: 6px; }
.login-field input{
  width: 100%; box-sizing: border-box; padding: 10px 12px; border-radius: 8px;
  border: 1px solid var(--border-strong); background: var(--surface); color: var(--ink); font-size: 14px;
}
.login-field input:focus{ outline: 2px solid var(--accent); outline-offset: 1px; }
.login-submit{
  width: 100%; padding: 11px; border-radius: 8px; border: none; background: var(--accent);
  color: #fff; font-weight: 600; font-size: 14px; cursor: pointer; margin-top: 4px;
}
.login-submit:disabled{ opacity: 0.6; cursor: default; }
.login-error{
  background: #fdeaea; border: 1px solid #e5a0a0; color: #8a1f1f; border-radius: 8px;
  padding: 10px 12px; font-size: 12.5px; margin-bottom: 16px;
}
.logged-user-bar{ display:flex; align-items:center; gap: 10px; font-size: 12.5px; color: var(--muted); }
.logged-user-bar button{
  background: none; border: 1px solid var(--border-strong); border-radius: 6px; padding: 4px 10px;
  cursor: pointer; color: var(--ink-secondary); font-size: 12px;
}
