/* Money99 Web - visual sobrio, compacto, inspirado no MS Money */
:root {
  --m-menu-bg: #1f3a5f;
  --m-menu-fg: #dbe4f0;
  --m-menu-ativo: #2f5d94;
  --m-borda: #d7dde5;
  --m-fundo: #f4f6f9;
  --m-despesa: #b02a37;
  --m-receita: #1e6b3a;
}
body { background: var(--m-fundo); font-size: .875rem; }
.m-shell { display: flex; min-height: 100vh; }
.m-menu { width: 170px; flex-shrink: 0; background: var(--m-menu-bg); color: var(--m-menu-fg); }
.m-logo { font-weight: 600; font-size: 1.05rem; padding: .75rem 1rem; border-bottom: 1px solid rgba(255,255,255,.1); }
.m-menu ul { list-style: none; margin: 0; padding: .25rem 0; }
.m-menu a, .m-menu .desabilitado { display: block; padding: .4rem 1rem; color: var(--m-menu-fg); text-decoration: none; }
.m-menu a:hover, .m-menu a.ativo { background: var(--m-menu-ativo); color: #fff; }
.m-menu .desabilitado { opacity: .45; cursor: default; }
.m-area { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.m-topo { display: flex; justify-content: space-between; align-items: center; padding: .5rem 1rem; background: #fff; border-bottom: 1px solid var(--m-borda); }
.m-topo h1 { font-size: 1.05rem; margin: 0; font-weight: 600; }
.m-conteudo { padding: .75rem 1rem; }
.m-tabela { background: #fff; border: 1px solid var(--m-borda); }
.m-tabela th { font-weight: 600; background: #eef1f5; }
.m-tabela td.valor, .m-tabela th.valor { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.despesa { color: var(--m-despesa); }
.receita { color: var(--m-receita); }
.negativo { color: var(--m-despesa); font-weight: 600; }
.m-simples { display: flex; align-items: center; justify-content: center; min-height: 100vh; }
.m-caixa-erro { background: #fff; border: 1px solid var(--m-borda); padding: 1.5rem 2rem; max-width: 460px; }
.m-caixa-erro h1 { font-size: 1.2rem; color: var(--m-menu-bg); }
.m-caixa-erro .codigo { font-weight: 600; }
@media (max-width: 768px) {
  .m-shell { flex-direction: column; }
  .m-menu { width: 100%; }
  .m-menu ul { display: flex; flex-wrap: wrap; }
}

/* ---- Fase 2: menu agrupado, formularios, listas ---- */
.m-logo { display: block; color: #fff; text-decoration: none; }
.m-grupo { padding: .75rem 1rem .25rem; font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; opacity: .6; }
.m-topo-dir { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.m-selecao { min-width: 240px; max-height: 60vh; overflow-y: auto; }
.m-barra { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: .5rem; }
.m-barra form .form-select { width: auto; }
.m-grade { overflow-x: auto; }
.m-grade .m-tabela { min-width: 640px; }
.m-mono { font-family: ui-monospace, Consolas, monospace; font-size: .8rem; }
.m-quebra { white-space: normal; word-break: break-all; max-width: 420px; }
.m-inativo td { color: #8a94a3; }
.m-pill { display: inline-block; padding: 0 .45rem; border-radius: 3px; font-size: .75rem; border: 1px solid var(--m-borda); background: #fff; }
.m-pill-ativo { color: var(--m-receita); border-color: #b9d8c4; background: #eef8f1; }
.m-pill-inativo { color: #6c757d; }
.m-pill-erro { color: var(--m-despesa); border-color: #ecc1c5; background: #fcf0f1; }
.m-pill-aviso { color: #8a5a00; border-color: #f0d9a8; background: #fff8e6; }
.m-guia-linha { display: grid; grid-template-columns: 110px minmax(150px, 1.4fr) minmax(150px, 1.4fr) minmax(130px, 1.3fr) 120px minmax(130px, 1.2fr) minmax(130px, 1.2fr) 36px; gap: .4rem; align-items: start; }
.m-guia-linha .m-campo > span { display: none; }
.m-guia-cab { font-size: .75rem; color: #5d6b7c; }
.m-guia-linha .m-sinal { font-variant-numeric: tabular-nums; align-self: center; }
/* baixa da guia: cada lancamento em duas faixas para caber no quadro (.m-form, ate 1100px) */
.m-guia-baixa .m-guia-linha { grid-template-columns: 38px 92px minmax(90px, 1.3fr) minmax(90px, 1.3fr) 122px 118px minmax(90px, 1fr) 128px 34px; }
.m-guia-baixa [data-linha] { padding: .4rem 0; border-bottom: 1px dashed var(--m-borda); }
.m-guia-baixa .m-guia-avulsa { background: #f6f9fd; }
.m-guia-baixa .m-guia-cat { grid-column: 2 / 6; display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
.m-guia-baixa .m-guia-doc { grid-column: 6 / 7; }
.m-guia-baixa .m-guia-obs { grid-column: 7 / 10; }
.m-guia-baixa .m-guia-erro { grid-column: 1 / -1; }
.m-guia-baixa .m-guia-cat .m-campo > span, .m-guia-baixa .m-guia-doc > span, .m-guia-baixa .m-guia-obs > span { display: block; font-size: .7rem; color: #5d6b7c; }
.m-guia-marca { align-self: center; justify-self: start; font-size: .65rem; }
.m-guia-baixa .m-guia-linha .form-check-input { margin-top: .45rem; }
@media (max-width: 992px) {
  .m-guia-linha, .m-guia-baixa .m-guia-linha { grid-template-columns: 1fr 1fr; }
  .m-guia-baixa .m-guia-cat { grid-column: 1 / -1; }
  .m-guia-baixa .m-guia-doc, .m-guia-baixa .m-guia-obs { grid-column: auto; }
  .m-guia-cab { display: none; }
  .m-guia-linha .m-campo > span { display: block; }
}
.m-erro td { background: #fcf0f1; }
.m-alerta td { background: #fff8e6; }
.m-mudou td { background: #fff8e6; font-weight: 600; }
.m-arvore .m-raiz td:first-child { font-weight: 600; }
.m-arvore .m-sub td:first-child { padding-left: 1.75rem; }
.m-totais { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; background: #fff; border: 1px solid var(--m-borda); padding: .5rem .75rem; margin-bottom: .5rem; }
.m-total { display: flex; flex-direction: column; }
.m-total span { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: #6c757d; }
.m-total b { font-variant-numeric: tabular-nums; font-weight: 600; }
.m-form { background: #fff; border: 1px solid var(--m-borda); padding: .75rem 1rem; display: flex; flex-direction: column; gap: .5rem; max-width: 1100px; }
.m-form fieldset { border-top: 1px solid var(--m-borda); padding-top: .4rem; }
.m-form legend { font-size: .8rem; font-weight: 600; color: var(--m-menu-bg); margin-bottom: .25rem; float: none; width: auto; }
.m-linha { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .5rem .75rem; align-items: end; }
.m-campo { display: flex; flex-direction: column; gap: .15rem; margin: 0; min-width: 0; }
.m-campo > span { font-size: .75rem; color: #5d6b7c; }
.m-campo-largo { grid-column: 1 / -1; }
.m-check { display: flex; align-items: center; gap: .4rem; margin: 0 0 .3rem; }
.m-acoes { display: flex; gap: .5rem; justify-content: flex-end; flex-wrap: wrap; }
.m-ajuda { font-size: .78rem; color: #6c757d; margin: 0; }
.m-subtitulo { font-size: .95rem; font-weight: 600; margin: .75rem 0 .4rem; }
.m-ficha th { width: 30%; }
.m-filtros { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: .5rem; align-items: end; background: #fff; border: 1px solid var(--m-borda); padding: .5rem .75rem; margin-bottom: .5rem; }
.m-filtros-acoes { display: flex; gap: .4rem; }
.densidade-normal { font-size: .95rem; }
.densidade-normal .table-sm > :not(caption) > * > * { padding: .45rem .5rem; }

/* ---- Fase 3: livro de caixa ---- */
.m-conta-topo { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; align-items: center; justify-content: space-between; background: #fff; border: 1px solid var(--m-borda); padding: .5rem .75rem; margin-bottom: .5rem; }
.m-nav-conta select { font-weight: 600; min-width: 260px; }
.m-conta-sub { font-size: .75rem; color: #6c757d; margin-top: .15rem; }
.m-totais-conta { border: 0; padding: 0; margin: 0; }
.m-acoes-topo { display: flex; gap: .4rem; flex-wrap: wrap; }
.m-filtros-extrato { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }
.m-filtros-extrato .m-campo-busca { grid-column: span 2; }
.m-livro { max-height: 60vh; overflow: auto; background: #fff; border: 1px solid var(--m-borda); }
.m-livro .m-tabela { border: 0; margin: 0; }
.m-livro thead th { position: sticky; top: 0; z-index: 1; }
.m-livro th a { color: inherit; text-decoration: none; }
.m-livro tbody tr { cursor: pointer; }
.m-livro tbody tr:focus { outline: 2px solid var(--m-menu-ativo); outline-offset: -2px; }
.m-livro tbody tr.sel td { background: #dde8f6; }
.m-livro tbody tr.m-destaque td { background: #fff3cd; }
.m-livro tfoot td { font-weight: 600; background: #eef1f5; position: sticky; bottom: 0; }
.m-desc small { display: block; color: #6c757d; }
.m-marca { text-align: center; font-family: ui-monospace, Consolas, monospace; color: var(--m-receita); }
.m-cancelado td { color: #9aa3ae; text-decoration: line-through; }
.m-cancelado td.m-marca { text-decoration: none; color: var(--m-despesa); }
.m-agendado td { color: #6c757d; font-style: italic; }
.m-saldo-anterior td { color: #5d6b7c; font-style: italic; background: #f7f9fb; }
.m-lanc { background: #fff; border: 1px solid var(--m-borda); border-top: 3px solid var(--m-menu-ativo); padding: .5rem .75rem; margin-top: .5rem; display: flex; flex-direction: column; gap: .4rem; }
.m-lanc-acoes { border-top-color: var(--m-despesa); }
.m-lanc-titulo { display: flex; justify-content: space-between; flex-wrap: wrap; gap: .5rem; align-items: baseline; }
.m-cat-desc { margin: 0; padding: .25rem .5rem; font-size: .8rem; color: #084298; background: #eef4ff; border-left: 3px solid #6ea8fe; }
.m-lanc-linha { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: .4rem .6rem; align-items: end; }
.m-campo-largo2 { grid-column: span 2; }
.m-campo-curto { max-width: 110px; }
.m-input-valor { text-align: right; font-variant-numeric: tabular-nums; }
.m-split { border: 1px dashed var(--m-borda); padding: .4rem .5rem; display: flex; flex-direction: column; gap: .3rem; }
.m-split-cab, .m-split-item { display: grid; grid-template-columns: minmax(180px, 2fr) minmax(140px, 2fr) 56px 130px 36px; gap: .4rem; }
.m-split-cab { font-size: .75rem; color: #5d6b7c; }
.m-contents { display: contents; }
.m-split-cs .m-split-cab, .m-split-cs .m-split-item { grid-template-columns: minmax(150px, 1.3fr) minmax(150px, 1.3fr) minmax(140px, 1.6fr) 56px 130px 36px; }
.m-efeito { align-self: center; font-size: .8rem; color: #5d6b7c; }
.m-efeito.abate { color: var(--bs-danger, #b02a37); font-weight: 600; }
.m-split-cs .m-split-item .m-campo > span { display: none; }
.m-split-rodape { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; align-items: center; font-variant-numeric: tabular-nums; }
.m-valor-fixo { font-variant-numeric: tabular-nums; padding: .25rem 0; }
@media (max-width: 768px) {
  .m-campo-largo2, .m-filtros-extrato .m-campo-busca { grid-column: 1 / -1; }
  .m-split-cab { display: none; }
  .m-split-item { grid-template-columns: 1fr 1fr; }
  .m-nav-conta select { min-width: 0; width: 100%; }
}

/* Fase 4: cartoes, agenda e parcelados */
.m-menu a.m-menu-sub { padding-left: 1.75rem; font-size: .85rem; }
.m-abas { display: flex; flex-wrap: wrap; gap: .25rem; border-bottom: 1px solid var(--m-borda); margin-bottom: .5rem; }
.m-abas a { padding: .3rem .75rem; text-decoration: none; color: var(--m-menu-bg); border: 1px solid transparent; border-bottom: 0; border-radius: 3px 3px 0 0; }
.m-abas a.ativo { background: #fff; border-color: var(--m-borda); font-weight: 600; margin-bottom: -1px; }
.m-tabela tr.m-vencido td { background: #fcf0f1; }
.m-tabela tr.m-aviso td { background: #fff8e1; }
.m-motivo { width: 9rem; }

/* Fase 5: Home e projecao */
.m-home-grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: .5rem; margin-bottom: .5rem; }
.m-home-entidades { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: .5rem; margin-bottom: .5rem; align-items: start; }
.m-painel { background: #fff; border: 1px solid var(--m-borda); padding: .5rem .75rem; }
.m-painel h2 { font-size: .85rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--m-menu-bg); margin: 0 0 .4rem; }
.m-numeros { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: .4rem; }
.m-numero { display: flex; flex-direction: column; padding: .35rem .5rem; border: 1px solid var(--m-borda); border-radius: 3px; text-decoration: none; color: inherit; }
.m-numero:hover { border-color: var(--m-menu-ativo); }
.m-numero span { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: #6c757d; }
.m-numero b { font-variant-numeric: tabular-nums; }
.m-numero small { font-size: .7rem; color: #6c757d; }
.m-numero-alerta { border-color: #ecc1c5; background: #fcf0f1; }
.m-avisos { list-style: none; margin: 0; padding: 0; font-size: .85rem; }
.m-avisos li { padding: .15rem 0 .15rem 1rem; position: relative; }
.m-avisos li::before { content: ""; position: absolute; left: 0; top: .55rem; width: .5rem; height: .5rem; border-radius: 50%; background: #b9d8c4; }
.m-avisos li.m-aviso-ruim::before { background: var(--m-despesa); }
.m-avisos li.m-aviso-atencao::before { background: #e0a800; }
.m-projecao-grafico { position: relative; height: 320px; background: #fff; border: 1px solid var(--m-borda); padding: .5rem; margin-bottom: .5rem; }
.m-tabela tr.m-negativo td { background: #fcf0f1; }
.m-contas-sel { display: flex; flex-wrap: wrap; gap: .25rem 1rem; }
.m-proj-desc { min-width: 12rem; max-width: 28rem; }
.m-sim { display: grid; grid-template-columns: 9rem 1fr 7rem 8rem 1fr; gap: .25rem; }

/* Livro de caixa: seletor de mes e linhas previstas da agenda */
.m-mes { display: flex; gap: .25rem; align-items: center; margin-bottom: .4rem; }
.m-mes .form-select { width: auto; }
.m-livro tbody tr.m-previsto td, tfoot tr.m-previsto td { color: #6c757d; font-style: italic; background: #f6f8fa; }
.m-livro tbody tr.m-previsto-vencido td { background: #fcf0f1; }
.m-livro tbody tr.m-previsto .btn { font-style: normal; }
.m-col-previsto { color: #6c757d; }

/* Relatorios: tabelas simples para copiar ao Excel */
.m-rel-topo { display: flex; justify-content: space-between; align-items: center; gap: .5rem; flex-wrap: wrap; margin-top: .75rem; }
.m-rel-topo .m-subtitulo { margin: 0; }
.m-relatorio td, .m-relatorio th { white-space: nowrap; }
.m-relatorio tr.m-rel-subtotal td { font-weight: 600; background: #f3f6fa; }
.m-relatorio tr.m-rel-total td { font-weight: 700; background: #eef1f5; }
/* colunas fixas a esquerda (table[data-fixar]); o left de cada coluna vem do relatorios.js */
.m-relatorio .m-fixa { position: sticky; z-index: 1; background-color: #fff; }
.m-relatorio th.m-fixa { background-color: #eef1f5; z-index: 2; }
.m-relatorio tr.m-rel-subtotal td.m-fixa { background-color: #f3f6fa; }
.m-relatorio tr.m-rel-total td.m-fixa { background-color: #eef1f5; }
.m-relatorio .m-fixa-ultima { box-shadow: inset -1px 0 0 var(--m-borda), 2px 0 3px rgba(0,0,0,.06); }
/* tabela com rolagem propria (.m-grade-rolagem): cabecalho preso no topo e colunas .m-fixa presas a esquerda */
.m-grade-rolagem { max-height: calc(100vh - 140px); overflow: auto; }
.m-grade-rolagem .m-tabela { margin-bottom: 0; }
.m-grade-rolagem thead th { position: sticky; top: 0; z-index: 2; }
.m-grade-rolagem thead th.m-fixa { z-index: 3; }
.m-relatorio td.m-clicavel { cursor: pointer; }
.m-relatorio td.m-clicavel:hover { text-decoration: underline; background-color: #e7f0fb; }
.m-rel-resumos { display: grid; grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); gap: .75rem; }

/* Menu lateral fixo: acompanha a rolagem em paginas longas (rola sozinho se nao couber na tela) */
.m-menu { position: sticky; top: 0; align-self: flex-start; height: 100vh; overflow-y: auto; }
@media (max-width: 768px) {
  .m-menu { position: static; height: auto; overflow: visible; }
}
.m-filtro-lista { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; margin: .25rem 0 .6rem; }
.m-filtro-lista input { max-width: 320px; }

/* ---- formulario de lancamento embutido (moldura do detalhamento dos relatorios) ---- */
body.m-embutido { background: #fff; padding: .5rem; }
.m-embutido .m-lanc { border: 0; padding: 0; margin: 0; }
.m-embutido-conta { font-weight: 600; margin: 0 0 .25rem; }
.m-embutido [data-novo], .m-embutido [data-duplicar], .m-embutido .m-lanc-titulo .m-ajuda { display: none !important; }
.m-detalhe-moldura { width: 100%; height: 420px; border: 0; display: block; }

/* ---- troca de categoria em lote (pop-up da coluna Lancamentos em Categorias) ---- */
.m-lote-cat { display: flex; flex-wrap: wrap; gap: .5rem; align-items: flex-end; margin-bottom: .5rem; }
.m-lote-cat .m-ajuda { align-self: center; }

/* Livro de caixa e conciliacao: baixa de guia agrupada numa linha (abre os lancamentos com um clique) */
:is(.m-livro, .m-conciliacao) tr.m-grupo { cursor: pointer; }
:is(.m-livro, .m-conciliacao) tr.m-grupo > td { font-weight: 600; background: #f6f8fb; }
:is(.m-livro, .m-conciliacao) tr.m-grupo .m-pill, :is(.m-livro, .m-conciliacao) tr.m-grupo small, :is(.m-livro, .m-conciliacao) tr.m-grupo a { font-weight: 400; }
.m-grupo-seta { display: inline-block; width: 1em; color: #6c757d; }
:is(.m-livro, .m-conciliacao) tr.m-grupo-item > td.m-desc { padding-left: 1.75rem; }
:is(.m-livro, .m-conciliacao) tr.m-grupo-item > td { font-size: .95em; }

/* Home: Resumo de contas em arvore (entidade > contas) */
.m-arvore-contas tr.m-arvore-entidade > td { font-weight: 600; background: #eef1f5; }
.m-arvore-contas tr.m-arvore-conta > td:first-child { padding-left: 1.75rem; }

/* Situacao "Atualizado" (valor/data conferidos, ainda nao efetivado): fonte verde em toda a linha */
.m-atualizado td, .m-livro tbody tr.m-atualizado td, .m-livro tbody tr.m-grupo.m-atualizado > td { color: #12923f; }
.m-agendado.m-atualizado td { color: #12923f; }
.m-pill-atualizado, .m-atualizado .m-pill { color: #12923f; border-color: #b9e0c4; }
