/* ==========================================================================
   ESTILOS ESPECÍFICOS DE MÓDULOS
   Classes que antes eram style="..." nas views. Cada seção tem o prefixo do
   módulo (ap-, recibo-, proj-, sala-, curso-, wiki-, doc-, au-, admin-, ramais-...).
   Carregado depois de paginas.css e antes de utilitarios.css.
   ========================================================================== */


/* ==========================================================================
   GERAL — feed, links úteis, aplicativos, login/recuperação, ferramentas
   rápidas (contador, conversor, QR Wi-Fi, gerador de senha, meu IP) e 404.
   ========================================================================== */

/* --- Compartilhados --- */

/* Lupa dentro do campo de busca em pílula (feed, links, aplicativos) */
.geral-busca-icone {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    width: 18px;
    height: 18px;
    color: var(--cor-texto-secundario);
}

/* Card centralizado em coluna (links úteis, aplicativos) */
.geral-card-centro {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 2rem;
}

/* Ícone redondo de 50px no topo do card (base: .documento-icone azul) */
.geral-icone-circulo {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    margin-bottom: 1rem;
}
.geral-icone-laranja {
    background-color: rgba(var(--cor-primaria-rgb), 0.08);
    color: var(--cor-primaria);
}

/* Mensagem de lista vazia dentro de card-glass */
.geral-vazio {
    text-align: center;
    padding: 3rem;
}
.geral-span-4 { grid-column: span 4; }

/* --- Feed --- */
.feed-select-tipo {
    padding: 0.5rem 1rem;
    font-size: 0.85rem;
    width: 140px;
}
.feed-vazio-icone {
    width: 48px;
    height: 48px;
    color: var(--cor-texto-secundario);
    margin-bottom: 1rem;
    opacity: 0.6;
}

/* Busca + filtros acima da timeline */
.feed-ferramentas {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 2rem;
}
.feed-ferramentas .pos-relative { max-width: 500px; }
.feed-filtros,
.feed-ciencias-abas {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem;
}
.feed-ciencias-abas { justify-content: flex-start; margin-bottom: 1rem; }
.feed-filtro {
    background-color: var(--cor-painel);
    border: 1px solid var(--cor-borda);
    border-radius: 999px;
    padding: 0.35rem 0.9rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--cor-texto-secundario);
    cursor: pointer;
    transition: var(--transicao-rapida);
}
.feed-filtro:hover { border-color: var(--cor-borda-foco); color: var(--cor-texto); }
.feed-filtro.ativo {
    background-color: var(--cor-primaria);
    border-color: var(--cor-primaria);
    color: var(--cor-sobre-primaria);
}

/* Post fixado */
.card-feed.card-feed-fixado { border-color: rgba(var(--cor-primaria-rgb), 0.45); }
.feed-faixa-fixado {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--cor-primaria);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 0.75rem;
}

/* "Para: obra X" — alcance do post */
.feed-alcance {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.78rem;
    color: var(--cor-texto-secundario);
    margin-bottom: 0.75rem;
}

/* Links dentro do texto do post e dos comentários */
.feed-link {
    color: var(--cor-primaria);
    text-decoration: underline;
    overflow-wrap: anywhere;
}

/* Galeria com 2+ fotos */
.feed-galeria {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px;
    border-radius: var(--borda-raio-sm);
    overflow: hidden;
    margin-bottom: 1.25rem;
}
.feed-galeria-item {
    position: relative;
    display: block;
    padding: 0;
    border: none;
    background-color: var(--cor-fundo);
    cursor: zoom-in;
    aspect-ratio: 4 / 3;
    overflow: hidden;
}
.feed-galeria-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.25s ease;
}
.feed-galeria-item:hover img { transform: scale(1.03); }
/* 3 fotos: a primeira ocupa a linha de cima inteira */
.feed-galeria-3 .feed-galeria-item:first-child {
    grid-column: 1 / -1;
    aspect-ratio: 16 / 9;
}
.feed-galeria-mais {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(20, 17, 15, 0.55);
    color: #fff;
    font-size: 1.75rem;
    font-weight: 700;
}

/* Confirmação de leitura */
.feed-ciencia {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
    border-radius: var(--borda-raio-sm);
    background-color: var(--cor-alerta-fundo);
}
.feed-ciencia-texto {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--cor-alerta);
}
.feed-ciencia-texto.feed-ciencia-ok { color: var(--cor-sucesso); }
.feed-ciencias-lista {
    max-height: 50vh;
    overflow-y: auto;
}
.feed-ciencias-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid var(--cor-borda);
}
.feed-ciencias-item:last-child { border-bottom: none; }

/* Comentários: "Ver todos" e excluir */
.feed-ver-comentarios,
.feed-comentario-excluir {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font-weight: 600;
    color: var(--cor-texto-secundario);
}
.feed-ver-comentarios {
    align-self: flex-start;
    font-size: 0.8rem;
}
.feed-comentario-excluir {
    font-size: 0.7rem;
    margin-top: 0.25rem;
}
.feed-ver-comentarios:hover,
.feed-comentario-excluir:hover { color: var(--cor-primaria); }

/* Opções do formulário de publicação */
.feed-opcoes {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.feed-opcoes-linha {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1.25rem;
}
.feed-unidades {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 0.5rem 1rem;
    max-height: 200px;
    overflow-y: auto;
    margin-top: 0.6rem;
    padding: 0.75rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--borda-raio-sm);
}

/* Prévia das fotos escolhidas / fotos atuais na edição */
.feed-previa {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.feed-previa:empty { display: none; }
.feed-previa-item {
    position: relative;
    width: 84px;
    height: 84px;
    border-radius: var(--borda-raio-sm);
    overflow: hidden;
    border: 1px solid var(--cor-borda);
    cursor: pointer;
}
.feed-previa-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.feed-previa-remover {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 22px;
    height: 22px;
    border: none;
    border-radius: 50%;
    background-color: rgba(20, 17, 15, 0.7);
    color: #fff;
    font-size: 0.95rem;
    line-height: 22px;
    text-align: center;
    cursor: pointer;
}
/* Foto marcada para remoção na edição */
.feed-previa-item.removida img { opacity: 0.25; }
.feed-previa-item.removida .feed-previa-remover { background-color: var(--cor-erro); }

/* Setas e contador do visualizador de fotos */
.modal-imagem-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 48px;
    height: 48px;
    border: none;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.15);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: var(--transicao-rapida);
}
.modal-imagem-nav:hover { background-color: rgba(255, 255, 255, 0.3); }
.modal-imagem-anterior { left: 1rem; }
.modal-imagem-proxima { right: 1rem; }
.modal-imagem-contador {
    position: absolute;
    bottom: 1rem;
    left: 50%;
    transform: translateX(-50%);
    color: #fff;
    font-size: 0.85rem;
    font-weight: 600;
}

@media (max-width: 768px) {
    /* Com Fixar/Editar/Excluir a barra de ações quebrava em 3 linhas no celular */
    .feed-acoes { justify-content: space-between; }
    .feed-acoes .btn-acao-feed { padding: 0.45rem 0.5rem; font-size: 0.8rem; }
    .modal-imagem-nav { width: 40px; height: 40px; }
    .modal-imagem-anterior { left: 0.5rem; }
    .modal-imagem-proxima { right: 0.5rem; }
}

/* --- Links úteis --- */
.links-card-acoes {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
    display: flex;
    gap: 0.5rem;
}
.links-btn-excluir,
.links-btn-excluir:hover {
    color: var(--cor-texto-mutado);
}
.links-url {
    font-size: 0.75rem;
    color: var(--cor-texto-secundario);
    margin-bottom: 1.25rem;
    word-break: break-all;
    max-width: 100%;
}

/* --- Aplicativos --- */
.apps-card,
.apps-card:hover {
    text-decoration: none;
    color: inherit;
}

/* --- Login e recuperação de senha (páginas com <head> próprio) --- */
.login-logo {
    max-height: 80px;
    max-width: 100%;
    object-fit: contain;
}
.login-senha-topo {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.5rem;
}
.login-senha-topo label { margin-bottom: 0; }
.login-link-esqueci,
.login-link-esqueci:hover {
    font-size: 0.75rem;
    color: var(--cor-primaria);
    text-decoration: none;
    font-weight: 550;
}
.login-rodape {
    margin-top: 2rem;
    text-align: center;
    font-size: 0.8rem;
    color: #64748b;
}
.recuperar-codigo {
    text-align: center;
    letter-spacing: 4px;
    font-size: 1.2rem;
}
.recuperar-link {
    font-size: 0.8rem;
    color: #94a3b8;
    text-decoration: none;
    font-weight: 550;
    transition: var(--transicao-rapida);
}
.recuperar-link:hover { color: var(--cor-primaria); }
.recuperar-rodape {
    margin-top: 2rem;
    text-align: center;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    padding-top: 1.5rem;
}
.recuperar-link-voltar {
    font-size: 0.85rem;
    color: #94a3b8;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    transition: var(--transicao-rapida);
}
.recuperar-link-voltar:hover { color: white; }

/* --- Ferramentas rápidas (contador, conversor, QR Wi-Fi, senha, meu IP) --- */

/* Rótulo em negrito dentro de .form-grupo (vence o peso 550 de .form-grupo label) */
.geral-rotulo-forte,
.form-grupo .geral-rotulo-forte { font-weight: 600; }

/* Área de texto grande (vence o min-height de textarea.form-controle) */
.form-controle.geral-textarea {
    min-height: 260px;
    font-family: inherit;
}

/* Lista de obras para escolher o alcance de uma publicação (Documentos) */
.geral-lista-obras {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 0.5rem 1rem;
    max-height: 200px;
    overflow-y: auto;
    margin-top: 0.6rem;
    padding: 0.75rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--borda-raio-sm);
}

/* Checkbox com rótulo ao lado */
.geral-checkbox-rotulo,
.form-grupo .geral-checkbox-rotulo {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    cursor: pointer;
}
.geral-checkbox {
    width: 18px;
    height: 18px;
    cursor: pointer;
}

/* QR Code Wi-Fi */
.grid.qrwifi-grid-opcoes { gap: 1rem; }
.qrwifi-rotulo-oculta { margin-top: 1.85rem; }
.qrwifi-preview {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-height: 320px;
}
.qrwifi-vazio-icone {
    width: 48px;
    height: 48px;
    opacity: 0.4;
    margin-bottom: 0.75rem;
}
.qrwifi-canvas { max-width: 100%; }

/* Gerador de senha */
.senha-card { max-width: 640px; }
.senha-campo {
    font-family: monospace;
    font-size: 1.1rem;
    letter-spacing: 0.05em;
}
.senha-forca {
    margin-top: 0.75rem;
    height: 6px;
    border-radius: 99px;
    background-color: var(--cor-borda);
    overflow: hidden;
}
/* largura e cor são ajustadas pelo JS conforme a força */
.senha-forca-barra {
    height: 100%;
    width: 0%;
    background-color: var(--cor-erro);
    transition: width 0.2s, background-color 0.2s;
}
.senha-divisor {
    border-color: var(--cor-borda);
    margin: 1.5rem 0;
}

/* Meu IP */
.meuip-card {
    padding: 2.5rem;
    max-width: 480px;
    text-align: center;
}
.meuip-valor {
    font-family: monospace;
    font-size: 2rem;
    font-weight: 700;
    color: var(--cor-primaria);
    letter-spacing: 0.02em;
}
.meuip-detalhes {
    margin-top: 1.5rem;
    text-align: left;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    font-size: 0.9rem;
}
.meuip-linha {
    display: flex;
    justify-content: space-between;
    border-bottom: 1px solid var(--cor-borda);
    padding-bottom: 0.5rem;
}
.meuip-icone-info {
    width: 14px;
    height: 14px;
    vertical-align: -2px;
}

/* --- Página 404 (App::retornar404; deslogado as mesmas regras vão num <style> inline) --- */
.pagina-404 {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    padding: 20px;
    font-family: 'Inter', sans-serif;
    text-align: center;
    color: #2c3e50;
}
.pagina-404 .pagina-404-codigo {
    font-size: 8rem;
    margin: 0;
    color: #e74c3c;
    font-weight: 800;
    line-height: 1;
}
.pagina-404 .pagina-404-titulo {
    font-size: 2rem;
    margin: 10px 0 20px;
    color: #34495e;
}
.pagina-404-texto {
    font-size: 1.1rem;
    color: #7f8c8d;
    max-width: 500px;
    margin-bottom: 30px;
}
.pagina-404-botao,
.pagina-404-botao:hover {
    background: linear-gradient(135deg, var(--cor-primaria), var(--cor-primaria-hover));
    color: white;
    padding: 12px 24px;
    border-radius: 8px;
    text-decoration: none;
    font-weight: 600;
    box-shadow: 0 4px 6px rgba(var(--cor-primaria-rgb), 0.2);
    transition: all 0.2s;
}


/* ==========================================================================
   CONTEÚDO: Universidade Corporativa, Base de Conhecimento (Wiki) e Documentos
   (estilos que antes estavam inline nas views)
   ========================================================================== */

/* --- Compartilhados entre os três módulos --- */

/* Ícone de lupa (18px) dentro do campo de busca em pílula */
.conteudo-busca-icone {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    width: 18px;
    height: 18px;
    color: var(--cor-texto-secundario);
}

/* Link "Voltar para ..." no topo das páginas de leitura */
.conteudo-voltar {
    font-size: 0.9rem;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

/* Card de lista vazia (ícone grande apagado + texto) */
.conteudo-vazio {
    text-align: center;
    padding: 4rem;
}
.conteudo-vazio-icone {
    width: 54px;
    height: 54px;
    color: var(--cor-texto-secundario);
    margin-bottom: 1rem;
    opacity: 0.5;
}

/* Link de ação discreto (lixeira) que não muda de cor no hover */
.conteudo-link-mutado,
.conteudo-link-mutado:hover {
    color: var(--cor-texto-mutado);
}

/* Grade de campos lado a lado nos modais (sobrepõe o gap 1.5rem de .grid) */
.conteudo-form-grade {
    gap: 1rem;
}

/* Input de arquivo com padding menor */
.conteudo-campo-arquivo {
    padding: 0.4rem 0.5rem;
}


/* --- Universidade Corporativa --- */

/* Barra "Seu progresso" */
.curso-progresso-trilha {
    background-color: var(--cor-fundo);
    border-radius: 99px;
    height: 8px;
    overflow: hidden;
}
.curso-progresso-barra {
    background-color: var(--cor-primaria);
    height: 100%;
    width: var(--progresso, 0%);
    transition: width 0.3s;
}

.curso-filtro-categoria {
    max-width: 220px;
}

/* Degradê escuro sobre a capa do card */
.curso-capa-sombra {
    position: absolute;
    width: 100%;
    height: 100%;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.8));
    z-index: 1;
}

/* Botão de editar (só ícone) no card */
.curso-btn-acao {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--cor-texto-mutado);
    padding: 0;
}

/* Título e resumo do card (vencem .curso-info h3 / .curso-info p de paginas.css) */
.curso-info .curso-titulo {
    font-size: 1.05rem;
    margin-bottom: 0.5rem;
    color: var(--cor-texto);
}
.curso-info .curso-resumo {
    line-height: 1.4;
}

/* Rodapé do card: autor + botão Acessar */
.curso-rodape {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: auto;
    border-top: 1px solid var(--cor-borda);
    padding-top: 0.75rem;
}

/* Card vazio ocupando a linha inteira da grade de 3 colunas */
.curso-vazio {
    grid-column: span 3;
}

/* Modal de criação/edição */
.curso-campo-categoria { flex: 2; }
.curso-campo-ordem { flex: 1; }
.curso-opcoes-acesso {
    margin-top: 0.4rem;
}
.form-grupo .curso-opcao-acesso {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: normal;
}
.curso-bloco-quiz {
    border-top: 1px dashed var(--cor-borda);
    padding-top: 1rem;
}
.curso-quiz-opcao {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.4rem;
}

/* Página da aula */
.curso-video-vazio {
    background-color: #000;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
}
.curso-quiz-resposta {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: normal;
    font-size: 0.9rem;
    margin-bottom: 0.5rem;
}
.curso-proxima-icone {
    width: 16px;
    height: 16px;
    margin-right: 0.4rem;
}
.curso-sobre-titulo {
    font-size: 1.35rem;
    margin-bottom: 1rem;
    color: var(--cor-texto);
}
.curso-descricao {
    font-size: 0.95rem;
    color: var(--cor-texto);
    line-height: 1.6;
    white-space: pre-wrap;
}
.curso-comentario {
    border-bottom: 1px solid var(--cor-borda);
    padding-bottom: 0.75rem;
}
.curso-comentario-texto {
    font-size: 0.88rem;
    color: var(--cor-texto);
    margin: 0;
    white-space: pre-wrap;
}


/* --- Base de Conhecimento (Wiki) --- */

/* Resumo do artigo na listagem renderizada pelo PHP (margem maior que .wiki-artigo-item p) */
.wiki-artigo-item .wiki-artigo-resumo {
    margin-bottom: 1rem;
}

.wiki-titulo {
    font-size: 1.8rem;
    margin-bottom: 1.5rem;
    color: var(--cor-texto);
    font-family: var(--fonte-titulo);
    line-height: 1.3;
}
.wiki-conteudo {
    font-size: 1rem;
    color: var(--cor-texto);
    line-height: 1.8;
    white-space: pre-wrap;
    font-family: var(--fonte-principal);
}

/* Card laranja "Precisa de ajuda?" (mantém a borda também no hover do .card-glass) */
.wiki-ajuda,
.wiki-ajuda:hover {
    background-color: rgba(var(--cor-primaria-rgb), 0.04);
    border-color: rgba(var(--cor-primaria-rgb), 0.15);
}

.wiki-modal-edicao {
    max-width: 720px;
}


/* --- Documentos --- */

.doc-busca {
    position: relative;
    max-width: 400px;
    width: 100%;
    flex: 1;
}

/* Alternador lista / grade */
.doc-alternador-visao {
    display: flex;
    gap: 0.25rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--borda-raio-sm);
    padding: 0.25rem;
}

/* Quadro do ícone do arquivo (neutro) + cor por extensão via --cor-icone */
.doc-icone-neutro {
    background-color: rgba(255, 255, 255, 0.1);
    border: 1px solid var(--cor-borda);
}
.doc-icone-arquivo {
    color: var(--cor-icone);
}

/* Visão em lista */
.documento-info .doc-linha-titulo {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--cor-texto);
}
.doc-linha-meta {
    margin-top: 0.5rem;
    display: flex;
    gap: 1rem;
    font-size: 0.7rem;
    color: var(--cor-texto-mutado);
    flex-wrap: wrap;
}
.doc-badge-categoria {
    font-size: 0.6rem;
    padding: 0.1rem 0.4rem;
    text-transform: uppercase;
}

/* Visão em grade */
.doc-badge-bloco {
    margin-bottom: 0.4rem;
    display: inline-block;
}
.doc-card-excluir {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
}

/* Cor do ícone por tipo de arquivo (antes vinha num style="--cor-icone" na view) */
.doc-ic-pdf          { --cor-icone: #ef4444; }
.doc-ic-texto        { --cor-icone: #2563eb; }
.doc-ic-planilha     { --cor-icone: #10b981; }
.doc-ic-apresentacao { --cor-icone: #f59e0b; }
.doc-ic-compactado   { --cor-icone: #8b5cf6; }
.doc-ic-imagem       { --cor-icone: #06b6d4; }
.doc-ic-outro        { --cor-icone: #64748b; }

/* Código do documento (POP-024) */
.doc-codigo {
    display: inline-block;
    font-family: var(--fonte-mono, ui-monospace, monospace);
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--cor-primaria);
    background-color: rgba(var(--cor-primaria-rgb), 0.08);
    border-radius: 4px;
    padding: 0.05rem 0.4rem;
    margin-right: 0.35rem;
    vertical-align: middle;
}

/* "Para: obra X" */
.doc-alcance {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.75rem;
    color: var(--cor-texto-secundario);
}
.documento-card-meta .doc-alcance { display: flex; }

/* Filtros de validade + ordenação */
.doc-ferramentas {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}
.doc-ferramentas .feed-filtro { text-decoration: none; }
.feed-filtro.doc-filtro-alerta:not(.ativo) {
    border-color: var(--cor-erro);
    color: var(--cor-erro);
}
.form-controle.doc-select-ordem {
    width: auto;
    padding: 0.4rem 2rem 0.4rem 0.75rem;
    font-size: 0.85rem;
}

/* Grade: selo de validade no canto e ações de manutenção no rodapé */
.doc-card-validade {
    position: absolute;
    top: 0.75rem;
    left: 0.75rem;
    font-size: 0.62rem;
}
.doc-card-secundarias {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.35rem;
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--cor-borda);
    width: 100%;
}
.doc-card-secundarias:empty { display: none; }

/* Histórico de versões */
.doc-historico-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--cor-borda);
}
.doc-historico-item:last-child { border-bottom: none; }
.doc-historico-atual {
    background-color: rgba(var(--cor-primaria-rgb), 0.05);
    border-radius: var(--borda-raio-sm);
    padding: 0.75rem;
}

/* Visualizador de PDF/imagem */
.modal-conteudo.doc-visualizador {
    max-width: 1000px;
    width: 95vw;
    height: 92vh;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
    padding: 1rem 1.25rem;
    overflow: hidden;
}
.doc-visualizador .modal-cabecalho { gap: 1rem; }
.doc-visualizador-area {
    flex: 1;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--cor-fundo);
    border-radius: var(--borda-raio-sm);
    overflow: auto;
}
.doc-visualizador-pdf {
    width: 100%;
    height: 100%;
    border: none;
}
.doc-visualizador-img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}


/* ==========================================================================
   PROJETOS (lista, quadro kanban, cartão de tarefa) e SALAS DE REUNIÃO
   ========================================================================== */

/* --- Projetos: lista de projetos (index) --- */
.campo-com-icone.proj-busca > svg,
.campo-com-icone.proj-busca > i {
    width: 18px;
    height: 18px;
}
.proj-link-mutado,
.proj-link-mutado:hover {
    color: var(--cor-texto-mutado);
}
.proj-badge-status {
    font-size: 0.65rem;
    padding: 0.15rem 0.5rem;
}
.proj-progresso-topo {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.75rem;
    margin-bottom: 0.4rem;
}
.proj-barra {
    width: 100%;
    height: 6px;
    background-color: var(--cor-borda);
    border-radius: 99px;
    overflow: hidden;
}
.proj-barra-preenchimento {
    width: var(--progresso, 0%);
    height: 100%;
    background: linear-gradient(90deg, var(--cor-primaria), var(--cor-info));
    border-radius: 99px;
    transition: width 0.3s ease;
}
.proj-vazio {
    grid-column: span 3;
    text-align: center;
    padding: 4rem;
}
.proj-vazio-icone {
    width: 54px;
    height: 54px;
    color: var(--cor-texto-secundario);
    margin-bottom: 1rem;
    opacity: 0.5;
}

/* --- Projetos: página do projeto (ver) --- */
.proj-btn-modo {
    font-size: 0.8rem;
    padding: 0.4rem 0.8rem;
    gap: 0.4rem;
    height: 32px;
}
.proj-membro {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    background: var(--cor-fundo);
    border: 1px solid var(--cor-borda);
    border-radius: 999px;
    padding: 0.35rem 0.75rem 0.35rem 0.35rem;
}
.proj-membro-avatar {
    width: 28px;
    height: 28px;
    font-size: 0.75rem;
}
.proj-membro-info {
    line-height: 1.2;
}
.proj-membro-remover {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--cor-texto-mutado);
    display: flex;
    padding: 0;
}

/* Tabela da visão em lista */
.proj-tabela-lista thead tr {
    border-bottom: 2px solid var(--cor-borda);
    color: var(--cor-texto-secundario);
    font-size: 0.85rem;
}
.proj-tabela-lista th {
    padding: 0.75rem 1rem;
}
.proj-tabela-lista tbody tr {
    border-bottom: 1px solid var(--cor-borda);
    font-size: 0.9rem;
    transition: background 0.2s;
}
.proj-tabela-lista tbody tr:hover {
    background: rgba(255, 255, 255, 0.03);
}
.proj-tabela-lista td {
    padding: 1rem;
}
.proj-lista-desc {
    color: var(--cor-texto-secundario);
    display: block;
    margin-top: 0.2rem;
}
.proj-select-status {
    padding: 0.25rem 0.5rem;
    font-size: 0.8rem;
    width: auto;
    height: auto;
    border-radius: 4px;
}
.proj-btn-excluir-lista,
.proj-btn-excluir-lista:hover {
    color: var(--cor-erro);
}
.proj-btn-excluir-lista {
    font-size: 1.2rem;
    text-decoration: none;
    padding: 0.25rem 0.5rem;
    display: inline-block;
}
.proj-btn-excluir-lista svg {
    width: 18px;
    height: 18px;
    display: inline-block;
    vertical-align: middle;
}

/* Bolinha colorida no título das colunas do kanban */
.proj-ponto {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
}
.proj-ponto-alerta { background-color: var(--cor-alerta); }
.proj-ponto-primaria { background-color: var(--cor-primaria); }
.proj-ponto-info { background-color: var(--cor-info); }
.proj-ponto-sucesso { background-color: var(--cor-sucesso); }

/* Zona de drop criada pelo kanban.js (a altura é definida no JS) */
.kanban-placeholder-drop {
    border: 2px dashed var(--cor-primaria);
    border-radius: var(--borda-raio-sm);
    margin-bottom: 1rem;
    background-color: rgba(var(--cor-primaria-rgb), 0.08);
    transition: all 0.2s ease;
}

/* --- Projetos: cartão de tarefa (card_tarefa) --- */
.tarefa-card .proj-tarefa-titulo {
    margin: 0;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--cor-texto);
    line-height: 1.3;
}
.proj-tarefa-excluir,
.proj-tarefa-excluir:hover {
    color: var(--cor-texto-mutado);
}
.proj-tarefa-excluir {
    transition: var(--transicao-rapida);
    font-weight: bold;
    font-size: 1rem;
    line-height: 1;
}
.tarefa-card .proj-tarefa-desc {
    margin: 0.4rem 0 0.75rem;
    font-size: 0.75rem;
    color: var(--cor-texto-secundario);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.proj-tarefa-espaco {
    height: 0.5rem;
}
.proj-tarefa-meta {
    display: flex;
    align-items: center;
    gap: 0.35rem;
}
.proj-tarefa-avatar {
    width: 22px;
    height: 22px;
    font-size: 0.6rem;
    border: none;
}
.proj-tarefa-resp {
    font-size: 0.7rem;
    color: var(--cor-texto-secundario);
    max-width: 70px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.proj-badge-prioridade {
    font-size: 0.6rem;
    padding: 0.08rem 0.3rem;
    border-radius: 4px;
}
.proj-tarefa-prazo {
    font-size: 0.65rem;
    display: inline-flex;
    align-items: center;
    gap: 0.1rem;
}

/* --- Salas de reunião --- */
.sala-grade {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.5rem;
    margin-bottom: 2rem;
}
.sala-icone {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background-color: rgba(var(--cor-primaria-rgb), 0.08);
    color: var(--cor-primaria);
}
.sala-vazio {
    padding: 3rem;
}
.sala-localizacao {
    margin: -0.5rem 0 1.25rem;
}
.sala-check {
    width: 18px;
    height: 18px;
    cursor: pointer;
}
.form-grupo .sala-check-rotulo {
    margin: 0;
    cursor: pointer;
}

/* Linha "nenhum registro": sem a borda inferior das demais linhas */
.tabela tbody tr.sala-linha-vazia,
.sala-tabela-admin tr.sala-linha-vazia {
    border-bottom: none;
}

/* Tabela de salas no modal "Gerenciar Salas" */
.sala-tabela-admin {
    width: 100%;
    border-collapse: collapse;
    text-align: left;
    font-size: 0.85rem;
    margin-bottom: 1.5rem;
}
.sala-tabela-admin tr {
    border-bottom: 1px solid var(--cor-borda);
}
.sala-tabela-admin th {
    padding: 0.6rem 0.5rem;
    color: var(--cor-texto-secundario);
    font-weight: 600;
}
.sala-tabela-admin td {
    padding: 0.6rem 0.5rem;
}
.sala-tabela-admin td.sala-celula-vazia {
    padding: 1rem 0.5rem;
    color: var(--cor-texto-secundario);
}


/* ==========================================================================
   MÓDULO: AUTORIZAÇÃO DE PAGAMENTO (AP)
   Views: app/views/autorizacao-pagamento/index.php e novo.php
   (ver.php tem <head> próprio e mantém seus estilos no bloco <style> da página)
   ========================================================================== */

/* --- Larguras fixas de colunas --- */
.ap-w-50 { width: 50px; }
.ap-w-100 { width: 100px; }
.ap-w-120 { width: 120px; }
.ap-w-150 { width: 150px; }
.ap-w-180 { width: 180px; }
.ap-minw-120 { min-width: 120px; }
.ap-minw-150 { min-width: 150px; }

/* --- Botão verde-petróleo (Importar Planilha / Gerar AP): cor fixa, inclusive no hover --- */
.btn.ap-btn-verde,
.btn.ap-btn-verde:hover {
    background-color: #115e59;
    border-color: #115e59;
}

/* ================= index.php (histórico) ================= */

/* Busca: ícone de 18px (o padrão do .campo-com-icone é 16px) */
.campo-com-icone.ap-busca > svg,
.campo-com-icone.ap-busca > i {
    width: 18px;
    height: 18px;
}

/* Tabela de APs */
.ap-tabela {
    width: 100%;
    border-collapse: collapse;
    text-align: left;
    font-size: 0.9rem;
    color: var(--cor-texto);
}
.ap-tabela thead tr {
    background-color: rgba(var(--cor-primaria-rgb), 0.04);
    border-bottom: 1px solid var(--cor-borda);
}
.ap-tabela th {
    padding: 1rem 1.5rem;
    font-weight: 700;
}
.ap-tabela td {
    padding: 1rem 1.5rem;
}
.ap-tabela tr.ap-linha {
    border-bottom: 1px solid var(--cor-borda);
    transition: background-color 0.2s;
}
.ap-tabela tr.ap-linha:hover {
    background-color: var(--cor-fundo);
}
.ap-tabela td.ap-celula-vazia {
    padding: 3rem;
    text-align: center;
    color: var(--cor-texto-secundario);
}

.ap-descricao-resumo {
    font-size: 0.75rem;
    color: var(--cor-texto-secundario);
    max-width: 350px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ap-selo-forma {
    display: inline-flex;
    align-items: center;
    padding: 0.2rem 0.6rem;
    border-radius: 99px;
    font-size: 0.75rem;
    font-weight: 700;
    background-color: rgba(var(--cor-primaria-rgb), 0.08);
    color: var(--cor-primaria);
}

/* Botões de ação da linha (imprimir / excluir) */
.btn.ap-btn-acao {
    padding: 0.4rem;
    border-radius: 6px;
}
.btn.ap-btn-excluir,
.btn.ap-btn-excluir:hover {
    background-color: rgba(239, 68, 68, 0.08);
    color: var(--cor-erro);
    border: 1px solid rgba(239, 68, 68, 0.15);
}

/* Modal Gerenciar Obras */
.modal-conteudo.ap-modal-obras { max-width: 580px; }

.ap-abas {
    display: flex;
    border-bottom: 2px solid var(--cor-borda);
    margin-bottom: 1.5rem;
    gap: 1rem;
}
.ap-aba {
    padding: 0.75rem 1rem;
    border: none;
    background: none;
    font-weight: 600;
    color: var(--cor-texto-secundario);
    border-bottom: 2px solid transparent;
    cursor: pointer;
    transition: all 0.2s;
}
.ap-aba.ativo {
    font-weight: 700;
    color: var(--cor-primaria);
    border-bottom-color: var(--cor-primaria);
}

/* .grid (base.css) define gap 1.5rem depois de .gap-2, então é preciso reforçar */
.grid.ap-grade-obras { gap: 1rem; }

.ap-instrucoes-csv {
    background-color: var(--cor-fundo);
    border: 1px dashed var(--cor-borda);
    border-radius: 8px;
    padding: 1.25rem;
    margin-bottom: 1.5rem;
    font-size: 0.85rem;
    color: var(--cor-texto-secundario);
    line-height: 1.5;
}
.ap-instrucoes-csv ul {
    padding-left: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}
.ap-codigo-exemplo {
    background: rgba(0, 0, 0, 0.05);
    padding: 0.1rem 0.3rem;
    border-radius: 3px;
}

/* ================= novo.php (emissão) ================= */

.ap-link-voltar {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    text-decoration: none;
    color: var(--cor-texto-secundario);
    font-weight: 550;
    font-size: 0.9rem;
    margin-bottom: 1rem;
    transition: var(--transicao-rapida);
}
.ap-link-voltar:hover {
    color: var(--cor-primaria);
}

.ap-secao-titulo {
    font-size: 1.15rem;
    margin-top: 0;
    margin-bottom: 1.5rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--cor-texto);
    font-family: var(--fonte-titulo);
    font-weight: 600;
}

.form-controle.ap-campo-numero {
    height: 42px;
    background-color: rgba(0, 0, 0, 0.02);
    font-weight: 700;
    color: var(--cor-primaria);
}

/* Tabela de itens (linhas adicionadas dinamicamente pelo JS) */
.ap-itens-tabela {
    width: 100%;
    border-collapse: collapse;
    text-align: left;
}
.ap-itens-tabela thead tr {
    border-bottom: 2px solid var(--cor-borda);
    background-color: rgba(0, 0, 0, 0.01);
}
.ap-itens-tabela th {
    padding: 0.75rem 0.5rem;
    font-size: 0.85rem;
    text-transform: uppercase;
    color: var(--cor-texto-secundario);
    font-weight: 700;
}
.ap-itens-tabela tr.ap-item-linha {
    border-bottom: 1px solid var(--cor-borda);
}
.ap-itens-tabela tbody td {
    padding: 0.75rem 0.5rem;
}
.ap-itens-tabela tfoot tr {
    background-color: rgba(0, 0, 0, 0.01);
    border-top: 2px solid var(--cor-borda);
}

.btn.ap-btn-mais {
    padding: 0.5rem;
    height: 38px;
    min-width: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.btn.ap-btn-remover {
    padding: 0.5rem;
    height: 38px;
    width: 38px;
    background-color: rgba(239, 68, 68, 0.08);
    color: var(--cor-erro);
    border: 1px solid rgba(239, 68, 68, 0.15);
}


/* ==========================================================================
   MÓDULO: RECIBOS (app/views/recibos/*)
   ========================================================================== */

/* Linha de "nenhum registro" sem a borda inferior das linhas comuns */
.tabela tbody tr.recibo-sem-borda { border-bottom: none; }

/* Tabela da listagem de recibos: cabeçalho azulado, títulos fortes na cor do texto */
.tabela.recibo-tabela { color: var(--cor-texto); }
.tabela.recibo-tabela thead tr { background-color: rgba(var(--cor-primaria-rgb), 0.04); }
.tabela.recibo-tabela th {
    color: var(--cor-texto);
    font-weight: 700;
}
.tabela.recibo-tabela td.recibo-numero {
    color: var(--cor-primaria);
    font-weight: 600;
}

/* Busca da listagem: ícone de 18px (o componente usa 16px) */
.campo-com-icone.recibo-busca > svg,
.campo-com-icone.recibo-busca > i {
    width: 18px;
    height: 18px;
}

/* Botões de ação (imprimir/editar/excluir) da listagem */
.btn.recibo-btn-acao {
    padding: 0.4rem;
    border-radius: 6px;
}
.btn.recibo-btn-excluir {
    background-color: rgba(239, 68, 68, 0.08);
    color: var(--cor-erro);
    border: 1px solid rgba(239, 68, 68, 0.15);
}

/* Modais de cliente/pagador */
.modal-conteudo.recibo-modal { max-width: 520px; }

/* Logomarca do pagador */
.recibo-logo-lista {
    max-height: 36px;
    max-width: 70px;
    object-fit: contain;
}
.recibo-logo-atual {
    max-height: 40px;
    max-width: 90px;
    object-fit: contain;
    border: 1px solid var(--cor-borda);
    border-radius: 4px;
    padding: 2px;
}
.form-grupo label.recibo-remover-logo {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    cursor: pointer;
    margin: 0;
}

/* Formulário de novo/editar recibo */
.card-glass.recibo-form-card {
    padding: 1.5rem;
    border-radius: var(--borda-raio-md);
    max-width: 760px;
}
.form-grupo.recibo-campo-uf { max-width: 120px; }
.form-grupo.recibo-campo-valor { max-width: 240px; }


/* ==========================================================================
   MÓDULO ADMIN (bloqueios, logs, manual, unidades) + Contatos & Ramais
   ========================================================================== */

/* --- Manual do admin: textos corridos --- */
.admin-manual-texto {
    font-size: 0.9rem;
    line-height: 1.7;
    color: var(--cor-texto);
}
.admin-manual-lista {
    font-size: 0.9rem;
    line-height: 1.8;
    color: var(--cor-texto);
    padding-left: 1.25rem;
}

/* --- Unidades: linha de checkbox "Ativa" dentro de .form-grupo --- */
.admin-campo-check {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1rem;
}
.admin-campo-check input[type="checkbox"] {
    width: 18px;
    height: 18px;
    cursor: pointer;
}
.form-grupo.admin-campo-check label {
    margin: 0;
    cursor: pointer;
}

/* --- Contatos & Ramais --- */
.ramais-titulo {
    font-size: 1.4rem;
    font-family: var(--fonte-titulo);
    margin-bottom: 0.25rem;
}
.campo-com-icone.ramais-busca > svg,
.campo-com-icone.ramais-busca > i {
    width: 18px;
    height: 18px;
}
.ramais-grade {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1.5rem;
    margin-bottom: 3rem;
}
.card-glass.ramais-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 2rem 1.5rem;
    transition: transform 0.2s, box-shadow 0.2s;
    position: relative;
}
.ramais-card-selo {
    position: absolute;
    top: 1rem;
    right: 1rem;
}
.avatar.ramais-avatar {
    width: 72px;
    height: 72px;
    font-size: 1.8rem;
    margin-bottom: 1rem;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.ramais-contatos {
    width: 100%;
    border-top: 1px solid var(--cor-borda);
    padding-top: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    align-items: flex-start;
}
.ramais-email {
    word-break: break-all;
}
.ramais-email-link {
    color: var(--cor-texto);
    text-decoration: none;
    transition: color 0.2s;
}
.ramais-email-link:hover {
    color: var(--cor-primaria);
}
.card-glass.ramais-vazio {
    text-align: center;
    padding: 4rem 2rem;
    margin-bottom: 3rem;
}
.ramais-vazio-icone {
    width: 48px;
    height: 48px;
    color: var(--cor-texto-secundario);
    margin-bottom: 1rem;
    opacity: 0.6;
}


/* ==========================================================================
   ADMIN — USUÁRIOS / COLABORADORES (app/views/admin/usuarios.php e _grade_permissoes.php)
   ========================================================================== */

/* Grade dos formulários: .grid (base.css) vem com gap 1.5rem e é declarada
   depois de .gap-2, então o gap de 1rem precisa vir daqui. */
.grid.au-grid { gap: 1rem; }

/* Tabela principal de colaboradores (complementa .tabela) */
.au-tabela-colaboradores { min-width: 1100px; }

/* Caixa de aviso laranja do modal de importação CSV */
.au-aviso-csv {
    margin-top: 1rem;
    padding: 0.85rem;
    border-left: 3px solid var(--cor-primaria);
    background-color: rgba(var(--cor-primaria-rgb), 0.06);
    border-radius: var(--borda-raio-sm);
}
.au-nota-csv {
    font-size: 0.78rem;
    color: var(--cor-texto-secundario);
    margin-top: 0.75rem;
}

/* Select + botão quadrado "adicionar opção" (departamento / cargo) */
.au-campo-com-botao {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.au-campo-com-botao > select { flex: 1; }
.btn.au-btn-adicionar {
    padding: 0;
    height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    min-width: 42px;
    border-radius: var(--borda-raio-sm);
}

/* Rótulos de checkbox dentro de .form-grupo (vencem ".form-grupo label") */
.form-grupo label.au-rotulo-check {
    margin: 0;
    cursor: pointer;
}
.form-grupo label.au-rotulo-check.au-rotulo-forte { font-weight: 600; }
.form-grupo label.au-rotulo-permissoes {
    font-weight: 600;
    display: block;
    margin-bottom: 0.75rem;
    color: var(--cor-texto);
}

/* Bloco "Dar acesso ao sistema" (o JS alterna .d-none nele) */
.au-bloco-acesso {
    margin-top: 1.25rem;
    border-top: 1px solid var(--cor-borda);
    padding-top: 1.25rem;
}

/* Grade de permissões módulo x ação */
.au-grade-permissoes {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}
.au-grade-permissoes thead tr {
    text-align: left;
    border-bottom: 1px solid var(--cor-borda);
}
.au-grade-permissoes tbody tr { border-bottom: 1px solid var(--cor-borda); }
.au-grade-permissoes th,
.au-grade-permissoes td { padding: 0.4rem 0.5rem; }

/* ==========================================================================
   COMPRESSOR DE PDF (app/views/compressor-pdf)
   ========================================================================== */
.cpdf-card {
    max-width: 640px;
}
.card-glass.cpdf-card {
    padding: 2rem;
}

/* Área de envio: o <input type="file"> fica escondido dentro do <label> */
.cpdf-zona {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.4rem;
    padding: 2rem 1rem;
    border: 2px dashed var(--cor-borda);
    border-radius: var(--borda-raio-lg);
    text-align: center;
    cursor: pointer;
    word-break: break-word;
    transition: border-color var(--transicao-rapida), background-color var(--transicao-rapida);
}
.cpdf-zona:hover,
.cpdf-zona-arrastando {
    border-color: var(--cor-primaria);
    background-color: rgba(var(--cor-primaria-rgb), 0.05);
}
.cpdf-zona-preenchida {
    border-style: solid;
    border-color: var(--cor-primaria);
}
.cpdf-input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}
.cpdf-zona-icone {
    width: 32px;
    height: 32px;
    color: var(--cor-primaria);
}

/* Opções de nível em cartões */
.cpdf-niveis {
    border: 0;
    padding: 0;
    margin: 1.75rem 0 0;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}
.cpdf-nivel {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    border: 1px solid var(--cor-borda);
    border-radius: var(--borda-raio-md);
    cursor: pointer;
    transition: border-color var(--transicao-rapida), background-color var(--transicao-rapida);
}
.cpdf-nivel:hover {
    border-color: var(--cor-borda-foco);
}
.cpdf-nivel:has(input:checked) {
    border-color: var(--cor-primaria);
    background-color: rgba(var(--cor-primaria-rgb), 0.06);
}
.cpdf-nivel input {
    margin-top: 0.2rem;
    accent-color: var(--cor-primaria);
}
.cpdf-nivel-corpo {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

@media (max-width: 600px) {
    .card-glass.cpdf-card {
        padding: 1.25rem;
    }
}
