/* Cadastro centralizado, com rolagem só no corpo e ações sempre acessíveis. */
dialog.formulario-modal{border:0;border-radius:12px;padding:0;margin:auto;background:var(--surface);color:var(--ink);box-shadow:0 24px 60px #00000026;width:min(var(--fm-largura,560px),calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:calc(100dvh - 48px);overflow:hidden}
dialog.formulario-modal[open]{display:flex;flex-direction:column}
dialog.formulario-modal-largo{--fm-largura:860px}
.formulario-modal::backdrop{background:#1c1d1b66}
.formulario-modal-topo{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 24px 12px;flex-shrink:0;border-bottom:1px solid var(--line)}
.formulario-modal-topo h2{font-size:22px;margin:0;padding:0}
.formulario-modal-topo button{flex-shrink:0}
.formulario-modal form{display:flex;flex-direction:column;min-height:0;overflow:hidden;margin:0;border:0;border-radius:0;padding:0;gap:0}
.formulario-modal-corpo{overflow-y:auto;overscroll-behavior:contain;min-height:0;padding:16px 24px;display:flex;flex-direction:column;gap:12px}
.formulario-modal .formulario-modal-acoes{flex-shrink:0;display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin:0;position:static;padding:12px 24px;background:var(--surface);border-top:1px solid var(--line)}
.formulario-modal-acoes button{min-height:44px}
.fp-rolagem{max-width:100%;overflow-x:auto}
.fp-rolagem th,.fp-rolagem td{white-space:nowrap}
.dp-parcela-linha{display:grid;grid-template-columns:8ch minmax(0,1fr) minmax(0,1fr);align-items:end;gap:12px;margin:8px 0}
.dp-parcela-linha input{width:100%;min-width:0}
.dp-previa-parcelas h4{margin:0}
@media(max-width:760px){
 dialog.formulario-modal{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0}
 .formulario-modal-topo{padding:calc(16px + env(safe-area-inset-top)) 16px 12px}
 .formulario-modal-corpo{padding:16px;flex:1}
 .formulario-modal form{flex:1}
 .formulario-modal .formulario-modal-acoes{padding:12px 16px calc(12px + env(safe-area-inset-bottom));flex-direction:column-reverse}
 .formulario-modal-acoes button{width:100%}
 .formulario-modal .dp-form-grade,.formulario-modal .rc-form-grade{grid-template-columns:minmax(0,1fr)}
 .dp-parcela-linha{grid-template-columns:8ch minmax(0,1fr);gap:6px}
 .dp-parcela-linha label:last-child{grid-column:2}
}

.formulario-modal .cb-nova-conta label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.formulario-modal .cb-nova-conta input,.formulario-modal .cb-nova-conta select{width:100%;min-width:0}
/* Celular: a tabela de parcelas vira uma lista de cartões, sem rolagem lateral
   (o sistema inteiro é para 390px). Cada célula mostra o nome da coluna. */
@media (max-width:560px){
 .fp-rolagem{overflow-x:visible}
 .fp-rolagem table,.fp-rolagem tbody,.fp-rolagem tfoot,.fp-rolagem tr{display:block}
 .fp-rolagem thead{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%)}
 .fp-rolagem tbody tr{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;padding:10px 0;border-bottom:1px solid var(--line)}
 .fp-rolagem tbody th,.fp-rolagem tbody td{display:block;border:0;padding:0;white-space:normal}
 .fp-rolagem tbody [data-rotulo]::before{content:attr(data-rotulo);display:block;font-size:11px;color:var(--muted);font-weight:400}
 .fp-rolagem tfoot tr{display:flex;justify-content:space-between;padding-top:8px}
 .fp-rolagem tfoot td:empty{display:none}
 .fp-dica-lateral{display:none}
}

/* Edição financeira compartilha o modal de cadastro e conserva as ações visíveis. */
.ef-grade{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.ef-grade label{display:flex;flex-direction:column;gap:4px;min-width:0;margin:0;font-size:.8rem;color:var(--muted)}
.ef-grade input,.ef-grade select{width:100%;min-width:0;margin-top:0}
.ef-parcela{border:1px solid var(--line);border-radius:8px;padding:12px;margin:10px 0}
.ef-parcela-topo{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.ef-travada{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}
.ef-travada svg{width:16px;height:16px;flex-shrink:0}
.rc-historico dd{white-space:pre-wrap;overflow-wrap:anywhere;margin-inline-start:0}
@media(max-width:760px){.ef-grade{grid-template-columns:minmax(0,1fr)}}

/* R2 item 6: "Mais opções" do cadastro de despesa, com o tratamento do custo. */
.tc-mais-opcoes{border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin:4px 0}
.tc-mais-opcoes>summary{cursor:pointer;font-size:.85rem;font-weight:600;min-height:32px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tc-resumo{font-weight:400;color:var(--muted);font-size:.8rem}
.tc-campo{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 8px;align-items:center;margin-top:8px}
.tc-campo label{font-size:.8rem;color:var(--muted);margin:0}
.tc-campo select,.tc-campo .tc-dica{grid-column:1/-1;min-width:0;width:100%;margin:0}
.tc-dica{font-size:.78rem;color:var(--muted)}
.tc-ajuda{justify-self:end}
.tc-ajuda>summary{list-style:none;cursor:pointer;inline-size:24px;block-size:24px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font-size:.8rem;font-weight:700}
.tc-ajuda>summary::-webkit-details-marker{display:none}
.tc-ajuda[open]{grid-column:1/-1;justify-self:stretch}
.tc-ajuda ul{margin:6px 0 0;padding-left:18px;font-size:.8rem;color:var(--muted)}

/* R2 item 12 (20/10): janela central comum (public/janela.js). A rolagem é do
   corpo; o topo de cada tela fica preso no alto, e abaixo de 760px a janela
   ocupa a tela inteira (regra de dialog.formulario-modal acima). */
dialog.janela-sem-entrada[open],dialog.janela-sem-entrada[open]::backdrop{animation:none}
dialog.janela-central .janela-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
/* A regra `.formulario-modal form` acima é do cadastro, em que o formulário é
   filho direto do <dialog> e rola por dentro. Na janela central quem rola é o
   corpo: o formulário volta a crescer normal, e os formulários de ação do
   detalhe (pagamento, anulação) mantêm a própria moldura. */
dialog.janela-central .janela-corpo form{overflow:visible;min-height:auto;flex:none}
dialog.janela-central .dp-form,dialog.janela-central .rc-form{gap:8px;margin-top:14px;border:1px solid var(--line);border-radius:10px;padding:12px}
.janela-navegacao{display:flex;gap:6px}
.janela-navegacao button{padding:6px 10px;font-size:.8rem;min-height:36px;white-space:nowrap}
@media(max-width:760px){
 dialog.janela-central{height:100dvh}
 .janela-navegacao button{min-height:44px}
}

/* R3: as prévias usam o mesmo diálogo do R2, com espaço para títulos longos. */
.r3-janela .janela-corpo{padding:0 24px 20px}
.r3-janela .r3-janela-topo,.r3-janela .painel-topo,.r3-janela .fn-painel-topo{height:auto;min-height:0;padding:16px 0 12px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;background:var(--surface);border-bottom:1px solid var(--line)}
.r3-janela h2{margin:0;font-size:20px;overflow-wrap:anywhere;min-width:0}
.r3-janela-acoes{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap}
.r3-janela .r3-janela-topo>div:first-child,.r3-janela .painel-identidade{min-width:0}
.r3-janela .drawer-dados{overflow-wrap:anywhere}
.r3-janela .drawer-dados dd{min-width:0;white-space:normal;overflow-wrap:anywhere}
.r3-janela .drawer-acoes,.r3-janela .painel-rodape{display:flex;flex-wrap:wrap;gap:8px}
.projeto-janela .painel-corpo{overflow:visible;padding:16px 0}
.projeto-janela .painel-topo{flex-shrink:0}
.projeto-janela .painel-rodape{position:static;padding:12px 0}
.fornecedor-janela .fn-painel{position:static;border:0;padding:0;max-width:none;width:auto}
.fornecedor-janela .fn-painel-topo{flex-wrap:wrap}
.fornecedor-janela .fn-painel-corpo{overflow:visible;max-height:none}
.r3-janela .resumo-calculo{position:static;border:0;padding:16px 0}
.r3-janela .resumo-calculo>h2{display:none}
/* Formulários: cabeçalho e ações fora da área rolável, como no R2. */
dialog.servico-janela .janela-corpo{display:flex;flex-direction:column;padding:0;overflow:hidden}
.servico-janela .r3-janela-topo{padding:16px 24px 12px;flex-shrink:0}
dialog.servico-janela .janela-corpo form{flex:1;min-height:0;overflow:hidden}
dialog.fornecedor-formulario .janela-corpo{padding:0;display:flex;flex-direction:column;overflow:hidden}
dialog.fornecedor-formulario .janela-corpo form{flex:1;min-height:0;overflow:hidden}
.fornecedor-formulario .fn-duas{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){
 .r3-janela .janela-corpo{padding:0 16px 16px}
 .r3-janela .r3-janela-topo,.r3-janela .painel-topo{flex-wrap:wrap;padding-top:calc(12px + env(safe-area-inset-top))}
 .r3-janela-acoes{width:100%;justify-content:space-between;order:-1}
 .r3-janela .fn-painel-topo>div:first-child{order:1;width:100%}
 .r3-janela .drawer-acoes>*{flex:1 1 100%;white-space:normal}
 .r3-janela .painel-par{grid-template-columns:minmax(0,1fr)}
 .servico-janela .r3-janela-topo{padding-inline:16px}
 .fornecedor-formulario .fn-duas{grid-template-columns:minmax(0,1fr)}
}

/* A base de 140px da ação do fornecedor é largura, não altura de coluna. */
.fornecedor-formulario .fn-formulario-acoes button{flex:0 0 auto;min-height:44px}
