/* =========================================================================
   Conciliação bancária — design system
   Sem dependência externa de propósito: um servidor financeiro costuma ficar
   em rede fechada, e CDN indisponível não pode quebrar a interface.
   ========================================================================= */

:root {
  color-scheme: light dark;

  --fonte: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --fonte-num: "SF Mono", "Cascadia Mono", "Segoe UI Mono", Consolas, "Liberation Mono", monospace;

  --fundo: #f6f7f9;
  --fundo-elevado: #ffffff;
  --fundo-suave: #f0f2f5;
  --fundo-barra: #10141f;
  --borda: #e2e5ea;
  --borda-forte: #cbd1da;

  --texto: #161b26;
  --texto-suave: #5b6472;
  --texto-fraco: #8b94a3;
  --texto-invertido: #f4f6fa;

  --marca: #3757d8;
  --marca-forte: #2743b4;
  --marca-suave: #eaeeff;

  --critico: #c2352c;
  --critico-suave: #fdecea;
  --atencao: #a76a08;
  --atencao-suave: #fdf3e0;
  --ok: #1f7a4d;
  --ok-suave: #e7f6ee;
  --info: #2b6cb0;
  --info-suave: #e8f1fb;

  --raio: 10px;
  --raio-p: 6px;
  --sombra: 0 1px 2px rgba(16, 20, 31, .06), 0 4px 12px rgba(16, 20, 31, .05);
  --sombra-alta: 0 10px 30px rgba(16, 20, 31, .14);
  --largura-menu: 244px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --fundo: #0e1117;
    --fundo-elevado: #161a23;
    --fundo-suave: #1b202b;
    --fundo-barra: #090c12;
    --borda: #262c38;
    --borda-forte: #333b4a;

    --texto: #e8ebf1;
    --texto-suave: #a4adbd;
    --texto-fraco: #6f7a8c;

    --marca: #7b95ff;
    --marca-forte: #99adff;
    --marca-suave: #1b2340;

    --critico: #ff8078;
    --critico-suave: #33191a;
    --atencao: #eab464;
    --atencao-suave: #2e2415;
    --ok: #63d19b;
    --ok-suave: #12291f;
    --info: #7cb4ee;
    --info-suave: #142433;

    --sombra: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 14px rgba(0, 0, 0, .3);
    --sombra-alta: 0 12px 34px rgba(0, 0, 0, .55);
  }
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--fonte);
  font-size: 14px;
  line-height: 1.55;
  color: var(--texto);
  background: var(--fundo);
  -webkit-font-smoothing: antialiased;
}

a { color: var(--marca); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3, h4 { margin: 0 0 .4em; line-height: 1.25; font-weight: 640; letter-spacing: -.01em; }
h1 { font-size: 21px; }
h2 { font-size: 16px; }
h3 { font-size: 14px; }
p { margin: 0 0 .8em; }
small { font-size: 12px; }

/* ---------------------------------------------------------------- layout */
.app { display: flex; min-height: 100vh; }

.menu {
  width: var(--largura-menu);
  flex: 0 0 var(--largura-menu);
  background: var(--fundo-barra);
  color: var(--texto-invertido);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}

.menu__marca {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 18px; border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.menu__logo {
  width: 34px; height: 34px; border-radius: 8px; object-fit: cover;
  background: rgba(255, 255, 255, .1);
  display: grid; place-items: center;
  font-weight: 700; font-size: 12px; letter-spacing: .02em; flex: 0 0 auto;
}
.menu__empresa { min-width: 0; }
.menu__empresa strong { display: block; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.menu__empresa span { display: block; font-size: 11px; color: rgba(244, 246, 250, .55); }

.menu nav { padding: 10px 0 20px; flex: 1; }
.menu__grupo {
  padding: 16px 18px 6px; font-size: 10.5px; text-transform: uppercase;
  letter-spacing: .09em; color: rgba(244, 246, 250, .38); font-weight: 650;
}
.menu a.item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 18px; color: rgba(244, 246, 250, .74);
  font-size: 13.5px; border-left: 2.5px solid transparent;
}
.menu a.item:hover { background: rgba(255, 255, 255, .05); color: #fff; text-decoration: none; }
.menu a.item.ativo {
  background: rgba(123, 149, 255, .14); color: #fff;
  border-left-color: var(--marca); font-weight: 570;
}
.menu a.item .badge { margin-left: auto; }
.menu__icone { width: 17px; text-align: center; opacity: .85; flex: 0 0 auto; }

.principal { flex: 1; min-width: 0; display: flex; flex-direction: column; }

.topo {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 24px; background: var(--fundo-elevado);
  border-bottom: 1px solid var(--borda); position: sticky; top: 0; z-index: 20;
}
.topo h1 { margin: 0; }
.topo__acoes { margin-left: auto; display: flex; align-items: center; gap: 10px; }

.conteudo { padding: 22px 24px 44px; flex: 1; }
.rodape {
  padding: 14px 24px; border-top: 1px solid var(--borda);
  color: var(--texto-fraco); font-size: 11.5px;
  display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.rodape strong { color: var(--texto-suave); letter-spacing: .04em; }

/* ----------------------------------------------------------------- cards */
.cartao {
  background: var(--fundo-elevado); border: 1px solid var(--borda);
  border-radius: var(--raio); box-shadow: var(--sombra); margin-bottom: 18px;
}
.cartao__topo {
  padding: 13px 16px; border-bottom: 1px solid var(--borda);
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.cartao__topo h2 { margin: 0; }
.cartao__topo .direita { margin-left: auto; display: flex; gap: 8px; align-items: center; }
.cartao__corpo { padding: 16px; }
.cartao__corpo > :last-child { margin-bottom: 0; }
.cartao--critico { border-color: var(--critico); }

.grade { display: grid; gap: 14px; }
.grade--2 { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
.grade--3 { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.grade--4 { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }

/* ------------------------------------------------------------ indicadores */
.indicador {
  background: var(--fundo-elevado); border: 1px solid var(--borda);
  border-radius: var(--raio); padding: 14px 16px; box-shadow: var(--sombra);
}
.indicador__rotulo {
  font-size: 11.5px; text-transform: uppercase; letter-spacing: .06em;
  color: var(--texto-fraco); font-weight: 620; margin-bottom: 6px;
}
.indicador__valor {
  font-family: var(--fonte-num); font-size: 22px; font-weight: 640;
  letter-spacing: -.02em; line-height: 1.15;
}
.indicador__nota { font-size: 12px; color: var(--texto-suave); margin-top: 5px; }
.indicador--critico { border-left: 3px solid var(--critico); }
.indicador--critico .indicador__valor { color: var(--critico); }
.indicador--ok { border-left: 3px solid var(--ok); }
.indicador--ok .indicador__valor { color: var(--ok); }
.indicador--atencao { border-left: 3px solid var(--atencao); }
.indicador--atencao .indicador__valor { color: var(--atencao); }
.indicador--info { border-left: 3px solid var(--info); }

/* ---------------------------------------------------------------- tabelas */
.tabela-rolagem { overflow-x: auto; }
table.tabela { width: 100%; border-collapse: collapse; font-size: 13px; }
table.tabela th {
  text-align: left; padding: 9px 12px; font-size: 11px; text-transform: uppercase;
  letter-spacing: .05em; color: var(--texto-fraco); font-weight: 650;
  border-bottom: 1px solid var(--borda); white-space: nowrap; background: var(--fundo-suave);
}
table.tabela td { padding: 9px 12px; border-bottom: 1px solid var(--borda); vertical-align: top; }
table.tabela tbody tr:hover { background: var(--fundo-suave); }
table.tabela tbody tr:last-child td { border-bottom: none; }
table.tabela .num, table.tabela td.num { font-family: var(--fonte-num); text-align: right; white-space: nowrap; }
table.tabela th.num { text-align: right; }
.num { font-family: var(--fonte-num); font-variant-numeric: tabular-nums; }
.num.positivo { color: var(--ok); }
.num.negativo { color: var(--critico); }
.num.neutro { color: var(--texto-fraco); }
.linha-critica { background: var(--critico-suave); }
.linha-critica:hover { background: var(--critico-suave); }

/* ----------------------------------------------------------------- badges */
.badge {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 8px; border-radius: 100px; font-size: 11px; font-weight: 620;
  line-height: 1.7; white-space: nowrap;
  background: var(--fundo-suave); color: var(--texto-suave);
  border: 1px solid var(--borda);
}
.badge--critico { background: var(--critico-suave); color: var(--critico); border-color: transparent; }
.badge--atencao { background: var(--atencao-suave); color: var(--atencao); border-color: transparent; }
.badge--ok { background: var(--ok-suave); color: var(--ok); border-color: transparent; }
.badge--info { background: var(--info-suave); color: var(--info); border-color: transparent; }
.badge--marca { background: var(--marca-suave); color: var(--marca-forte); border-color: transparent; }
.ponto { width: 7px; height: 7px; border-radius: 50%; background: currentColor; flex: 0 0 auto; }

/* ---------------------------------------------------------------- botões */
.botao {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  padding: 7px 14px; border-radius: var(--raio-p); border: 1px solid var(--borda-forte);
  background: var(--fundo-elevado); color: var(--texto);
  font-size: 13px; font-weight: 570; font-family: inherit;
  cursor: pointer; transition: background .12s, border-color .12s, transform .05s;
  text-decoration: none; white-space: nowrap;
}
.botao:hover { background: var(--fundo-suave); text-decoration: none; }
.botao:active { transform: translateY(1px); }
.botao--principal { background: var(--marca); border-color: var(--marca); color: #fff; }
.botao--principal:hover { background: var(--marca-forte); border-color: var(--marca-forte); }
.botao--perigo { background: var(--critico); border-color: var(--critico); color: #fff; }
.botao--perigo:hover { filter: brightness(.94); }
.botao--fantasma { background: transparent; border-color: transparent; color: var(--texto-suave); }
.botao--fantasma:hover { background: var(--fundo-suave); }
.botao--p { padding: 4px 10px; font-size: 12px; }
.botao[disabled], .botao--desabilitado { opacity: .5; pointer-events: none; }

/* --------------------------------------------------------------- formulário */
.formulario { display: grid; gap: 15px; max-width: 720px; }
.formulario--largo { max-width: 100%; }
.campo { display: grid; gap: 5px; }
.campo > label {
  font-size: 12.5px; font-weight: 620; color: var(--texto-suave);
}
.campo input[type=text], .campo input[type=email], .campo input[type=password],
.campo input[type=number], .campo input[type=date], .campo input[type=url],
.campo select, .campo textarea, .filtros input, .filtros select {
  width: 100%; padding: 8px 11px; font-family: inherit; font-size: 13.5px;
  color: var(--texto); background: var(--fundo-elevado);
  border: 1px solid var(--borda-forte); border-radius: var(--raio-p);
}
.campo input[type=color] { width: 56px; height: 34px; padding: 2px; border: 1px solid var(--borda-forte); border-radius: var(--raio-p); background: var(--fundo-elevado); }
.campo textarea { resize: vertical; min-height: 84px; font-family: var(--fonte-num); font-size: 12.5px; }
.campo input:focus, .campo select:focus, .campo textarea:focus {
  outline: 2px solid var(--marca); outline-offset: -1px; border-color: var(--marca);
}
.campo .ajuda { font-size: 12px; color: var(--texto-fraco); }
.campo .erro { font-size: 12px; color: var(--critico); font-weight: 570; }
.campo--erro input, .campo--erro select, .campo--erro textarea { border-color: var(--critico); }
.campo--check { grid-template-columns: auto 1fr; align-items: center; gap: 8px; }
.campo--check label { font-weight: 500; color: var(--texto); }

.checklist {
  display: grid; gap: 6px; max-height: 340px; overflow: auto;
  border: 1px solid var(--borda); border-radius: var(--raio-p); padding: 10px;
  background: var(--fundo-suave);
}
.checklist ul { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 3px; }
.checklist li { display: flex; align-items: center; gap: 8px; }
.checklist label { font-size: 13px; }

.acoes-formulario { display: flex; gap: 9px; align-items: center; padding-top: 4px; }

/* linhas repetíveis: dois campos lado a lado e a lixeira na ponta */
.linhas { display: grid; gap: 10px; }
.linha-item { display: flex; gap: 10px; align-items: flex-end; }
.linha-item__campos {
  flex: 1; display: grid; gap: 10px; grid-template-columns: 2fr 1fr;
}
.linha-item__campos--3 { grid-template-columns: 1fr 1fr 1fr; }
.linha-item__lixeira {
  flex: none; line-height: 1; padding: 8px 10px; color: var(--perigo);
}
.linha-item__lixeira:hover { background: var(--perigo-suave, var(--fundo-suave)); }
@media (max-width: 620px) {
  .linha-item__campos, .linha-item__campos--3 { grid-template-columns: 1fr; }
}

.filtros {
  display: flex; gap: 9px; align-items: flex-end; flex-wrap: wrap;
  padding: 12px 16px; border-bottom: 1px solid var(--borda); background: var(--fundo-suave);
}
.filtros .campo { gap: 3px; }
.filtros label { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; }
.filtros input, .filtros select { min-width: 145px; width: auto; }

/* ------------------------------------------------------------- mensagens */
.mensagens { display: grid; gap: 8px; margin-bottom: 16px; }
.mensagem {
  padding: 10px 14px; border-radius: var(--raio-p); font-size: 13.5px;
  border-left: 3px solid var(--info); background: var(--info-suave); color: var(--texto);
}
.mensagem.success { border-color: var(--ok); background: var(--ok-suave); }
.mensagem.warning { border-color: var(--atencao); background: var(--atencao-suave); }
.mensagem.error { border-color: var(--critico); background: var(--critico-suave); }

.aviso {
  padding: 12px 15px; border-radius: var(--raio-p); font-size: 13px;
  background: var(--fundo-suave); border-left: 3px solid var(--borda-forte);
  margin-bottom: 14px;
}
.aviso--critico { background: var(--critico-suave); border-color: var(--critico); }
.aviso--atencao { background: var(--atencao-suave); border-color: var(--atencao); }
.aviso--ok { background: var(--ok-suave); border-color: var(--ok); }
.aviso--info { background: var(--info-suave); border-color: var(--info); }
.aviso strong { display: block; margin-bottom: 2px; }
.aviso p:last-child { margin-bottom: 0; }

.vazio {
  padding: 46px 20px; text-align: center; color: var(--texto-fraco);
}
.vazio__icone { font-size: 30px; opacity: .45; margin-bottom: 8px; }
.vazio p { max-width: 460px; margin: 0 auto 12px; }

/* --------------------------------------------------------------- gráfico */
.grafico {
  display: flex; align-items: flex-end; gap: 3px; height: 150px;
  padding: 10px 2px 0; border-bottom: 1px solid var(--borda);
}
.grafico__dia { flex: 1; min-width: 4px; height: 100%; display: flex; align-items: flex-end; gap: 1px; position: relative; }
.grafico__barra { flex: 1; border-radius: 2px 2px 0 0; min-height: 1px; }
.grafico__barra--esperado { background: var(--borda-forte); }
.grafico__barra--creditado { background: var(--marca); }
.grafico__legenda { display: flex; gap: 16px; padding-top: 9px; font-size: 12px; color: var(--texto-suave); }
.grafico__amostra { width: 10px; height: 10px; border-radius: 2px; display: inline-block; margin-right: 5px; }

.barra-progresso { height: 6px; border-radius: 100px; background: var(--fundo-suave); overflow: hidden; }
.barra-progresso > span { display: block; height: 100%; background: var(--marca); }
.barra-progresso--ok > span { background: var(--ok); }
.barra-progresso--atencao > span { background: var(--atencao); }
.barra-progresso--critico > span { background: var(--critico); }

/* -------------------------------------------------------------- diversos */
.pilha { display: grid; gap: 4px; }
.linha { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.entre { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.suave { color: var(--texto-suave); }
.fraco { color: var(--texto-fraco); }
.mini { font-size: 12px; }
.mono { font-family: var(--fonte-num); }
.centro { text-align: center; }
.direita { text-align: right; }
.nowrap { white-space: nowrap; }
.mb0 { margin-bottom: 0; }
.mt12 { margin-top: 12px; }
.mt20 { margin-top: 20px; }

.definicoes { display: grid; grid-template-columns: max-content 1fr; gap: 6px 18px; font-size: 13px; }
.definicoes dt { color: var(--texto-fraco); }
.definicoes dd { margin: 0; }

.paginacao { display: flex; gap: 8px; align-items: center; justify-content: center; padding: 14px; }
.paginacao .atual { font-size: 12.5px; color: var(--texto-suave); }

.trilha { display: flex; gap: 6px; font-size: 12px; color: var(--texto-fraco); margin-bottom: 10px; }
.trilha a { color: var(--texto-suave); }

.avatar {
  width: 30px; height: 30px; border-radius: 50%; background: var(--marca-suave);
  color: var(--marca-forte); display: grid; place-items: center;
  font-size: 11.5px; font-weight: 700; flex: 0 0 auto;
}

/* seletor de empresas (tela cheia) */
.selecao { min-height: 100vh; display: grid; place-items: center; padding: 40px 20px; }
.selecao__caixa { width: 100%; max-width: 780px; }
.selecao__grade { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.empresa-cartao {
  display: flex; align-items: center; gap: 12px; padding: 16px;
  background: var(--fundo-elevado); border: 1px solid var(--borda);
  border-radius: var(--raio); box-shadow: var(--sombra); color: var(--texto);
  transition: border-color .12s, transform .08s, box-shadow .12s;
}
.empresa-cartao:hover {
  text-decoration: none; border-color: var(--marca);
  transform: translateY(-2px); box-shadow: var(--sombra-alta);
}
.empresa-cartao__logo {
  width: 42px; height: 42px; border-radius: 9px; object-fit: cover; flex: 0 0 auto;
  display: grid; place-items: center; font-weight: 700; font-size: 14px;
  background: var(--marca-suave); color: var(--marca-forte);
}

/* ---------------------------------------------------------------- modal */
.modal {
  position: fixed; inset: 0; z-index: 100;
  background: rgba(9, 12, 18, .55);
  display: grid; place-items: center; padding: 20px;
  backdrop-filter: blur(2px);
}
.modal[hidden] { display: none; }
.modal__caixa {
  width: 100%; max-width: 460px; max-height: 90vh; overflow: auto;
  background: var(--fundo-elevado); border: 1px solid var(--borda);
  border-radius: 14px; box-shadow: var(--sombra-alta);
}
.modal__caixa .cartao__topo { position: sticky; top: 0; background: var(--fundo-elevado); }

/* login */
.login { min-height: 100vh; display: grid; place-items: center; padding: 30px 20px; background: var(--fundo); }
.login__caixa {
  width: 100%; max-width: 380px; background: var(--fundo-elevado);
  border: 1px solid var(--borda); border-radius: 14px; padding: 30px;
  box-shadow: var(--sombra-alta);
}
.login__marca { text-align: center; margin-bottom: 22px; }
.login__marca h1 { font-size: 19px; margin-bottom: 3px; }
.login__marca p { color: var(--texto-fraco); font-size: 12.5px; margin: 0; }

@media (max-width: 900px) {
  .app { flex-direction: column; }
  .menu { width: 100%; flex: none; height: auto; position: static; }
  .menu nav { display: flex; flex-wrap: wrap; padding: 6px; gap: 2px; }
  .menu__grupo { display: none; }
  .menu a.item { border-left: none; border-radius: var(--raio-p); padding: 6px 10px; }
  .conteudo { padding: 16px 14px 34px; }
  .topo { padding: 10px 14px; }
}

@media print {
  .menu, .topo__acoes, .filtros, .botao, .paginacao { display: none !important; }
  body { background: #fff; }
  .cartao { box-shadow: none; break-inside: avoid; }
}
