  :root{
    color-scheme: light;
    /* ---- tema azul e branco ---- */
    --bg:#f3f7fc;
    --surface:#ffffff;
    --brand-900:#0d2f5e;
    --brand-800:#123e7d;
    --brand-700:#1c5cab;
    --brand-600:#2465c2;
    --brand-500:#2a78d6;
    --brand-100:#dce9f9;
    --brand-50:#eef5fc;
    --text:#132238;
    --text-2:#4a5c74;
    --muted:#5d6f88;
    --line:#dfe8f4;
    --grid:#e8eef7;
    --axis:#c9d6e8;
    /* séries do gráfico (validadas p/ daltonismo sobre branco) */
    --ent:#2a78d6;
    --sai:#e34948;
    /* status (texto) */
    --pos:#006300;
    --neg:#d03b3b;
    --shadow:0 1px 2px rgba(13,47,94,.06), 0 4px 16px rgba(13,47,94,.06);
    --radius:14px;
  }
  *{box-sizing:border-box}
  html,body{margin:0;padding:0}
  body{
    background:var(--bg);
    color:var(--text);
    font-family:system-ui,-apple-system,"Segoe UI",sans-serif;
    font-size:14px;
    line-height:1.45;
  }
  button{font:inherit;cursor:pointer}
  input,select{font:inherit;color:var(--text)}
  :focus-visible{outline:2px solid var(--brand-500);outline-offset:2px;border-radius:6px}

  /* ================= header ================= */
  header.app{
    background:linear-gradient(120deg,var(--brand-900),var(--brand-700));
    color:#fff;
    padding:18px 24px;
  }
  .app-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
  .logo{
    width:40px;height:40px;border-radius:11px;background:rgba(255,255,255,.14);
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
  }
  .brand h1{font-size:18px;margin:0;font-weight:700;letter-spacing:.2px}
  .brand p{margin:0;font-size:12px;color:rgba(255,255,255,.75)}
  .header-spacer{flex:1}
  .saldo-geral{
    background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.22);
    border-radius:12px;padding:8px 16px;text-align:right;
  }
  .saldo-geral .lbl{font-size:11px;color:rgba(255,255,255,.78);letter-spacing:.3px}
  .saldo-geral .val{font-size:18px;font-weight:700}
  .header-actions{display:flex;gap:8px}
  .btn-ghost-w{
    background:transparent;border:1px solid rgba(255,255,255,.35);color:#fff;
    border-radius:9px;padding:7px 12px;font-size:12.5px;
  }
  .btn-ghost-w:hover{background:rgba(255,255,255,.12)}

  main{max-width:1200px;margin:0 auto;padding:20px 24px 48px;display:flex;flex-direction:column;gap:18px}

  .card{
    background:var(--surface);
    border:1px solid var(--line);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    padding:18px 20px;
  }
  .card h2{font-size:15px;margin:0 0 4px;font-weight:650}
  .card .sub{font-size:12px;color:var(--muted);margin:0 0 14px}

  /* ================= topo: form + empresas ================= */
  .top-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:18px}
  @media (max-width:900px){.top-grid{grid-template-columns:1fr}}

  .field{display:flex;flex-direction:column;gap:5px;min-width:0}
  .field label{font-size:12px;font-weight:600;color:var(--text-2)}
  .field input,.field select{
    border:1px solid var(--line);border-radius:9px;padding:9px 11px;background:#fff;
    width:100%;min-width:0;
  }
  .field input:focus,.field select:focus{border-color:var(--brand-500);outline:2px solid var(--brand-100)}

  .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .form-grid .span2{grid-column:span 2}
  @media (max-width:520px){.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:auto}}

  .segmented{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--brand-50);padding:5px;border-radius:11px}
  .segmented button{
    border:0;border-radius:8px;padding:9px 8px;font-weight:650;font-size:13.5px;
    background:transparent;color:var(--text-2);display:flex;align-items:center;justify-content:center;gap:7px;
  }
  .segmented button svg{flex-shrink:0}
  .segmented button[aria-pressed="true"].seg-ent{background:var(--ent);color:#fff}
  .segmented button[aria-pressed="true"].seg-sai{background:var(--sai);color:#fff}

  .btn-primary{
    background:var(--brand-600);color:#fff;border:0;border-radius:10px;
    padding:11px 18px;font-weight:650;font-size:14px;
  }
  .btn-primary:hover{background:var(--brand-700)}
  .btn-primary:disabled{background:#a9bfdd;cursor:not-allowed}
  .btn-secondary{
    background:#fff;color:var(--brand-700);border:1px solid var(--line);
    border-radius:10px;padding:10px 16px;font-weight:600;font-size:13px;
  }
  .btn-secondary:hover{background:var(--brand-50)}
  .form-actions{display:flex;gap:10px;align-items:center;margin-top:14px}
  .form-error{color:var(--neg);font-size:12.5px;margin-top:8px;min-height:0}

  /* empresas */
  .empresa-add{display:flex;gap:8px;margin-bottom:12px}
  .empresa-add input{flex:1;border:1px solid var(--line);border-radius:9px;padding:9px 11px}
  ul.empresas{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto}
  ul.empresas li{
    display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line);
    border-radius:10px;background:#fff;
  }
  .emp-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
  .emp-nome{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .emp-nome input{width:100%;border:1px solid var(--brand-500);border-radius:6px;padding:3px 6px;font-weight:600}
  .emp-meta{font-size:11.5px;color:var(--muted);white-space:nowrap}
  .icon-btn{
    background:transparent;border:0;border-radius:7px;padding:5px;color:var(--muted);
    display:flex;align-items:center;justify-content:center;
  }
  .icon-btn:hover{background:var(--brand-50);color:var(--brand-700)}
  .icon-btn.danger:hover{background:#fdeaea;color:var(--neg)}
  .empty-note{font-size:12.5px;color:var(--muted);padding:10px 4px}

  /* ================= filtros ================= */
  .filters{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
  .filters .field{flex:0 1 auto}
  .filters .field.grow{flex:1 1 160px}
  .filters .field input,.filters .field select{padding:8px 10px}
  .f-periodo{width:170px}
  .f-data{width:140px}
  .f-emp{width:170px}
  .f-tipo{width:130px}
  .f-valor{width:118px}
  .btn-clear{
    background:transparent;border:0;color:var(--brand-700);font-weight:600;font-size:13px;
    padding:9px 10px;border-radius:8px;
  }
  .btn-clear:hover{background:var(--brand-50)}
  @media (max-width:700px){
    .filters .field{flex:1 1 45%}
    .f-periodo,.f-data,.f-emp,.f-tipo,.f-valor{width:auto}
  }

  /* ================= KPIs ================= */
  .kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
  @media (max-width:900px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
  .kpi{padding:16px 18px}
  .kpi .k-label{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--text-2)}
  .k-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
  .kpi .k-value{font-size:clamp(18px,1.4vw + 12px,24px);font-weight:700;margin-top:6px;white-space:nowrap}
  .kpi .k-hint{font-size:11.5px;color:var(--muted);margin-top:3px}
  .k-pos{color:var(--pos)}
  .k-neg{color:var(--neg)}

  /* ================= gráficos ================= */
  .charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  @media (max-width:980px){.charts{grid-template-columns:1fr}}
  .chart-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}
  .chart-head .titles{flex:1}
  .legend{display:flex;gap:14px;margin:2px 0 10px;flex-wrap:wrap}
  .legend .lg{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-2)}
  .lg-swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}
  .view-toggle{display:flex;background:var(--brand-50);border-radius:8px;padding:3px;gap:3px}
  .view-toggle button{
    border:0;background:transparent;border-radius:6px;padding:4px 10px;font-size:12px;
    font-weight:600;color:var(--text-2);
  }
  .view-toggle button[aria-pressed="true"]{background:#fff;color:var(--brand-700);box-shadow:0 1px 3px rgba(13,47,94,.12)}
  .chart-scroll{overflow-x:auto;overflow-y:hidden}
  .chart-empty{
    display:flex;align-items:center;justify-content:center;height:200px;
    color:var(--muted);font-size:13px;background:var(--brand-50);border-radius:10px;
  }
  .chart-svg .band{fill:transparent}
  .chart-svg .band:hover,.chart-svg .band:focus-visible{fill:rgba(42,120,214,.07);outline:none}
  .chart-svg g.lift path.mark{filter:brightness(1.08)}
  .chart-svg text{font-family:system-ui,-apple-system,"Segoe UI",sans-serif}
  .twin-table{width:100%;border-collapse:collapse;font-size:13px}
  .twin-table th{font-size:11.5px;color:var(--muted);text-align:right;font-weight:600;padding:7px 10px;border-bottom:1px solid var(--line)}
  .twin-table th:first-child{text-align:left}
  .twin-table td{padding:7px 10px;border-bottom:1px solid var(--grid);text-align:right;font-variant-numeric:tabular-nums}
  .twin-table td:first-child{text-align:left;font-variant-numeric:normal}
  .hidden{display:none !important}

  /* ================= tabela ================= */
  .table-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
  .table-head .titles{flex:1}
  .count-pill{
    background:var(--brand-50);color:var(--brand-700);font-size:12px;font-weight:650;
    border-radius:999px;padding:3px 11px;
  }
  .table-wrap{overflow-x:auto}
  table.lanc{width:100%;border-collapse:collapse;font-size:13.5px;min-width:720px}
  table.lanc th{
    text-align:left;font-size:11.5px;color:var(--muted);font-weight:650;letter-spacing:.2px;
    padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap;
  }
  table.lanc th.sortable{cursor:pointer;user-select:none}
  table.lanc th.sortable:hover{color:var(--brand-700)}
  table.lanc th .arrow{font-size:10px;margin-left:3px}
  table.lanc td{padding:10px;border-bottom:1px solid var(--grid);vertical-align:middle}
  table.lanc tbody tr:hover{background:var(--brand-50)}
  table.lanc tbody tr.editing{background:var(--brand-100);box-shadow:inset 3px 0 0 var(--brand-500)}
  td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
  .badge{
    display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 10px;
    font-size:12px;font-weight:650;white-space:nowrap;
  }
  .badge .b-dot{width:7px;height:7px;border-radius:50%}
  .badge-ent{background:var(--brand-50);color:#14528f}
  .badge-sai{background:#fdeaea;color:#a02c2c}
  .desc-cell{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .cat-chip{font-size:11.5px;color:var(--text-2);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:2px 7px;white-space:nowrap}
  .row-actions{display:flex;gap:2px;justify-content:flex-end}
  tfoot td{font-weight:650;border-bottom:0;background:var(--brand-50)}
  tfoot td:first-child{border-radius:0 0 0 10px}
  tfoot td:last-child{border-radius:0 0 10px 0}
  .empty-row td{text-align:center;color:var(--muted);padding:34px 10px}

  /* ================= tooltip / toast ================= */
  #tooltip{
    position:fixed;z-index:50;background:#fff;border:1px solid var(--line);border-radius:10px;
    box-shadow:0 6px 24px rgba(13,47,94,.16);padding:10px 12px;pointer-events:none;
    min-width:170px;display:none;
  }
  #tooltip .tt-title{font-size:12px;font-weight:650;color:var(--text-2);margin-bottom:6px}
  #tooltip .tt-row{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:2px 0}
  .tt-key{width:12px;height:3px;border-radius:2px;flex-shrink:0}
  .tt-label{color:var(--text-2);flex:1}
  .tt-value{font-weight:700;font-variant-numeric:tabular-nums}
  #toast{
    position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);
    background:var(--brand-900);color:#fff;border-radius:10px;padding:11px 18px;font-size:13.5px;
    opacity:0;transition:.25s;z-index:60;pointer-events:none;box-shadow:0 8px 24px rgba(13,47,94,.3);
  }
  #toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

  /* tela de login */
  #loginScreen{
    position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
    background:linear-gradient(135deg,var(--brand-900) 0%,var(--brand-700) 70%,var(--brand-600) 100%);
    padding:20px;
  }
  .login-card{
    background:#fff;border-radius:20px;box-shadow:0 24px 64px rgba(0,0,0,.35);
    padding:38px 34px 30px;max-width:380px;width:100%;text-align:center;
  }
  .login-logo{
    width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,var(--brand-700),var(--brand-500));
    display:flex;align-items:center;justify-content:center;margin:0 auto 16px;
  }
  .login-card h1{font-size:21px;margin:0 0 4px;color:var(--text)}
  .login-card>p{margin:0 0 22px;font-size:13px;color:var(--text-2)}
  .login-card input{
    width:100%;border:1px solid var(--line);border-radius:10px;padding:12px 14px;
    font-size:15px;text-align:center;margin-bottom:12px;
  }
  .login-card input:focus{border-color:var(--brand-500);outline:2px solid var(--brand-100)}
  .login-card .btn-primary{width:100%;padding:12px}
  .login-card .form-error{text-align:center;min-height:20px}

  /* anexos (comprovantes) */
  .anexos-lista{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
  .anexo-chip{
    display:inline-flex;align-items:center;gap:7px;background:var(--brand-50);
    border:1px solid var(--line);border-radius:8px;padding:4px 6px 4px 10px;
    font-size:12px;max-width:100%;
  }
  .anexo-chip a{
    color:var(--brand-700);font-weight:600;text-decoration:none;
    max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .anexo-chip a:hover{text-decoration:underline}
  .anexo-chip .tam{color:var(--muted);font-size:11px;white-space:nowrap}
  .btn-anexos{
    background:var(--brand-50);border:1px solid var(--line);border-radius:999px;
    padding:3px 10px;font-size:12px;font-weight:650;color:var(--brand-700);
    display:inline-flex;gap:5px;align-items:center;white-space:nowrap;
  }
  .btn-anexos:hover{background:var(--brand-100)}
  .anexo-row{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--grid)}
  .anexo-row:last-child{border-bottom:0}
  .anexo-row a{
    color:var(--brand-700);font-weight:600;text-decoration:none;flex:1;min-width:0;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .anexo-row a:hover{text-decoration:underline}
  .anexo-meta{font-size:11.5px;color:var(--muted);white-space:nowrap}

  /* modal de confirmação */
  .modal-backdrop{
    position:fixed;inset:0;background:rgba(13,47,94,.42);z-index:70;
    display:flex;align-items:center;justify-content:center;padding:20px;
  }
  #modal{z-index:80} /* confirmação fica acima do modal de anexos */
  .modal-box{
    background:#fff;border-radius:14px;box-shadow:0 16px 48px rgba(13,47,94,.3);
    padding:22px;max-width:400px;width:100%;
  }
  .modal-box h3{margin:0 0 8px;font-size:15px}
  .modal-box p{margin:0 0 18px;font-size:13.5px;color:var(--text-2);white-space:pre-line}
  .modal-actions{display:flex;gap:10px;justify-content:flex-end}
  .btn-danger{
    background:var(--neg);color:#fff;border:0;border-radius:10px;
    padding:10px 16px;font-weight:650;font-size:13.5px;
  }
  .btn-danger:hover{filter:brightness(.92)}
