/* A moldura das telas novas dentro da janela do /nova (Casca 2c; frontend/nova/moldura.js). Só os tokens do /nova (nova.css):
   vidro escuro, lilás e as três cores de estado; a cor nunca é a única pista (a etiqueta traz o texto). Nada se mexe sozinho. */
.nv-din { position: relative; }
.nv-m { display: grid; gap: 14px; }
.nv-m-cabeca { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.nv-m-titulo { margin: 0; font: 600 22px/1.15 var(--sans, system-ui); letter-spacing: -.01em; color: var(--nv-txt-1); }
.nv-m-frase { margin: 4px 0 0; font: 400 15px/1.35 var(--serifa, 'Cormorant Garamond', serif); color: var(--nv-txt-2); }
.nv-m-acoes, .nv-m-g-bts { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.nv-bt-forte { background: rgba(184, 153, 255, .32); border-color: rgba(205, 182, 255, .55); font-weight: 600; }
.nv-bt:disabled { opacity: .55; cursor: default; }
.nv-bt:focus-visible, .nv-chip:focus-visible, .nv-m-tabela tr:focus-visible, .nv-link:focus-visible { outline: 2px solid var(--nv-lilas-forte); outline-offset: 2px; }
.nv-link { background: none; border: 0; padding: 0; color: var(--nv-lilas-forte); font: 500 12.5px var(--sans, system-ui); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }

.nv-m-numeros { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.nv-m-num { display: grid; gap: 2px; padding: 10px 12px; border-radius: 12px; background: var(--nv-vidro-claro); border: 1px solid var(--nv-borda); }
.nv-m-num-rot { font-size: 12px; color: var(--nv-txt-3); }
.nv-m-num b { font: 600 18px/1.2 var(--sans, system-ui); color: var(--nv-txt-1); font-variant-numeric: tabular-nums; }
.nv-m-num small { font-size: 11.5px; color: var(--nv-txt-3); }
.nv-m-num[data-tom="bom"] b { color: var(--nv-bom); }
.nv-m-num[data-tom="ruim"] b { color: var(--nv-ruim); }
.nv-m-num[data-tom="atencao"] b { color: var(--nv-atencao); }

.nv-m-filtros { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.nv-m-filtros .nv-chip[aria-pressed="true"] { border-color: var(--nv-lilas); background: rgba(184, 153, 255, .2); color: var(--nv-txt-1); }
.nv-m-segmentos .nv-chip { font-weight: 600; }
/* 18/10 (o Olheiro: na Agenda, a coluna Próximos cobria a grade dos recursos e os botões dela): a coluna implícita "auto" crescia até a
   largura mínima do conteúdo (a grade da Agenda é max-content) e passava por baixo do apoio; com minmax(0, 1fr) quem rola é a área de rolar */
.nv-m-grade { display: grid; gap: 14px; grid-template-columns: minmax(0, 1fr); }
.nv-m-grade.com-apoio { grid-template-columns: minmax(0, 1fr) minmax(220px, 280px); }
@media (max-width: 1100px) { .nv-m-grade.com-apoio { grid-template-columns: minmax(0, 1fr); } }
.nv-m-miolo { display: grid; gap: 12px; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.nv-m-apoio { display: grid; gap: 10px; align-content: start; }
.nv-m-cartao { padding: 12px; border-radius: 12px; background: rgba(184, 153, 255, .06); border: 1px solid rgba(205, 182, 255, .2); }
.nv-m-cartao h4 { margin: 0 0 6px; font: 600 13px var(--sans, system-ui); color: var(--nv-lilas-forte); }

.nv-m-tabela { overflow-x: auto; border-radius: 12px; border: 1px solid var(--nv-borda); }
.nv-m-tabela table { width: 100%; border-collapse: collapse; font-size: 13px; }
.nv-m-tabela th { text-align: left; font: 500 11.5px var(--sans, system-ui); color: var(--nv-txt-3); padding: 8px 10px; border-bottom: 1px solid var(--nv-borda); white-space: nowrap; }
.nv-m-tabela td { padding: 8px 10px; border-bottom: 1px solid rgba(255, 255, 255, .05); color: var(--nv-txt-2); vertical-align: middle; }
.nv-m-tabela td.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--nv-txt-1); }
.nv-m-tabela tbody tr:not(.nv-m-gaveta-linha) { cursor: pointer; }
.nv-m-tabela tbody tr:not(.nv-m-gaveta-linha):hover, .nv-m-tabela tr[aria-current="true"] { background: rgba(184, 153, 255, .08); }
.nv-m-gaveta-linha td { background: rgba(0, 0, 0, .18); padding: 10px 12px 12px; }
/* a gaveta cabe na parte da tabela que se vê: no celular a tabela rola para o lado, e a gaveta tinha a largura da tabela inteira, cortada à
   direita. Ela fica parada à esquerda, do tamanho da caixa que rola (20/10, E9 de theus/2026-10-20-1210-proposta-viva-em-propostas-babel-os-com.md).
   Na janela da página oficial, o celular.css põe max-width: 100% !important em todo div (100% da célula, que é a tabela inteira): a gaveta
   responde com a mesma força. */
.nv-m-tabela:has(> table > tbody > .nv-m-gaveta-linha) { container-type: inline-size; }
.nv-m-gaveta-linha > td > .nv-m-gaveta { position: sticky; left: 12px; max-width: calc(100cqw - 24px); }
html.nova-2 .nv-janela .nv-j-corpo .nv-m-gaveta-linha > td > .nv-m-gaveta { max-width: calc(100cqw - 24px) !important; }
.nv-m-g { display: grid; gap: 8px; }
.nv-m-g p { margin: 0; color: var(--nv-txt-2); font-size: 13px; }
.nv-m-g h4 { margin: 0; font: 600 13px var(--sans, system-ui); color: var(--nv-txt-1); }
.nv-m-porque { margin: 0; padding-left: 18px; display: grid; gap: 4px; font-size: 13px; }
.nv-m-porque li[data-tom="bom"] { color: var(--nv-bom); }
.nv-m-porque li[data-tom="atencao"] { color: var(--nv-atencao); }

.nv-m-etq { display: inline-block; margin-left: 6px; padding: 1px 8px; border-radius: 999px; font-size: 11.5px; border: 1px solid var(--nv-borda-forte); color: var(--nv-txt-2); white-space: nowrap; }
.nv-m-etq[data-tom="bom"] { color: var(--nv-bom); border-color: color-mix(in oklch, var(--nv-bom) 45%, transparent); }
.nv-m-etq[data-tom="ruim"] { color: var(--nv-ruim); border-color: color-mix(in oklch, var(--nv-ruim) 45%, transparent); }
.nv-m-etq[data-tom="atencao"] { color: var(--nv-atencao); border-color: color-mix(in oklch, var(--nv-atencao) 45%, transparent); }

.nv-m-sim { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 10px 12px; border-radius: 12px;
  background: rgba(184, 153, 255, .12); border: 1px solid rgba(205, 182, 255, .4); }
.nv-m-sim p { margin: 0; color: var(--nv-txt-1); font-size: 13.5px; }
.nv-m-sim-bts { display: flex; gap: 8px; }
.nv-m-eco { margin: 0; min-height: 1.2em; font: italic 13px var(--serifa, serif); color: var(--nv-txt-3); opacity: 0; transition: opacity .2s; }
.nv-m-eco[data-vivo] { opacity: 1; }
.nv-m-diga { margin: 0; font: italic 13px var(--serifa, serif); color: var(--nv-txt-3); }
.nv-m-erro { margin: 0; color: var(--nv-ruim); font-size: 12.5px; min-height: 1em; }

.nv-m-camada { position: absolute; inset: 0; z-index: 5; display: grid; place-items: start center; padding-top: 24px; background: rgba(8, 7, 26, .55); }
.nv-m-camada[hidden] { display: none; }
.nv-m-camada > .nv-m-caixa { position: relative; width: min(520px, 100%); background: oklch(0.16 0.035 270 / .97); border: 1px solid var(--nv-borda-forte); border-radius: 16px; padding: 16px; box-shadow: 0 18px 50px rgba(0, 0, 0, .45); }
.nv-m-fechar { position: absolute; z-index: 6; margin: 8px 0 0 calc(min(520px, 100%) - 40px); width: 30px; height: 30px; border-radius: 999px; border: 1px solid var(--nv-borda); background: transparent; color: var(--nv-txt-2); cursor: pointer; font-size: 18px; }
.nv-m-caixa { display: grid; gap: 10px; }
.nv-m-caixa h4 { margin: 0; font: 600 16px var(--sans, system-ui); color: var(--nv-txt-1); }
.nv-m-campos { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
.nv-m-campo { display: grid; gap: 4px; font-size: 12px; color: var(--nv-txt-3); }
.nv-m-caixa input, .nv-m-caixa select, .nv-m-pin input { min-height: 38px; padding: 7px 10px; border-radius: 10px; border: 1px solid var(--nv-borda-forte); background: rgba(255, 255, 255, .06); color: var(--nv-txt-1); font: 14px var(--sans, system-ui); }
.nv-m-caixa select option { background: #15122b; }
.nv-m-inline { grid-template-columns: auto 1fr auto auto auto; align-items: center; }
@media (max-width: 760px) { .nv-m-inline { grid-template-columns: 1fr; } }

.nv-m-saude { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.nv-m-anel { --p: 0; width: 132px; height: 132px; border-radius: 50%; display: grid; place-items: center; align-content: center;
  background: radial-gradient(closest-side, oklch(0.14 0.03 268) 78%, transparent 79%), conic-gradient(var(--nv-lilas) calc(var(--p) * 1%), rgba(255, 255, 255, .08) 0); }
.nv-m-anel b { font: 600 30px/1 var(--sans, system-ui); color: var(--nv-txt-1); }
.nv-m-anel small { color: var(--nv-txt-3); font-size: 12px; }
.nv-m-saude[data-tom="bom"] .nv-m-anel { background: radial-gradient(closest-side, oklch(0.14 0.03 268) 78%, transparent 79%), conic-gradient(var(--nv-bom) calc(var(--p) * 1%), rgba(255, 255, 255, .08) 0); }
.nv-m-saude[data-tom="ruim"] .nv-m-anel { background: radial-gradient(closest-side, oklch(0.14 0.03 268) 78%, transparent 79%), conic-gradient(var(--nv-ruim) calc(var(--p) * 1%), rgba(255, 255, 255, .08) 0); }
.nv-m-partes { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: 13px; }
.nv-m-partes li { display: flex; gap: 10px; justify-content: space-between; min-width: 260px; }
.nv-m-bloq { color: var(--nv-txt-3); font-size: 12px; }
.nv-m-hoje, .nv-m-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: 13px; }
.nv-m-hoje li { display: flex; justify-content: space-between; gap: 8px; }
.nv-m-lista li[data-tom="ruim"] { color: var(--nv-ruim); }

.nv-m-fita { display: flex; align-items: flex-end; gap: 6px; height: 140px; padding: 8px 4px 0; border-bottom: 1px solid var(--nv-borda); }
.nv-m-barra { flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 4px; }
.nv-m-barra span { width: 100%; max-width: 46px; border-radius: 6px 6px 0 0; background: var(--nv-lilas); }
.nv-m-barra[data-tipo="previsto"] span { background: transparent; border: 1.5px dashed var(--nv-lilas); border-bottom: 0; }
.nv-m-barra[data-neg] span { background: var(--nv-ruim); }
.nv-m-barra[data-neg][data-tipo="previsto"] span { background: transparent; border-color: var(--nv-ruim); }
.nv-m-barra small { font-size: 10.5px; color: var(--nv-txt-3); }
.nv-m-limite { height: 12px; border-radius: 999px; background: rgba(255, 255, 255, .08); overflow: hidden; }
.nv-m-limite span { display: block; height: 100%; background: var(--nv-bom); }
.nv-m-limite span[data-tom="atencao"] { background: var(--nv-atencao); }
.nv-m-limite span[data-tom="ruim"] { background: var(--nv-ruim); }
.nv-m-linha { list-style: none; margin: 0; padding: 0; display: flex; gap: 3px; }
.nv-m-linha li { font-size: 10px; padding: 1px 5px; border-radius: 6px; color: var(--nv-txt-3); border: 1px solid var(--nv-borda); }
.nv-m-linha li[data-feito] { color: var(--nv-txt-1); background: rgba(184, 153, 255, .22); border-color: rgba(205, 182, 255, .45); }
[data-tom="ruim"] { --tom: var(--nv-ruim); }
.nv-m-tabela span[data-tom="ruim"] { color: var(--nv-ruim); }

.nv-m-pin { display: grid; gap: 10px; max-width: 320px; margin: 24px auto; text-align: center; }
.nv-m-pin h3 { margin: 0; font: 600 18px var(--sans, system-ui); color: var(--nv-txt-1); }
.nv-m-pin input { text-align: center; letter-spacing: .4em; font-size: 20px; }
html.modo-chat .nv-m-grade.com-apoio { grid-template-columns: minmax(0, 1fr); }
html.modo-chat .nv-m-tabela table { font-size: 12.5px; }
@media (prefers-reduced-motion: reduce) { .nv-m-eco { transition: none; } }
.nv-m-saude[data-tom="atencao"] .nv-m-anel { background: radial-gradient(closest-side, oklch(0.14 0.03 268) 78%, transparent 79%), conic-gradient(var(--nv-atencao) calc(var(--p) * 1%), rgba(255, 255, 255, .08) 0); }
/* Vendas › Contratos (8c): o documento rolável, as partes com a linha do tempo e o link gerado na hora */
.nv-m-doc { max-height: 280px; overflow: auto; padding: 14px 16px; border-radius: 10px; background: #f4f1fb; color: #1c1640; }
.nv-m-doc pre { margin: 0; white-space: pre-wrap; font: 13px/1.55 Georgia, 'Times New Roman', serif; }
.nv-m-partes-contrato { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.nv-m-partes-contrato li { display: grid; gap: 4px; padding: 8px 10px; border-radius: 10px; border: 1px solid var(--nv-borda); }
.nv-m-partes-contrato small { color: var(--nv-txt-3); }
.nv-m-linkarea { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.nv-m-link { flex: 1 1 320px; min-height: 36px; padding: 6px 10px; border-radius: 10px; border: 1px solid var(--nv-borda-forte); background: rgba(255, 255, 255, .06); color: var(--nv-txt-1); font: 12.5px ui-monospace, monospace; }
a.nv-bt { text-decoration: none; display: inline-flex; align-items: center; }
/* o quadro transplantado (frontend/nova/quadros/): o HTML do desenho como ele é; só a altura do painel acompanha a janela */
.nv-quadro { display: flex; flex-direction: column; gap: 10px; width: 100%; }
.nv-molde-lugar, .nv-molde { width: 100%; min-width: 0; }
.nv-molde > .nv-molde-painel { width: 100%; box-sizing: border-box; }
.nv-molde-painel { min-height: 740px; color: #efecff; font: 400 14px/1.45 'Inter', system-ui, sans-serif; }
.nv-molde [data-acao] { transition: filter .15s; }
.nv-molde [data-acao]:hover, .nv-molde [data-acao]:focus-visible { filter: brightness(1.25); outline: none; }
.nv-molde [data-acao]:focus-visible { box-shadow: 0 0 0 2px #cdbfff; }
.nv-molde-vazio { padding: 18px 14px; font-size: 13px; color: var(--ink-3); text-align: center; }
/* Contratos (090): o formulário com as escolhas da assinatura, o hash inteiro com copiar, as provas e o histórico inteiro */
.nv-ct-form { max-height: calc(100% - 32px); overflow: auto; overscroll-behavior: contain; }
.nv-ct-dica { margin: 0; color: var(--nv-txt-2); font-size: 12.5px; line-height: 1.45; max-width: 72ch; /* conserto do Olheiro */}
.nv-ct-grupo { display: grid; gap: 6px; margin: 0; padding: 10px 12px; border: 1px solid var(--nv-borda); border-radius: var(--r-md); }
.nv-ct-grupo legend { padding: 0 6px; color: var(--nv-txt-1); font-size: 13px; font-weight: 600; }
.nv-ct-marca { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; color: var(--nv-txt-1); font-size: 13px; cursor: pointer; }
.nv-ct-marca > span { flex: 1 1 0; min-width: 0; }
.nv-ct-marca small { flex-basis: 100%; padding-left: 24px; }
.nv-ct-marca input { width: 16px; height: 16px; accent-color: var(--nv-lilas-forte); }
.nv-ct-hash { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.nv-ct-hash p { flex: 1 1 100%; overflow-wrap: anywhere; font-family: ui-monospace, monospace; }
.nv-ct-provas { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; }
.nv-ct-historico, .nv-ct-cobrancas { margin: 0; padding-left: 18px; display: grid; gap: 4px; color: var(--nv-txt-2); font-size: 13px; }
.nv-ct-historico small { color: var(--nv-txt-2); }
.nv-ct-historico li > div:not(:empty) { display: grid; gap: 6px; margin-top: 6px; }
.nv-ct-texto { min-height: 60px; padding: 8px 10px; border-radius: var(--r-md); border: 1px solid var(--nv-borda-forte); background: var(--nv-vidro-claro); color: var(--nv-txt-1); font: inherit; }
/* Imobiliária (092): os filtros que filtram, as fotos da ficha, o funil das visitas e propostas, o mapa por bairro e a vistoria */
.nv-im-filtros { display: flex; flex-wrap: wrap; gap: 8px; align-items: end; margin: 4px 0 10px; }
.nv-im-filtros select, .nv-im-filtros input:not([type=checkbox]) { min-height: 36px; padding: 6px 10px; border-radius: var(--r-md); border: 1px solid var(--nv-borda-forte); background: var(--nv-vidro-claro); color: var(--nv-txt-1); font: inherit; }
.nv-im-filtros input[type=month] { min-width: 160px; }
.nv-im-fotos { display: flex; flex-wrap: wrap; gap: 8px; }
.nv-im-fotos figure { margin: 0; display: grid; gap: 4px; width: 140px; }
.nv-im-fotos img { width: 140px; height: 96px; object-fit: cover; border-radius: var(--r-sm); border: 1px solid var(--nv-borda); }
.nv-im-fotos figcaption { color: var(--nv-txt-2); font-size: 12px; }
.nv-im-ficha, .nv-im-detalhe { display: grid; gap: 10px; }
.nv-im-ficha .nv-m-g-bts, .nv-im-detalhe .nv-m-g-bts { align-items: end; }
.nv-im-funil { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(170px, 1fr); gap: 8px; overflow-x: auto; padding-bottom: 6px; }
.nv-im-coluna { display: grid; align-content: start; gap: 6px; padding: 8px; border: 1px solid var(--nv-borda); border-radius: var(--r-md); min-height: 120px; }
.nv-im-coluna h4 { margin: 0 0 2px; color: var(--nv-txt-1); font-size: 13px; }
.nv-im-card { display: grid; gap: 2px; text-align: left; padding: 8px 10px; border-radius: var(--r-sm); border: 1px solid var(--nv-borda-forte); background: var(--nv-vidro-claro); color: var(--nv-txt-1); font: inherit; cursor: pointer; }
.nv-im-card span, .nv-im-card small { color: var(--nv-txt-2); font-size: 12px; }
.nv-im-card:hover, .nv-im-card:focus-visible { border-color: var(--nv-lilas); outline: none; }
.nv-im-mapa { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.nv-im-comodos { display: grid; gap: 10px; }
.nv-im-relatorio { white-space: pre-wrap; margin: 0; padding: 10px 12px; border-radius: var(--r-md); border: 1px solid var(--nv-borda); color: var(--nv-txt-1); font: 13px/1.5 ui-monospace, monospace; }
.nv-imob .nv-m-g input:not([type=checkbox]):not([type=file]), .nv-imob .nv-m-g select, .nv-im-detalhe input:not([type=checkbox]):not([type=file]), .nv-im-detalhe select,
.nv-imob .nv-m-cartao input:not([type=checkbox]):not([type=file]), .nv-imob .nv-m-cartao select { min-height: 38px; padding: 7px 10px; border-radius: var(--r-md); border: 1px solid var(--nv-borda-forte); background: var(--nv-vidro-claro); color: var(--nv-txt-1); font: inherit; }
.nv-im-detalhe .nv-m-campo, .nv-imob .nv-m-g .nv-m-campo { min-width: 200px; }

/* Contratos refeito pelo desenho aprovado (16/10, Claude Design; frontend/nova/contratos.js): as abas por quem age, os grupos com o próximo
   passo na linha, o contrato aberto ao lado da lista, o Novo contrato em passos, os modelos e a marca da empresa (marca.js). Só tokens. */
/* a camada das caixas (Novo contrato, o link) mora dentro do corpo da aba: com a lista curta, o corpo baixo cortava o fim da caixa (foto de 16/10) */
.nv-aba-corpo.nv-ct-raiz { min-height: 620px; }
/* 17/10: a altura mínima esticava as linhas da grade (o cabeçalho com 110 px, um vão vazio antes das abas): as linhas ficam no tamanho delas */
.nv-ct-raiz > .nv-m { align-content: start; }
.nv-ct-abas { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; }
.nv-ct-abas .nv-chip { margin: 0; display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px; font-size: 13px; }
.nv-ct-abas .nv-chip[aria-pressed="true"] { border-color: var(--line-3); background: var(--brand-tint-2); color: var(--ink); font-weight: 600; }
.nv-ct-conta { min-width: 22px; padding: 0 7px; border-radius: var(--r-pill); background: var(--glass-2); color: var(--ink-2); font-size: 12px; font-weight: 700; line-height: 22px; text-align: center; box-sizing: border-box; }
.nv-ct-abas .nv-chip[aria-pressed="true"] .nv-ct-conta { background: var(--brand); color: var(--brand-ink); }
.nv-ct-mestre { display: grid; gap: 14px; align-items: start; }
.nv-ct-mestre[data-aberto] { grid-template-columns: minmax(0, 1fr) minmax(320px, 500px); }
.nv-ct-mestre[data-aberto] .nv-ct-larga { display: none; }
.nv-ct-lista { min-width: 0; }
.nv-ct-tabela td { vertical-align: top; }
.nv-ct-tabela td b, .nv-ct-tabela td > span { color: var(--ink); }
.nv-ct-sub { display: block; margin-top: 2px; color: var(--ink-3); font-size: 12px; }
.nv-ct-grupo-linha th { padding: 16px 10px 6px; border-bottom: 1px solid var(--line); color: var(--brand-2); font-size: 13px; font-weight: 600; white-space: normal; cursor: default; }
.nv-ct-tabela tbody tr.nv-ct-grupo-linha:hover { background: transparent; }
.nv-ct-passo-bt { white-space: nowrap; }
.nv-ct-assinaturas { display: inline-flex; align-items: center; gap: 5px; color: var(--ink); white-space: nowrap; }
.nv-ct-ponto { width: 10px; height: 10px; border-radius: 50%; border: 1.5px solid var(--ink-3); box-sizing: border-box; }
.nv-ct-ponto.feito { border-color: var(--ok); background: var(--ok); }
.nv-ct-painel { position: sticky; top: 0; max-height: 82vh; overflow: auto; overscroll-behavior: contain; padding: 16px; box-sizing: border-box; border: 1px solid var(--line-2); border-radius: var(--r-md); background: var(--bg-1); box-shadow: var(--shadow); }
.nv-ct-painel[hidden] { display: none; }
.nv-ct-aberto { display: grid; gap: 12px; }
.nv-ct-painel-cabeca { display: flex; gap: 10px; align-items: flex-start; }
.nv-ct-painel-titulo { flex: 1; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; }
.nv-ct-painel-titulo h3 { margin: 0; color: var(--ink); font-size: 18px; line-height: 1.3; outline: none; }
.nv-ct-painel-titulo .nv-ct-sub { flex-basis: 100%; }
.nv-ct-fechar { min-width: 44px; min-height: 44px; justify-content: center; font-size: 18px; }
.nv-ct-painel-bts { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.nv-ct-cartao { display: grid; gap: 8px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--glass); }
.nv-ct-cartao h4 { margin: 0; color: var(--ink-2); font-size: 13px; font-weight: 600; }
.nv-ct-cartao > summary { color: var(--ink-2); font-size: 13px; font-weight: 600; cursor: pointer; min-height: 32px; display: flex; align-items: center; }
.nv-ct-parte { display: grid; gap: 4px; padding: 8px 0 0; border-top: 1px solid var(--line); }
.nv-ct-cartao h4 + .nv-ct-parte { border-top: 0; padding-top: 0; }
.nv-ct-parte-cabeca { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; color: var(--ink); font-size: 13px; }
.nv-ct-parte small { color: var(--ink-2); font-size: 12px; }
.nv-ct-parte-bts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.nv-ct-valor { margin: 0; color: var(--ink); font-size: 24px; font-weight: 600; }
.nv-ct-recusa { margin: 0; padding: 10px 12px; border-radius: var(--r-sm); border: 1px solid var(--line-2); background: var(--glass-2); color: var(--ink); font-size: 13px; }
.nv-ct-duvida { display: grid; gap: 6px; }
.nv-ct-duvida p { margin: 0; color: var(--ink); font-size: 13px; }
.nv-ct-mais { position: relative; }
.nv-ct-mais > summary { list-style: none; min-width: 44px; min-height: 40px; display: grid; place-items: center; padding: 0 10px; border: 1px solid var(--line-2); border-radius: var(--r-pill); color: var(--ink); cursor: pointer; box-sizing: border-box; }
.nv-ct-mais > summary::-webkit-details-marker { display: none; }
.nv-ct-mais > summary:focus-visible { outline: 2px solid var(--line-3); outline-offset: 2px; }
.nv-ct-mais[open] > div { position: absolute; right: 0; z-index: 6; margin-top: 6px; min-width: 240px; display: grid; gap: 4px; padding: 8px; border: 1px solid var(--line-2); border-radius: var(--r-md); background: var(--bg-3); box-shadow: var(--shadow); }
.nv-ct-mais[open] > div > .nv-bt { justify-content: flex-start; width: 100%; box-sizing: border-box; text-decoration: none; }
.nv-m-etq[data-tom="info"] { color: var(--info); border-color: var(--line-2); }
.nv-ct-passos { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0; padding: 0; list-style: none; }
.nv-ct-passos li { display: flex; align-items: center; gap: 6px; color: var(--ink-3); font-size: 13px; }
.nv-ct-passos li b { width: 24px; height: 24px; display: grid; place-items: center; border: 1px solid var(--line-2); border-radius: var(--r-pill); font-size: 12px; }
.nv-ct-passos li[aria-current="step"] { color: var(--ink); font-weight: 600; }
.nv-ct-passos li[aria-current="step"] b { border-color: var(--brand); background: var(--brand); color: var(--brand-ink); }
.nv-ct-passos li.feito b { background: var(--brand-tint-2); color: var(--ink); }
.nv-ct-passo { display: grid; gap: 10px; }
.nv-ct-passo[hidden] { display: none; }
.nv-ct-passo h5 { margin: 0; color: var(--ink); font-size: 14px; }
.nv-ct-nav { display: flex; justify-content: space-between; gap: 8px; }
.nv-ct-nav > span { display: flex; gap: 8px; margin-left: auto; }
.nv-ct-resumo { margin: 0; padding: 10px 12px; border-radius: var(--r-sm); background: var(--glass-2); color: var(--ink); font-size: 13px; line-height: 1.5; }
.nv-ct-link { display: grid; gap: 10px; }
.nv-ct-link-bts { display: flex; flex-wrap: wrap; gap: 8px; }
.nv-ct-link-bts a.nv-bt { display: inline-flex; align-items: center; text-decoration: none; }
.nv-ct-modelos { display: grid; gap: 12px; }
.nv-ct-modelos-cabeca { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.nv-ct-modelos-cabeca h3 { flex: 1; margin: 0; color: var(--ink); font-size: 18px; outline: none; }
.nv-ct-modelo { display: grid; gap: 8px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--glass); }
.nv-ct-modelo-cabeca { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; color: var(--ink); }
.nv-ct-campos { display: flex; flex-wrap: wrap; gap: 6px; }
.nv-ct-campos span { padding: 2px 10px; border-radius: var(--r-pill); background: var(--glass-2); color: var(--ink); font-size: 12px; }
.nv-ct-texto-longo { margin: 6px 0 0; max-height: 280px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; }
.nv-ct-como > summary { color: var(--ink-2); font-size: 13px; cursor: pointer; }
@media (max-width: 760px) {
  .nv-ct-mestre[data-aberto] { grid-template-columns: 1fr; }
  .nv-ct-mestre[data-aberto] > .nv-ct-lista { display: none; }
  .nv-ct-painel { position: static; max-height: none; }
}
/* a marca da empresa (marca.js): a prévia do banner com a logo por cima, como no link do contrato */
.nv-marca { display: grid; gap: 10px; }
.nv-marca-previa { position: relative; max-width: 520px; padding-bottom: 30px; }
.nv-marca-banner { display: block; width: 100%; aspect-ratio: 3 / 1; object-fit: cover; border: 1px solid var(--line-2); border-radius: var(--r-md); background: var(--glass-2); box-sizing: border-box; }
.nv-marca-logo { position: absolute; left: 16px; bottom: 0; width: 64px; height: 64px; object-fit: cover; border: 3px solid var(--bg-2); border-radius: 50%; background: var(--glass-3); box-sizing: border-box; }
.nv-marca-vazio { display: grid; place-items: center; color: var(--ink-3); font-size: 12px; text-align: center; }
.nv-marca-bts { display: flex; flex-wrap: wrap; gap: 8px; }

/* a faixa do sistema antigo (historico.js e as origens de Pessoas e Campanhas, 17/10): uma linha da casa no alto do app, só no app com
   registro trazido; aberta, a busca numa linha, os registros numa lista e o registro aberto como ficha */
.n2-origem { display: block; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--glass); margin: 0 0 14px; }
.n2-origem > summary { list-style: none; display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 8px 16px; cursor: pointer; border-radius: var(--r-md); color: var(--ink); font-size: 14px; font-weight: 600; box-sizing: border-box; }
.n2-origem > summary::-webkit-details-marker { display: none; }
.n2-origem > summary::after { content: ""; flex: none; width: 8px; height: 8px; margin-left: auto; border-right: 2px solid var(--ink-3); border-bottom: 2px solid var(--ink-3); transform: translateY(-2px) rotate(45deg); transition: transform .15s; }
.n2-origem[open] > summary::after { transform: translateY(2px) rotate(225deg); }
.n2-origem > summary:hover { background: var(--glass-2); }
.n2-origem > summary:focus-visible { outline: 2px solid var(--line-3); outline-offset: 2px; }
.n2-origem[open] > summary { border-bottom: 1px solid var(--line); border-radius: var(--r-md) var(--r-md) 0 0; }
.n2-origem > :not(summary) { padding: 14px 16px 16px; }
.nv-hist-icone { flex: none; width: 32px; height: 32px; display: grid; place-items: center; border-radius: var(--r-sm); background: var(--glass-2); color: var(--ink-2); }
.nv-hist-icone svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.nv-hist-titulo { display: grid; gap: 2px; min-width: 0; }
.nv-hist-titulo small { font-size: 12px; font-weight: 400; color: var(--ink-3); }
.nv-hist-conta { flex: none; font-size: 12px; font-weight: 500; color: var(--ink-2); border: 1px solid var(--line-2); border-radius: var(--r-pill); padding: 3px 10px; }
.nv-hist-corpo { display: grid; gap: 12px; }
.nv-hist-busca { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 8px; }
.nv-hist-busca input, .nv-hist-busca select { min-height: 40px; padding: 0 12px; border-radius: var(--r-sm); border: 1px solid var(--line-2); background: var(--glass); color: var(--ink); font-size: 14px; font-family: inherit; box-sizing: border-box; }
.nv-hist-busca select { max-width: 240px; }
.nv-hist-busca select option { background: var(--bg-1); }
.nv-hist-busca .nv-bt { min-height: 40px; }
/* a linha dos filtros com a busca (limpanome.js, auditoria.js; 18/10): os chips à esquerda, a busca ao lado; no celular, a busca embaixo, inteira */
.nv-m-filtro-linha { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.nv-m-filtro-linha .nv-m-filtros { margin-bottom: 0; }
.nv-m-filtro-linha input[type="search"] { flex: 0 1 260px; min-height: 40px; padding: 0 12px; border-radius: var(--r-sm); border: 1px solid var(--line-2); background: var(--glass); color: var(--ink); font-size: 14px; font-family: inherit; box-sizing: border-box; }
@media (max-width: 640px) { .nv-m-filtro-linha input[type="search"] { flex-basis: 100%; } }
.nv-hist-lista { list-style: none; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: var(--r-sm); overflow: hidden; }
.nv-hist-lista > li + li { border-top: 1px solid var(--line); }
.nv-hist-item { all: unset; box-sizing: border-box; width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; row-gap: 2px; align-items: center; min-height: 52px; padding: 8px 14px; cursor: pointer; }
.nv-hist-item b { font-size: 14px; font-weight: 600; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nv-hist-item small { grid-column: 1; font-size: 12px; color: var(--ink-3); }
.nv-hist-item::after { content: "›"; grid-column: 2; grid-row: 1 / span 2; color: var(--ink-3); font-size: 18px; }
.nv-hist-item:hover { background: var(--glass-2); }
.nv-hist-item:focus-visible { outline: 2px solid var(--line-3); outline-offset: -2px; }
.nv-hist-vazio { margin: 0; padding: 14px; color: var(--ink-3); font-size: 13px; }
.nv-hist-paginas { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 10px; font-size: 12px; color: var(--ink-3); }
.nv-hist-pagina { margin-right: auto; }
.nv-hist-registro { display: grid; gap: 10px; }
.nv-hist-registro h3 { margin: 0; font-size: 16px; font-weight: 600; color: var(--ink); }
.nv-hist-registro h4 { margin: 0; font-size: 14px; font-weight: 600; color: var(--ink); }
.nv-hist-meta { margin: 0; font-size: 12px; color: var(--ink-3); }
.nv-hist-meta b { color: var(--ink-2); font-weight: 600; }
.nv-hist-acoes { display: flex; flex-wrap: wrap; gap: 8px; }
.nv-hist-texto { margin: 0; padding: 12px 14px; max-height: 320px; overflow: auto; border-radius: var(--r-sm); background: var(--bg-1); border: 1px solid var(--line); color: var(--ink-2); font-size: 13px; white-space: pre-wrap; overflow-wrap: anywhere; }
.nv-hist-ficha, .nv-hist-campo { display: grid; gap: 8px; }
.nv-hist-fonte > summary, .nv-hist-ficha > summary, .nv-hist-campo > summary { list-style: none; cursor: pointer; font-size: 13px; color: var(--ink-2); min-height: 32px; display: flex; align-items: center; gap: 8px; }
.nv-hist-fonte > summary::-webkit-details-marker, .nv-hist-ficha > summary::-webkit-details-marker, .nv-hist-campo > summary::-webkit-details-marker { display: none; }
.nv-hist-fonte > summary::before, .nv-hist-ficha > summary::before, .nv-hist-campo > summary::before { content: ""; flex: none; width: 6px; height: 6px; border-right: 2px solid var(--ink-3); border-bottom: 2px solid var(--ink-3); transform: rotate(-45deg); }
.nv-hist-fonte[open] > summary::before, .nv-hist-ficha[open] > summary::before, .nv-hist-campo[open] > summary::before { transform: rotate(45deg); }
.nv-hist-fonte pre { margin: 6px 0 0; padding: 12px; max-height: 280px; overflow: auto; border-radius: var(--r-sm); background: var(--bg-1); color: var(--ink-2); font-size: 12px; white-space: pre-wrap; overflow-wrap: anywhere; }
@media (max-width: 640px) { .nv-hist-busca { grid-template-columns: 1fr; } .nv-hist-busca select { max-width: none; } .nv-hist-titulo small { display: none; } }
@media (prefers-reduced-motion: reduce) { .n2-origem > summary::after { transition: none; } }

/* Contratos › Modelos (17/10, a foto da conta do Diego): o cartão do fechamento e o da marca no mesmo vidro dos modelos, a escolha do modelo
   como campo da casa (não a nativa branca na largura toda), a seta da casa no "Ler o texto do modelo" e a marca vazia numa faixa baixa */
.nv-ct-raiz, .n2-origem { color-scheme: dark; }
.nv-ct-modelos .nv-m-cartao, .nv-marca.nv-m-cartao { display: grid; gap: 8px; padding: 12px 14px; border-radius: var(--r-md); background: var(--glass); border: 1px solid var(--line); }
.nv-ct-modelos .nv-m-cartao h4, .nv-marca.nv-m-cartao h4 { margin: 0; color: var(--ink); font-size: 14px; font-weight: 600; }
.nv-ct-modelo > details > summary, .nv-ct-modelos .nv-m-cartao details > summary, .nv-ct-como > summary { list-style: none; display: inline-flex; align-items: center; gap: 8px; min-height: 32px; color: var(--ink-2); font-size: 13px; font-weight: 600; cursor: pointer; }
.nv-ct-modelo > details > summary::-webkit-details-marker, .nv-ct-como > summary::-webkit-details-marker { display: none; }
.nv-ct-modelo > details > summary::before, .nv-ct-como > summary::before { content: ""; width: 6px; height: 6px; border-right: 2px solid var(--ink-3); border-bottom: 2px solid var(--ink-3); transform: rotate(-45deg); transition: transform .15s; }
.nv-ct-modelo > details[open] > summary::before, .nv-ct-como[open] > summary::before { transform: rotate(45deg); }
.nv-ct-fechamento { display: grid; gap: 12px; }
.nv-ct-fechamento .nv-m-campo { display: grid; gap: 8px; padding-top: 12px; border-top: 1px solid var(--line); font-size: 13px; color: var(--ink-2); }
.nv-ct-fechamento .nv-m-campo:first-child { padding-top: 0; border-top: 0; }
.nv-ct-fechamento .nv-m-campo > b { color: var(--ink); font-size: 13px; font-weight: 600; }
.nv-ct-fechamento select { width: 100%; max-width: 420px; min-height: 40px; padding: 0 12px; border-radius: var(--r-sm); border: 1px solid var(--line-2); background: var(--glass); color: var(--ink); font-size: 14px; font-family: inherit; box-sizing: border-box; }
.nv-ct-fechamento select option { background: var(--bg-1); }
.nv-ct-fechamento .nv-ct-marca input { width: 18px; height: 18px; accent-color: var(--brand); }
.nv-marca-previa { max-width: 420px; }
.nv-marca-banner.nv-marca-vazio { aspect-ratio: auto; height: 72px; border-style: dashed; background: transparent; }
.nv-marca-logo.nv-marca-vazio { width: 52px; height: 52px; border-style: dashed; }
@media (prefers-reduced-motion: reduce) { .nv-ct-modelo > details > summary::before, .nv-ct-como > summary::before { transition: none; } }
/* as páginas de fora vivas (paginas-vitrine.js, 18/10): o endereço da página com Copiar e Abrir, e o subtítulo do que chegou */
.nv-vitrine-endereco { display: grid; gap: 8px; padding: 12px; border-radius: var(--r-sm); background: var(--glass-2); border: 1px solid var(--line-2); }
.nv-vitrine-endereco .nv-campo { min-height: 40px; padding: 0 12px; border-radius: var(--r-sm); border: 1px solid var(--line-2); background: var(--glass); color: var(--ink); font: 14px var(--font); width: 100%; }
.nv-m-sub { margin: 14px 0 6px; font: 600 14px var(--font); color: var(--ink-2); }
