:root {
    --cor-vermelho: #7b1314;
    --cor-vermelho-escuro: #4b2124;
    --cor-branco: #ffffff;
    --cor-azul: #1e3a8a;
    --cor-azul-escuro: #16296b;
    --cor-fundo-badge: #f1f5f9;
    --cor-texto-cinza: #475569;
    --cor-borda: #e5e7eb;

    --cor-vencido: #dc2626;
    --cor-renovar: #d97706;
    --cor-em-dia: #16a34a;
    --cor-em-processo: #eab308;
    --cor-texto-em-processo: #1e293b;
    --cor-status-renovar: var(--cor-azul);
    --cor-status-pendente: #f57d00;

    --raio: 12px;
    --raio-pequeno: 8px;
    --espaco: 16px;
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    font-family: -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    background: var(--cor-fundo-badge);
    color: #1e293b;
}

a {
    color: inherit;
}

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 var(--espaco);
}

/* ---------- Layout com sidebar ---------- */

.app-layout {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.sidebar {
    background: var(--cor-vermelho);
    color: var(--cor-branco);
    padding: var(--espaco);
}

.sidebar-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.botao-menu-mobile {
    background: none;
    border: none;
    color: var(--cor-branco);
    font-size: 1.6rem;
    line-height: 1;
    cursor: pointer;
    padding: 4px 8px;
}

.sidebar-conteudo {
    display: none;
    text-align: center;
}

.sidebar.aberta .sidebar-conteudo {
    display: block;
    margin-top: var(--espaco);
}

.sidebar .logo {
    font-size: 1.25rem;
    font-weight: 700;
    margin-bottom: var(--espaco);
}

.logo-caixa {
    background: var(--cor-branco);
    border-radius: var(--raio-pequeno);
    padding: 10px 16px;
    margin-bottom: var(--espaco);
    display: inline-block;
}

.logo-caixa img {
    display: block;
    max-width: 160px;
    height: auto;
}

.sidebar-conteudo {
    text-align: center;
}

.sidebar nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
}

.sidebar-contador-card {
    text-align: center;
}

.sidebar nav a {
    display: block;
    text-decoration: none;
    color: var(--cor-branco);
    padding: 8px 12px;
    border-radius: var(--raio-pequeno);
    background: rgba(255, 255, 255, 0.08);
    font-size: 0.9rem;
}

.sidebar nav a.ativo,
.sidebar nav a:hover {
    background: rgba(255, 255, 255, 0.2);
}

.conteudo {
    flex: 1;
    padding: var(--espaco);
}

@media (min-width: 900px) {
    .app-layout {
        flex-direction: row;
    }

    .sidebar {
        width: 300px;
        min-height: 100vh;
    }

    .sidebar nav ul {
        flex-direction: column;
    }

    .botao-menu-mobile {
        display: none;
    }

    .sidebar-topo {
        justify-content: center;
    }

    .sidebar-conteudo {
        display: block !important;
        margin-top: var(--espaco);
    }
}

/* ---------- Painel de urgências (vencendo em breve) ---------- */

.painel-urgencias {
    background: #fff7ed;
    border: 1px solid #fed7aa;
    border-radius: var(--raio);
    padding: 16px 20px;
    margin-bottom: var(--espaco);
}

.painel-urgencias h2 {
    margin: 0 0 10px;
    font-size: 1rem;
    color: #9a3412;
}

.painel-urgencias ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.painel-urgencias a {
    text-decoration: none;
    color: #1e293b;
    font-size: 0.9rem;
}

.painel-urgencias a:hover {
    text-decoration: underline;
}

.painel-urgencias .tipo {
    color: var(--cor-renovar);
    font-weight: 700;
}

/* ---------- Contadores ---------- */

.contadores {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
    margin-bottom: var(--espaco);
}

@media (min-width: 700px) {
    .contadores {
        grid-template-columns: repeat(5, 1fr);
    }
}

.contador-card {
    background: var(--cor-branco);
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    padding: 12px;
    text-align: center;
}

.contador-card .icone {
    display: flex;
    justify-content: center;
    margin-bottom: 4px;
}

/* Cores tiradas por amostragem de pixel direto das telas originais —
   mais vívidas que as cores de badge/status usadas no resto da UI. */
.icone-status-em-dia { color: #08b91e; }
.icone-status-vencido { color: #ff0002; }
.icone-status-renovar { color: #1942ff; }
.icone-status-pendente { color: #f57d00; }
.icone-status-em-processo { color: #c5dd04; }

.contador-card .numero {
    font-size: 1.5rem;
    font-weight: 700;
}

.contador-card .rotulo {
    font-size: 0.8rem;
    color: var(--cor-texto-cinza);
}

/* ---------- Filtros ---------- */

.filtros {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: var(--espaco);
}

.filtros input,
.filtros select {
    padding: 10px 12px;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio-pequeno);
    font-size: 0.95rem;
    background: var(--cor-branco);
}

.filtros input[type="text"] {
    flex: 1;
    min-width: 200px;
}

.filtro-data {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    color: var(--cor-texto-cinza);
}

.link-limpar-filtros {
    align-self: center;
    color: var(--cor-texto-cinza);
    font-size: 0.82rem;
    text-decoration: underline;
    white-space: nowrap;
}

.link-limpar-filtros:hover {
    color: var(--cor-vermelho);
}

#resultado-condominios {
    transition: opacity 0.15s ease;
}

#resultado-condominios.carregando {
    opacity: 0.5;
}

.lista-vazia {
    color: var(--cor-texto-cinza);
}

.carregar-mais-container {
    display: flex;
    justify-content: center;
    margin-top: var(--espaco);
}

/* ---------- Grid de cards ---------- */

/* Uma coluna só, cards empilhados, ocupando toda a largura do conteúdo
   — igual ao sistema antigo (é uma listagem, não um grid de galeria) */
.grid-condominios {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--espaco);
}

.card-condominio {
    background: var(--cor-branco);
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
}

/* Faixa colorida com o status, no topo do card — igual ao sistema antigo */
.card-condominio .faixa-status {
    color: var(--cor-branco);
    font-weight: 700;
    text-align: center;
    padding: 6px;
    font-size: 0.9rem;
}

.card-condominio .foto {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    background: var(--cor-fundo-badge);
}

.card-condominio .corpo {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.card-condominio .cabecalho {
    display: flex;
    align-items: center;
    gap: 18px;
}

.card-condominio .foto-mini {
    width: 96px;
    height: 96px;
    border-radius: var(--raio-pequeno);
    object-fit: cover;
    background: var(--cor-fundo-badge);
    flex-shrink: 0;
}

.card-condominio .nome {
    font-weight: 700;
    font-size: 1.05rem;
}

.card-condominio .info {
    font-size: 0.85rem;
    color: var(--cor-texto-cinza);
}

.card-condominio .seta {
    margin-left: auto;
    color: var(--cor-vermelho);
    font-size: 1.2rem;
    align-self: center;
}

.badges {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    padding-bottom: 4px;
}

.badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--cor-fundo-badge);
    border-radius: var(--raio-pequeno);
    padding: 4px 10px;
    font-size: 0.75rem;
    white-space: nowrap;
    color: var(--cor-texto-cinza);
}

.badge-projeto {
    background: #1e293b;
    color: var(--cor-branco);
}

.badge-habitese {
    background: var(--cor-vermelho);
    color: var(--cor-branco);
}

.status-em-dia { background: var(--cor-em-dia); }
.status-vencido { background: var(--cor-vencido); }
.status-renovar { background: var(--cor-status-renovar); }
.status-pendente { background: var(--cor-status-pendente); }
.status-em-processo { background: var(--cor-em-processo); color: var(--cor-texto-em-processo); }

/* Faixa-status/badge têm color:branco/cinza como padrão dos outros status;
   aqui precisa de mais especificidade pra vencer e manter a letra escura no amarelo. */
.card-condominio .faixa-status.status-em-processo,
.badge.status-em-processo {
    color: var(--cor-texto-em-processo);
}

.data-vencida { color: var(--cor-vencido); font-weight: 600; }
.data-renovar { color: var(--cor-renovar); font-weight: 600; }
.data-em-dia { color: var(--cor-em-dia); font-weight: 600; }

/* Badge de documento na listagem: tipo colorido pela urgência + pill neutro com a data */
.badge-documento {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--cor-fundo-badge);
    border-radius: var(--raio-pequeno);
    padding: 4px 10px;
    font-size: 0.78rem;
    white-space: nowrap;
}

.badge-documento .tipo {
    font-weight: 700;
    color: var(--cor-texto-cinza);
}

.doc-tipo-vencido { color: var(--cor-vencido) !important; }
.doc-tipo-renovar { color: var(--cor-renovar) !important; }
.doc-tipo-em-dia { color: var(--cor-em-dia) !important; }

/* ---------- Doc card / botão PDF (usados na página individual) ---------- */

.doc-card {
    margin-bottom: 10px;
    padding: 14px 18px;
    border: 0.5px solid var(--cor-borda);
    border-radius: var(--raio);
    background: var(--cor-branco);
}

.doc-pdf-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--cor-azul);
    color: var(--cor-branco);
    padding: 6px 12px;
    border-radius: var(--raio-pequeno);
    text-decoration: none;
    font-weight: 600;
    font-size: 12px;
}

.doc-pdf-btn:hover {
    background: var(--cor-azul-escuro);
}

/* ---------- Formulário de login ---------- */

.topo-login {
    background: #1e1e1e;
    display: flex;
    justify-content: center;
    padding: 20px;
}

.topo-login .logo-caixa {
    margin-bottom: 0;
}

.tela-login {
    min-height: calc(100vh - 89px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--cor-vermelho);
    padding: 40px var(--espaco);
}

.titulo-login {
    color: var(--cor-branco);
    font-size: 2.2rem;
    margin: 0 0 24px;
}

.caixa-login {
    background: var(--cor-branco);
    border-radius: var(--raio);
    padding: 32px 28px;
    width: 100%;
    max-width: 360px;
}

.caixa-login h1 {
    font-size: 1.3rem;
    margin: 0 0 20px;
    text-align: center;
    color: var(--cor-vermelho);
}

.campo {
    margin-bottom: 16px;
}

.campo label {
    display: block;
    margin-bottom: 6px;
    font-size: 0.9rem;
    color: var(--cor-texto-cinza);
}

.campo input {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio-pequeno);
    font-size: 1rem;
}

.botao {
    width: 100%;
    padding: 12px;
    background: var(--cor-azul);
    color: var(--cor-branco);
    border: none;
    border-radius: var(--raio-pequeno);
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
}

.botao:hover {
    background: var(--cor-azul-escuro);
}

.erro {
    background: #fee2e2;
    color: var(--cor-vencido);
    padding: 10px 12px;
    border-radius: var(--raio-pequeno);
    font-size: 0.9rem;
    margin-bottom: 16px;
}

/* ---------- Mensagens de feedback (flash) ---------- */

.flash {
    padding: 12px 16px;
    border-radius: var(--raio-pequeno);
    font-size: 0.9rem;
    font-weight: 600;
    margin-bottom: var(--espaco);
}

.flash-sucesso {
    background: #dcfce7;
    color: #166534;
    border: 1px solid #bbf7d0;
}

.flash-erro {
    background: #fee2e2;
    color: #991b1b;
    border: 1px solid #fecaca;
}

.flash-info {
    background: #dbeafe;
    color: #1e40af;
    border: 1px solid #bfdbfe;
}

/* ---------- Sidebar: contadores por administradora (só super_admin) ---------- */

.sidebar-contadores {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin: var(--espaco) 0;
}

.sidebar-contador-card {
    background: var(--cor-branco);
    color: #1e293b;
    border-radius: var(--raio-pequeno);
    padding: 10px 14px;
}

.sidebar-contador-card .numero {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--cor-vermelho);
}

.sidebar-contador-card .rotulo {
    font-size: 0.8rem;
    color: var(--cor-texto-cinza);
}

/* ---------- Tela de boas-vindas (perfil administradora) ---------- */

.cards-boas-vindas {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--espaco);
    max-width: 700px;
}

@media (min-width: 600px) {
    .cards-boas-vindas {
        grid-template-columns: repeat(2, 1fr);
    }
}

.card-boas-vindas {
    background: var(--cor-branco);
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio);
    padding: 28px 20px;
    text-align: center;
    text-decoration: none;
    color: inherit;
}

.card-boas-vindas .icone {
    font-size: 2rem;
    margin-bottom: 8px;
}

.card-boas-vindas .titulo {
    font-weight: 700;
    font-size: 1.2rem;
    color: var(--cor-vermelho);
}

.card-boas-vindas .subtitulo {
    color: var(--cor-texto-cinza);
    font-size: 0.85rem;
    margin-top: 4px;
}

/* ---------- Formulário de condomínio (cadastro/edição) ---------- */

.form-condominio {
    background: var(--cor-branco);
    border-radius: var(--raio);
    padding: var(--espaco);
    max-width: 900px;
}

.form-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--espaco);
}

@media (min-width: 700px) {
    .form-grid {
        grid-template-columns: 1fr 1fr;
    }
}

.form-grid .campo-linha-inteira {
    grid-column: 1 / -1;
}

.campo label {
    display: block;
    font-weight: 700;
    color: var(--cor-vermelho);
    margin-bottom: 6px;
    font-size: 0.95rem;
}

.campo input[type="text"],
.campo input[type="date"],
.campo input[type="file"],
.campo select,
.campo textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio-pequeno);
    font-size: 0.95rem;
    background: var(--cor-branco);
    font-family: inherit;
}

.foto-atual {
    max-width: 160px;
    border-radius: var(--raio-pequeno);
    display: block;
    margin-bottom: 8px;
}

.secao-documentos {
    grid-column: 1 / -1;
    margin-top: 10px;
}

.secao-documentos h2 {
    color: var(--cor-vermelho);
    font-size: 1.1rem;
}

.linha-documento {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    background: var(--cor-fundo-badge);
    border-radius: var(--raio);
    padding: 14px;
    margin-bottom: 12px;
    position: relative;
}

@media (min-width: 700px) {
    .linha-documento {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

.linha-documento .pdfs-existentes {
    grid-column: 1 / -1;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    font-size: 0.85rem;
}

.linha-documento .pdfs-existentes label {
    font-weight: 400;
    color: var(--cor-texto-cinza);
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.remover-documento {
    position: absolute;
    top: 10px;
    right: 10px;
    background: var(--cor-renovar);
    color: var(--cor-branco);
    border: none;
    border-radius: 50%;
    width: 26px;
    height: 26px;
    cursor: pointer;
    font-weight: 700;
    line-height: 1;
}

.botao-secundario {
    background: #1e293b;
    color: var(--cor-branco);
    border: none;
    padding: 10px 18px;
    border-radius: var(--raio-pequeno);
    font-weight: 600;
    cursor: pointer;
}

.acoes-formulario {
    grid-column: 1 / -1;
    margin-top: 10px;
}

.icones-acao {
    display: flex;
    gap: 16px;
}

.icones-acao a {
    text-decoration: none;
    color: var(--cor-vermelho);
    font-size: 0.85rem;
    text-align: center;
}

.icones-acao a.excluir {
    color: var(--cor-vencido);
}

/* ---------- Tabela (usuários) ---------- */

.tabela-container {
    background: var(--cor-branco);
    border-radius: var(--raio);
    overflow-x: auto;
    border: 1px solid var(--cor-borda);
}

.tabela {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.tabela th,
.tabela td {
    padding: 12px 16px;
    text-align: left;
    white-space: nowrap;
    border-bottom: 1px solid var(--cor-borda);
}

.tabela th {
    color: var(--cor-texto-cinza);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.tabela tbody tr:last-child td {
    border-bottom: none;
}

.acoes-tabela {
    display: flex;
    gap: 14px;
}

.link-acao {
    background: none;
    border: none;
    padding: 0;
    color: var(--cor-azul);
    text-decoration: underline;
    font-size: 0.85rem;
    cursor: pointer;
    font-family: inherit;
}
