/* Rocha Imob — estilos próprios do projeto.
   Carregado depois de padroes.css e antes de utilitarios.css.
   Regras do Design System: só var(--cor-…), nada de cor fixa; prefixo por módulo. */

/* ---------- Login ---------- */
.login-logo {
    max-width: 220px;
    height: auto;
}

.login-alerta {
    margin-bottom: 1.25rem;
}

.box-login .login-rodape {
    margin-bottom: 0;
    font-size: 0.8rem;
}

/* ---------- Páginas de erro ---------- */
.pagina-erro {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 1rem;
    background-color: var(--cor-fundo);
}

.pagina-erro-caixa {
    max-width: 440px;
    width: 100%;
    text-align: center;
    padding: 2.5rem 2rem;
}

.pagina-erro-caixa .icone-circulo {
    margin: 0 auto 1rem;
}

.pagina-erro-codigo {
    font-size: 4.5rem;
    line-height: 1;
    margin: 0 0 0.5rem;
    color: var(--cor-primaria);
}

/* ---------- Empreendimentos ---------- */
.emp-dados {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem 1.5rem;
    margin: 0;
}

.emp-dados dt {
    font-size: 0.75rem;
    color: var(--cor-texto-secundario);
    margin-bottom: 0.15rem;
}

.emp-dados dd {
    margin: 0;
    font-weight: 600;
    overflow-wrap: anywhere;
}

.emp-resumo-linha {
    padding: 0.35rem 0.5rem;
    border-radius: var(--borda-raio-sm);
    color: var(--cor-texto);
}

.emp-resumo-linha:hover {
    background-color: var(--cor-fundo);
    color: var(--cor-texto);
}

@media (max-width: 600px) {
    .emp-dados {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* ---------- Botão com envio em andamento (app.js) ---------- */
.btn.enviando {
    opacity: 0.7;
    pointer-events: none;
}

.btn.enviando svg {
    animation: girar 1s linear infinite;
}

@keyframes girar {
    to { transform: rotate(360deg); }
}

/* ---------- Barra de filtros (select + busca lado a lado) ---------- */
.filtros-linha {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    flex: 1 1 auto;
}

.filtros-linha > select.form-controle,
.filtros-linha > .campo-com-icone {
    flex: 1 1 220px;
    max-width: 320px;
}

/* ---------- Adicionar empreendimento (mensagem da consulta) ---------- */
.emp-consulta-msg {
    margin-bottom: 1rem;
    padding: 0.6rem 0.85rem;
    border-radius: var(--borda-raio-sm);
    font-size: 0.85rem;
}

.emp-consulta-info {
    background-color: var(--cor-fundo);
    color: var(--cor-texto-secundario);
}

.emp-consulta-erro {
    background-color: var(--cor-erro-fundo);
    color: var(--cor-erro);
}

.emp-consulta-erro a {
    font-weight: 600;
}

/* =====================================================================
   Imobiliárias e corretores (parc-) — telas internas
   ===================================================================== */
.parc-abas-status {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.parc-aba {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.8rem;
    border: 1px solid var(--cor-borda);
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--cor-texto-secundario);
    background-color: var(--cor-painel);
}

.parc-aba:hover {
    color: var(--cor-texto);
    border-color: var(--cor-borda-foco);
}

.parc-aba.ativo {
    color: var(--cor-primaria);
    border-color: var(--cor-primaria);
    background-color: rgba(var(--cor-primaria-rgb), 0.08);
}

.parc-aba-qtd {
    min-width: 1.4rem;
    padding: 0 0.35rem;
    border-radius: 999px;
    font-size: 0.72rem;
    text-align: center;
    background-color: var(--cor-fundo);
    color: var(--cor-texto-secundario);
}

.parc-aba-qtd.destaque {
    background-color: var(--cor-primaria);
    color: var(--cor-sobre-primaria);
}

/* Opções do tipo de cadastro no modal de novo link */
.parc-opcoes {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.parc-opcao {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--borda-raio-sm);
    cursor: pointer;
}

.parc-opcao:has(input:checked) {
    border-color: var(--cor-primaria);
    background-color: rgba(var(--cor-primaria-rgb), 0.06);
}

.parc-opcao:has(input:disabled) {
    opacity: 0.55;
    cursor: not-allowed;
}

.parc-opcao input {
    margin-top: 0.2rem;
    accent-color: var(--cor-primaria);
}

.parc-opcao strong {
    display: block;
    font-size: 0.9rem;
}

.parc-opcao small {
    display: block;
    font-size: 0.78rem;
    color: var(--cor-texto-secundario);
}

.parc-compartilhar .form-controle {
    min-width: 0;
}

.parc-dados-coluna {
    grid-template-columns: minmax(0, 1fr);
}

.parc-doc-link {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.2rem 0;
    font-size: 0.82rem;
    min-width: 0;
}

.parc-historico {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.parc-historico-item {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
}

.parc-historico-item > svg {
    flex-shrink: 0;
    margin-top: 0.15rem;
}

/* =====================================================================
   Cadastro público (pub-) — página aberta pelo link do WhatsApp
   ===================================================================== */
.pagina-publica {
    min-height: 100vh;
    background-color: var(--cor-fundo);
    display: flex;
    flex-direction: column;
}

.pub-topo {
    display: flex;
    justify-content: center;
    padding: 1.25rem 1rem;
    background-color: var(--cor-painel);
    border-bottom: 1px solid var(--cor-borda);
}

.pub-logo {
    height: 44px;
    width: auto;
}

.pub-conteudo {
    flex: 1;
    width: 100%;
    max-width: 760px;
    margin: 0 auto;
    padding: 1.5rem 1rem 2.5rem;
}

.pub-formulario {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.pub-cartao {
    padding: 1.5rem;
}

.pub-cartao.text-center .pub-icone {
    margin: 0 auto 1rem;
}

.pub-secao-titulo {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 1.1rem;
    margin: 0 0 1.25rem;
}

.pub-secao-titulo > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    font-size: 0.85rem;
    background-color: rgba(var(--cor-primaria-rgb), 0.12);
    color: var(--cor-primaria);
}

.pub-secao-titulo small {
    font-size: 0.8rem;
    font-weight: 400;
    color: var(--cor-texto-mutado);
}

/* CRECI + UF e agência/conta + dígito lado a lado */
.pub-creci {
    grid-template-columns: minmax(0, 1fr) 90px;
}

.pub-agencia {
    grid-template-columns: minmax(0, 1fr) 70px;
}

.pub-erro-campo {
    display: block;
    margin-top: 0.3rem;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--cor-erro);
}

.form-controle.campo-invalido {
    border-color: var(--cor-erro);
    box-shadow: 0 0 0 3px var(--cor-erro-fundo);
}

.pub-documento {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.9rem 1rem;
    border: 1px dashed var(--cor-borda);
    border-radius: var(--borda-raio-sm);
}

.pub-documento.campo-invalido {
    border-color: var(--cor-erro);
    background-color: var(--cor-erro-fundo);
}

.pub-documento.pub-documento-ok {
    border-style: solid;
    border-color: var(--cor-sucesso);
}

.pub-documento-info {
    min-width: 0;
}

.pub-documento-info label {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
}

.pub-arquivo {
    position: relative;
    flex-shrink: 0;
    max-width: 230px;
    cursor: pointer;
}

.pub-arquivo [data-rotulo-arquivo] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* O input fica sobre o botão (invisível) para abrir o seletor de arquivos */
.pub-arquivo-campo {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
}

.pub-aceite {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    font-size: 0.85rem;
    color: var(--cor-texto-secundario);
    cursor: pointer;
}

.pub-aceite input {
    margin-top: 0.2rem;
    accent-color: var(--cor-primaria);
    flex-shrink: 0;
}

.pub-aceite.campo-invalido {
    color: var(--cor-erro);
}

.pub-rodape {
    padding: 1.25rem 1rem;
    text-align: center;
    font-size: 0.75rem;
    color: var(--cor-texto-mutado);
}

@media (max-width: 600px) {
    .pub-cartao {
        padding: 1.1rem;
    }

    .pub-documento {
        flex-direction: column;
        align-items: stretch;
    }

    .pub-arquivo {
        max-width: none;
    }
}

/* ---------- Usuários ---------- */
.usu-perfis {
    margin-top: -0.5rem;
    padding-left: 1.1rem;
}

.usu-perfis li {
    margin-bottom: 0.15rem;
}

/* =====================================================================
   Clientes (cli-)
   ===================================================================== */
.segmentado label {
    padding: 0.3rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--cor-texto-secundario);
    cursor: pointer;
    margin: 0;
}

.segmentado label.ativo {
    color: var(--cor-sobre-primaria);
    background-color: var(--cor-primaria);
}

.campo-maiusculo {
    text-transform: uppercase;
}

.cli-verificacao {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding: 0.75rem 1rem;
    border-radius: var(--borda-raio-sm);
    border-left: 3px solid var(--cor-borda);
    background-color: var(--cor-fundo);
    font-size: 0.85rem;
}

.cli-verificacao strong {
    display: block;
    margin-bottom: 0.15rem;
}

.cli-verificacao span {
    color: var(--cor-texto-secundario);
}

.cli-verificacao-sucesso { border-left-color: var(--cor-sucesso); }
.cli-verificacao-alerta  { border-left-color: var(--cor-alerta); }
.cli-verificacao-erro    { border-left-color: var(--cor-erro); }
.cli-verificacao-erro strong { color: var(--cor-erro); }

.cli-conjuge {
    margin-top: 0.5rem;
    padding: 1rem;
    border-radius: var(--borda-raio-sm);
    background-color: var(--cor-fundo);
}

/* ---------- Reservas (res-) ---------- */
.res-lista {
    margin: 0;
    padding-left: 1.1rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.emp-reserva-info {
    display: block;
    font-size: 0.72rem;
    color: var(--cor-texto-secundario);
    margin-top: 0.15rem;
}

/* =====================================================================
   Tabela de preços (tab-)
   ===================================================================== */
.tab-indicadores {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.tab-preco {
    width: 130px;
    padding: 0.3rem 0.5rem;
    text-align: right;
    font-weight: 600;
}

.tab-preco.tab-salvo {
    border-color: var(--cor-sucesso);
    box-shadow: 0 0 0 3px var(--cor-sucesso-fundo);
}

.tab-select-unidade {
    min-width: 160px;
    padding: 0.25rem 0.5rem;
    font-size: 0.8rem;
}

.tab-observacoes {
    white-space: normal;
}

.tab-passo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    font-size: 0.8rem;
    background-color: rgba(var(--cor-primaria-rgb), 0.12);
    color: var(--cor-primaria);
}

.tab-colunas {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.tab-coluna {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.7rem;
    border: 1px solid var(--cor-borda);
    border-radius: 999px;
    font-size: 0.8rem;
    cursor: pointer;
}

.tab-coluna:has(input:checked) {
    border-color: var(--cor-primaria);
    background-color: rgba(var(--cor-primaria-rgb), 0.08);
    color: var(--cor-primaria);
    font-weight: 600;
}

.tab-coluna input {
    accent-color: var(--cor-primaria);
}

.tab-previa .tab-col-unidade { background-color: rgba(var(--cor-primaria-rgb), 0.08); }
.tab-previa .tab-col-preco   { background-color: var(--cor-sucesso-fundo); font-weight: 600; }
.tab-previa .tab-col-area    { background-color: var(--cor-alerta-fundo); }

@media (max-width: 768px) {
    .tab-indicadores {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* =====================================================================
   Contratos (ctr-)
   ===================================================================== */
.ctr-preco-tabela {
    margin-top: 0.5rem;
    padding: 0.6rem 0.85rem;
    border-radius: var(--borda-raio-sm);
    background-color: var(--cor-fundo);
}

.ctr-comprador {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 110px auto auto;
    align-items: center;
    gap: 0.5rem;
}

.ctr-participacao {
    display: flex;
    align-items: center;
    gap: 0.3rem;
}

.ctr-principal {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.8rem;
    color: var(--cor-texto-secundario);
    white-space: nowrap;
    cursor: pointer;
}

.ctr-principal input {
    accent-color: var(--cor-primaria);
}

.ctr-condicoes {
    min-width: 1050px;
}

.ctr-condicoes .form-controle {
    padding: 0.35rem 0.5rem;
    font-size: 0.85rem;
}

.ctr-condicoes .ctr-num {
    width: 80px;
}

.ctr-condicoes .ctr-valor {
    width: 130px;
}

.ctr-juros {
    display: flex;
    gap: 0.3rem;
}

.ctr-juros select {
    width: 110px;
}

.ctr-diferenca {
    margin-left: 0.5rem;
    font-weight: 600;
}

.ctr-diferenca.ok {
    color: var(--cor-sucesso);
}

.ctr-diferenca.pendente {
    color: var(--cor-erro);
}

@media (max-width: 600px) {
    .ctr-comprador {
        grid-template-columns: minmax(0, 1fr) 90px;
    }
}

/* ---------- Manual do sistema ---------- */
.manual-grade {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
}

.manual-sumario {
    position: sticky;
    top: calc(var(--header-altura) + 1rem);
    padding: 1rem;
}

.manual-sumario a {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.45rem 0.6rem;
    border-radius: var(--borda-raio-sm);
    color: var(--cor-texto-secundario);
    font-size: 0.88rem;
    text-decoration: none;
    transition: var(--transicao-rapida);
}

.manual-sumario a:hover {
    background-color: rgba(var(--cor-primaria-rgb), 0.08);
    color: var(--cor-primaria);
}

.manual-conteudo {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    min-width: 0;
}

.manual-secao {
    scroll-margin-top: calc(var(--header-altura) + 1rem);
    line-height: 1.6;
}

.manual-secao p,
.manual-secao ul,
.manual-secao ol {
    margin: 0 0 0.9rem;
}

.manual-secao h3 {
    margin: 1.5rem 0 0.6rem;
    font-size: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.manual-titulo {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin: 0 0 0.6rem;
    font-size: 1.3rem;
}

.manual-titulo i {
    color: var(--cor-primaria);
}

.manual-quem {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 1rem;
}

.manual-lista,
.manual-passos {
    padding-left: 1.3rem;
}

.manual-lista li,
.manual-passos li {
    margin-bottom: 0.4rem;
}

.manual-lista ul,
.manual-passos ul {
    margin: 0.4rem 0 0;
    padding-left: 1.2rem;
}

.manual-passos li::marker {
    color: var(--cor-primaria);
    font-weight: 700;
}

.manual-atencao {
    margin-bottom: 0.9rem;
    font-size: 0.9rem;
}

.manual-atencao ul {
    margin: 0.4rem 0 0;
    padding-left: 1.2rem;
}

.manual-exemplo {
    margin: 0 0 1rem;
    padding: 1rem 1.1rem;
    border: 1px dashed rgba(var(--cor-primaria-rgb), 0.45);
    border-radius: var(--borda-raio-md);
    background-color: rgba(var(--cor-primaria-rgb), 0.04);
    font-size: 0.92rem;
}

.manual-exemplo > :last-child {
    margin-bottom: 0;
}

.manual-exemplo ol {
    padding-left: 1.3rem;
}

.manual-exemplo-rotulo {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-bottom: 0.5rem;
    color: var(--cor-primaria);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.manual-tabela {
    margin-bottom: 0.9rem;
    font-size: 0.88rem;
}

.tabela th.manual-col-destaque {
    background-color: rgba(var(--cor-primaria-rgb), 0.12);
    color: var(--cor-primaria);
}

.manual-citacao {
    margin: 0 0 0.9rem;
    padding: 0.75rem 1rem;
    border-left: 3px solid var(--cor-sucesso);
    border-radius: 0 var(--borda-raio-sm) var(--borda-raio-sm) 0;
    background-color: var(--cor-sucesso-fundo);
    font-size: 0.9rem;
}

.manual-situacoes {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 0.6rem;
}

.manual-fluxo {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.75rem;
    margin: 0 0 1.2rem;
    padding: 0;
    list-style: none;
    counter-reset: passo-fluxo;
}

.manual-fluxo li {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.9rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--borda-raio-md);
    background-color: var(--cor-fundo);
    counter-increment: passo-fluxo;
}

.manual-fluxo li i {
    color: var(--cor-primaria);
}

.manual-fluxo li strong::before {
    content: counter(passo-fluxo) ". ";
    color: var(--cor-primaria);
}

.manual-fluxo li span {
    color: var(--cor-texto-secundario);
    font-size: 0.82rem;
    line-height: 1.45;
}

.manual-pergunta {
    border-bottom: 1px solid var(--cor-borda);
}

.manual-pergunta summary {
    padding: 0.8rem 0;
    font-weight: 600;
    cursor: pointer;
}

.manual-pergunta summary:hover {
    color: var(--cor-primaria);
}

.manual-pergunta p {
    color: var(--cor-texto-secundario);
}

.manual-secao kbd {
    padding: 0.1rem 0.4rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--borda-raio-sm);
    background-color: var(--cor-fundo);
    font-size: 0.8em;
}

@media (max-width: 1100px) {
    .manual-fluxo {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .manual-grade {
        grid-template-columns: minmax(0, 1fr);
    }

    .manual-sumario {
        position: static;
    }
}

@media (max-width: 520px) {
    .manual-fluxo {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media print {
    .manual-grade {
        display: block;
    }

    .manual-secao {
        margin-bottom: 1rem;
        break-inside: auto;
    }

}
