/* Identidade visual UFVJM — Manual DICOM (Consu) e https://portal.ufvjm.edu.br/dicom/central-de-conteudo/identidade-visual
   Cores WEB: Pantone 367 C / 3015 C. Tipografia institucional: Futura STD (web: Jost, geometrica).
   A marca nao e distorcida nem recolorida; fica em campo branco, com respiro. */
:root {
    --ufvjm-verde: #a3d869;
    --ufvjm-azul: #0065a2;
    --ufvjm-azul-escuro: #004e7c;
    --ufvjm-verde-escuro: #3f7a14;
    --ufvjm-cinza: #cccccc;
    --ufvjm-preto: #1a1a1a;
    --ufvjm-branco: #ffffff;
    --papel: #f3f5f7;
    --texto: #1a1a1a;
    --muted: #5c6570;
    --verde: #0065a2;
    --verde-2: #004e7c;
    --ouro: #a3d869;
}
/* Reset mínimo e tipografia Jost (substituto web da Futura institucional). */
* { box-sizing: border-box; }
html {
    scroll-behavior: smooth;
    font-size: 17px;
}
body {
    margin: 0;
    font-family: Jost, "Century Gothic", Futura, "Trebuchet MS", sans-serif;
    background: var(--papel);
    color: var(--texto);
    font-size: .9375rem;
    line-height: 1.5;
}
/* Azul institucional marca o que é clicável (link ou controle). Texto comum fica preto. */
a {
    color: var(--ufvjm-azul);
    text-decoration: none;
    transition: color .15s ease;
}
/* Destaque no hover e no foco pelo teclado: verde institucional escuro (legível sobre branco). */
a:hover,
a:focus-visible { color: var(--ufvjm-verde-escuro); }
.marca,
.produto a,
.menu-principal a,
.sessao a,
.skip,
a.card,
.paginacao-btn,
.sugestoes-coluna a,
.aba,
.sidebar-filhos a {
    text-decoration: none;
}
/* Link “Ir para o conteúdo” visível só no teclado (acessibilidade). */
.skip {
    position: absolute; left: -999px; top: 0; background: var(--ufvjm-azul); color: #fff; padding: 8px 12px; z-index: 40;
}
.skip:focus { left: 8px; top: 8px; }
/* Faixa azul com o nome da universidade acima do cabeçalho. */
.barra-instituicao {
    background: var(--ufvjm-azul);
    color: #fff;
    font-size: .78rem;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 6px 24px;
    text-align: center;
}
/* Agrupa o botão Alto Contraste à direita da sessão. */
.barra-acessibilidade {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}
/* Botão que liga html.contraste (persistido em localStorage). */
.btn-alto-contraste {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.45);
    color: #fff;
    font: inherit;
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .03em;
    text-transform: uppercase;
    cursor: pointer;
    padding: 6px 12px;
    border-radius: 999px;
}
.btn-alto-contraste svg { width: 18px; height: 18px; display: block; flex-shrink: 0; }
.btn-alto-contraste:hover,
.btn-alto-contraste:focus,
.btn-alto-contraste[aria-pressed="true"] {
    color: var(--ufvjm-verde);
    border-color: var(--ufvjm-verde);
    background: rgba(163,216,105,.16);
}
/* Cabeçalho: marca UFVJM, nome da plataforma e slogan. */
.site-header {
    background: var(--ufvjm-branco);
    border-bottom: 4px solid var(--ufvjm-verde);
}
.site-header .bar {
    padding-top: 6px;
    padding-bottom: 6px;
}
.site-header .marca {
    padding: 0 12px 0 0;
}
.bar {
    max-width: 1100px;
    margin: 0 auto;
    padding: 16px 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 24px;
    flex-wrap: wrap;
}
.marca {
    display: flex;
    align-items: center;
    text-decoration: none;
    padding: 8px 12px 8px 0;
}
.marca img {
    display: block;
    height: 76px;
    width: auto;
    max-width: 340px;
}
.produto {
    flex: 1;
    min-width: 180px;
    border-left: 1px solid var(--ufvjm-cinza);
    padding-left: 18px;
}
.produto a {
    font-weight: 600;
    font-size: 1.15rem;
    color: var(--ufvjm-azul);
    text-decoration: none;
    letter-spacing: .02em;
}
.produto small {
    display: block;
    font-size: .75rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--muted);
}
/* Barra de navegação pública (Projeto, Sobre, Ajuda, Contato) e sessão. */
.menu {
    background: var(--ufvjm-azul);
}
.menu .bar {
    max-width: none;
    width: 100%;
    padding: 0 24px;
    min-height: 48px;
    justify-content: space-between;
    flex-wrap: nowrap;
    gap: 16px;
}
.menu-principal {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 0;
    min-width: 0;
}
.menu-principal a {
    color: #fff;
    text-decoration: none;
    margin-right: 18px;
    font-size: .95rem;
    padding: 14px 0;
    border-bottom: 3px solid transparent;
}
.menu-principal a:hover, .menu-principal a:focus {
    color: var(--ufvjm-verde);
    border-bottom-color: var(--ufvjm-verde);
}
.sessao {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
    margin-left: auto;
    flex-shrink: 0;
    padding: 8px 0 8px 20px;
    border-left: 1px solid rgba(255,255,255,.28);
    color: #fff;
}
.sessao a {
    color: #fff;
    text-decoration: none;
    font-size: .95rem;
    padding: 8px 0;
    border-bottom: 3px solid transparent;
}
.sessao a:hover, .sessao a:focus {
    color: var(--ufvjm-verde);
    border-bottom-color: var(--ufvjm-verde);
}
.sessao-menus {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
    padding-right: 14px;
    margin-right: 2px;
    border-right: 1px solid rgba(255,255,255,.28);
}
.sessao-conta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0 !important;
    border-bottom: 0 !important;
    color: var(--ufvjm-verde) !important;
}
.sessao-conta svg { width: 22px; height: 22px; display: block; }
.sessao-conta:hover, .sessao-conta:focus {
    color: #fff !important;
    background: rgba(163,216,105,.18);
}
.sessao-nome {
    font-size: .9rem;
    font-weight: 600;
    letter-spacing: .04em;
    max-width: 8rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.sessao button:not(.btn-alto-contraste) {
    background: transparent;
    border: 1px solid var(--ufvjm-verde);
    color: var(--ufvjm-verde);
    cursor: pointer;
    font: inherit;
    font-size: .9rem;
    padding: 6px 14px;
}
.sessao button:not(.btn-alto-contraste):hover {
    background: var(--ufvjm-verde);
    color: var(--ufvjm-azul-escuro);
}
/* Barra da busca do cabeçalho (permanece visível autenticado). */
.search-wrap {
    background: var(--ufvjm-azul-escuro);
    padding: 8px 24px 10px;
}
.search-wrap form { max-width: 1100px; margin: 0 auto; position: relative; }
/* Campo de busca: Enter dispara a consulta, não navega. */
#q {
    width: 100%;
    padding: 7px 12px;
    font-size: .92rem;
    font-family: inherit;
    border: 0;
    border-radius: 4px;
    box-shadow: inset 0 -2px 0 transparent;
}
#q:focus { outline: 0; box-shadow: inset 0 -2px 0 var(--ufvjm-verde); }
/* Painel de resultados em colunas (especialidades, pessoas, unidades…). */
#sugestoes {
    position: absolute; left: 0; right: 0; top: calc(100% + 6px);
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 10px 28px rgba(26, 26, 26, .12);
    z-index: 20;
    overflow: auto;
    max-height: min(52vh, 420px);
    padding: 12px 14px 6px;
}
#sugestoes[hidden] { display: none; }
.sugestoes-grade {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 4px 16px;
    align-items: start;
}
.sugestoes-coluna h3 {
    margin: 0 0 8px;
    padding: 0 0 5px;
    border-bottom: 2px solid var(--ufvjm-verde);
    font-size: .68rem;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--muted);
    font-weight: 600;
}
.sugestoes-grupo + .sugestoes-grupo { margin-top: 10px; }
.sugestoes-coluna a {
    display: block;
    margin: 0 0 4px;
    padding: 6px 8px;
    text-decoration: none;
    color: var(--ufvjm-azul);
    background: #eef1f3;
    border: 0;
    border-radius: 4px;
    font-size: .7rem;
    font-weight: 500;
    line-height: 1.3;
    text-transform: uppercase;
    white-space: normal;
    overflow-wrap: break-word;
}
.sugestoes-coluna a:hover { background: #e1e8ee; color: var(--ufvjm-azul-escuro); }
.sugestoes-detalhe {
    display: block;
    margin-top: 1px;
    font-weight: 400;
    color: var(--muted);
}
.sugestoes-meta {
    margin: 4px 0 8px;
    font-size: .65rem;
    color: var(--muted);
}
@media (max-width: 900px) {
    .sugestoes-grade { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
    .sugestoes-grade { grid-template-columns: 1fr; }
}
/* Conteúdo das páginas públicas: títulos, cards, listas e tabelas. */
main { max-width: 1100px; margin: 0 auto; padding: 24px 24px 48px; }
main p { margin: 0 0 .8rem; }
h1, h2, h3 {
    font-family: Jost, "Century Gothic", Futura, sans-serif;
    font-weight: 600;
    color: var(--texto);
    line-height: 1.25;
}
h1 { margin: 0 0 6px; font-size: 1.35rem; }
h2 { margin: 1.25rem 0 8px; font-size: 1.05rem; }
h3 { margin: 1.1rem 0 6px; font-size: .95rem; }
.lead { font-size: .95rem; color: var(--muted); line-height: 1.5; margin: 0 0 1rem; }
.configuracao-descricao {
    max-width: 46rem;
    overflow-wrap: anywhere;
}
/* Cards da home e totais (docentes, TAs, campi, produções). */
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); gap: 12px; margin: 20px 0; }
.cards-home { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cards-home-totais { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 0; }
.card {
    background: #fff;
    border: 1px solid var(--ufvjm-cinza);
    border-top: 4px solid var(--ufvjm-verde);
    border-radius: 2px;
    padding: 18px;
    color: inherit;
    text-decoration: none;
    display: block;
}
.cards .card { padding: 12px 14px; }
a.card:hover { border-color: var(--ufvjm-azul); border-top-color: var(--ufvjm-azul); }
.card strong { display: block; font-size: 1.8rem; color: var(--texto); }
a.card strong { color: var(--ufvjm-azul); }
.cards .card strong { font-size: 1.45rem; }
.card.card-estatico {
    background: #e7f1f7;
    border: 1px solid #9dc2d8;
    border-top: 4px solid var(--ufvjm-azul);
}
.card.card-estatico strong { color: var(--texto); }
/* Controles de página das listagens. */
.paginacao { display: flex; gap: 10px; align-items: center; justify-content: center; margin: 20px 0 28px; }
.paginacao-barra {
    position: sticky; bottom: 16px; background: #fff;
    border: 1px solid var(--ufvjm-cinza); border-radius: 999px;
    padding: 8px 14px; margin: 28px auto 0; width: fit-content; max-width: 100%;
    z-index: 15;
}
.paginacao-btn {
    width: 44px; height: 44px; border-radius: 50%;
    background: var(--ufvjm-azul); color: #fff;
    display: inline-flex; align-items: center; justify-content: center;
    text-decoration: none; flex-shrink: 0;
}
.paginacao-btn:hover { background: var(--ufvjm-azul-escuro); color: #fff; }
.paginacao-btn.is-disabled { background: var(--ufvjm-cinza); color: #fff; pointer-events: none; }
.paginacao-btn svg { width: 22px; height: 22px; display: block; }
.paginacao-info { font-size: .95rem; color: var(--muted); min-width: 8.5rem; text-align: center; }
/* Listas de pesquisadores, departamentos e campi. */
.lista { list-style: none; padding: 0; margin: 0; }
.lista-numerada { list-style: decimal; padding-left: 1.5rem; }
.lista li {
    background: #fff;
    border: 1px solid var(--ufvjm-cinza);
    border-left: 3px solid var(--ufvjm-verde);
    margin-bottom: 6px;
    padding: 9px 14px;
    border-radius: 4px;
}
.lista a { font-weight: 600; font-size: .875rem; line-height: 1.35; }
.lista a:hover { color: var(--ufvjm-verde-escuro); }
.lista strong { font-size: .875rem; font-weight: 600; color: var(--texto); }
.lista .meta { margin-top: 2px; }
.doi-icone {
    display: inline-flex;
    align-items: center;
    margin-right: .35rem;
    color: var(--ufvjm-azul);
    vertical-align: -0.15em;
}
.doi-icone svg { width: 1.05em; height: 1.05em; display: block; }
.doi-icone:hover { color: var(--ufvjm-verde-escuro); }
/* Seções recolhíveis da ficha pública (produção, projetos, orientações). */
.ficha-cabecalho {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
}
.ficha-identificacao { min-width: 0; flex: 1 1 18rem; }
.ficha-foto,
.conta-foto-atual {
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--ufvjm-azul);
    background: #fff;
    flex: 0 0 auto;
}
.ficha-foto { width: 128px; height: 128px; }
.conta-foto-atual { width: 96px; height: 96px; }
/* Indicadores públicos (visitante): Relatórios e Gráficos. */
.indicadores-nav {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin: 0 0 1.5rem;
    padding: 12px 16px;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 8px;
    background: #f7f9fb;
}
.indicadores-nav-grupo {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px 12px;
}
.indicadores-nav-titulo {
    flex: 0 0 6.5rem;
    font-family: Jost, "Century Gothic", Futura, sans-serif;
    font-size: .8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}
.indicadores-nav ul {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    list-style: none;
    margin: 0;
    padding: 0;
}
.indicadores-nav a {
    display: inline-block;
    padding: 4px 12px;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 999px;
    background: #fff;
    font-size: .875rem;
    line-height: 1.4;
    color: var(--ufvjm-azul);
    text-decoration: none;
}
.indicadores-nav a:hover,
.indicadores-nav a:focus-visible {
    border-color: var(--ufvjm-azul);
    color: var(--ufvjm-azul-escuro);
}
.indicadores-nav a.is-ativa {
    border-color: var(--ufvjm-azul);
    background: var(--ufvjm-azul);
    color: #fff;
    font-weight: 600;
}
@media (max-width: 640px) {
    .indicadores-nav-titulo { flex-basis: 100%; }
}
.ficha-dados { margin: 0 0 1.5rem; }
.ficha-dados dt {
    font-size: .8rem;
    color: var(--muted);
    margin: .85rem 0 0;
}
.ficha-dados dd { margin: .2rem 0 0; }
.ficha-projeto-bloco { margin: 1.5rem 0; }
.ficha-projeto-bloco h2 { font-size: 1.15rem; margin: 0 0 .5rem; }
.ficha-secao {
    margin: 1.25rem 0 8px;
}
.ficha-secao > summary {
    list-style: none;
    cursor: pointer;
    font-family: Jost, "Century Gothic", Futura, sans-serif;
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--texto);
    margin: 0 0 8px;
    padding: 2px 0;
}
.ficha-secao > summary::-webkit-details-marker { display: none; }
.ficha-secao > summary::before {
    content: "▸";
    display: inline-block;
    width: 1em;
    margin-right: .15em;
    color: var(--ufvjm-azul);
}
.ficha-secao[open] > summary::before { content: "▾"; }
.ficha-secao > summary:hover { color: var(--ufvjm-azul); }
.ficha-graficos { margin: 1.25rem 0 .25rem; }
.ficha-graficos h2 {
    font-size: 1.15rem;
    margin: 1.1rem 0 .4rem;
}
.ficha-graficos-toggle {
    background: var(--ufvjm-branco);
    border: 1px solid var(--ufvjm-azul);
    color: var(--ufvjm-azul);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
    padding: 6px 14px;
    border-radius: 4px;
}
.ficha-graficos-toggle:hover,
.ficha-graficos-toggle:focus-visible {
    background: var(--ufvjm-azul);
    color: #fff;
}
.meta { color: var(--muted); font-size: .8rem; }
.lista-compacta { list-style: none; margin: 0; padding: 0; }
.lista-compacta li + li { margin-top: .35rem; }
.lista-compacta .meta { margin-left: .35rem; }
/* Etiqueta de fonte (Lattes/SIEXC) e chips de metadado. */
.tag {
    display: inline-block;
    background: #eef6ec;
    color: var(--texto);
    padding: 4px 10px;
    border-radius: 2px;
    margin: 0 6px 8px 0;
    font-size: .85rem;
    text-decoration: none;
}
a.tag {
    color: var(--ufvjm-azul);
}
a.tag:hover,
a.tag:focus-visible { color: var(--ufvjm-verde-escuro); }
/* Nuvem de palavras-chave: tamanho vem do style (menções em projetos). */
.nuvem-palavras {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem 0.85rem;
    margin: 1rem 0 1.5rem;
    line-height: 1.45;
}
a.nuvem-palavra {
    color: var(--ufvjm-azul);
    font-weight: 600;
}
a.nuvem-palavra:hover,
a.nuvem-palavra:focus-visible {
    color: var(--ufvjm-verde-escuro);
}
.tag.fonte-dado {
    background: #e8eef3;
    color: var(--muted);
    font-size: .75rem;
    letter-spacing: .04em;
    text-transform: uppercase;
    vertical-align: middle;
}
/* Tabelas: cabeçalho maior que o corpo, zebra verde. */
table { width: 100%; border-collapse: collapse; background: #fff; line-height: 1.35; }
th, td { text-align: left; padding: 4px 10px; border-bottom: 1px solid #eee; vertical-align: middle; }
th { font-size: .875rem; letter-spacing: .04em; text-transform: uppercase; color: var(--texto); background: #fff; padding: 8px 10px; font-weight: 600; }
td { font-size: .8125rem; }
tbody tr:nth-child(odd) td { background: #fff; }
tbody tr:nth-child(even) td { background: #d4e8c2; }
table .evento { padding: 1px 8px; font-size: .75rem; }
/* Rodapé com brasão e crédito da identidade visual. */
.site-footer {
    background: var(--ufvjm-branco);
    border-top: 4px solid var(--ufvjm-azul);
    padding: 28px 24px;
    color: var(--muted);
    font-size: .85rem;
}
.site-footer .rodape {
    max-width: 1100px;
    margin: 0 auto;
    display: flex;
    gap: 24px;
    align-items: center;
    flex-wrap: wrap;
}
.site-footer .brasao {
    height: 56px;
    width: auto;
    max-width: 360px;
    object-fit: contain;
}
.identidade-rodape-links { display: grid; gap: 12px; margin-top: 16px; }
.identidade-rodape-linha {
    display: grid;
    grid-template-columns: minmax(8rem, 12rem) minmax(0, 1fr);
    gap: 12px;
}
.identidade-rodape-atual img {
    max-width: 360px;
    height: 56px;
    width: auto;
    object-fit: contain;
}
.site-footer p { margin: 0 0 6px; }
/* Mensagens de erro de validação. */
.aviso { background: #eef6ec; border-left: 4px solid var(--ufvjm-verde); padding: 12px 16px; margin: 24px 0; }
.aviso ul { margin: 8px 0 0; padding-left: 18px; }
/* Falha de login: vermelho, para não parecer sucesso (o .aviso padrão é verde). */
.aviso-erro {
    background: #fdecea;
    border-left-color: #b42318;
    color: #7a1c14;
}
/* Formulário de login e campos reutilizados em painéis. */
.form-login { max-width: 420px; background: #fff; border: 1px solid var(--ufvjm-cinza); border-radius: 2px; padding: 24px; display: grid; gap: 8px; }
.form-login label { font-size: .9rem; color: var(--muted); }
.login-turnstile { min-height: 65px; margin: 4px 0; }
.form-login input[type=text], .form-login input[type=password], .form-login input[type=email], .form-login input[type=search], .form-login select, .form-login textarea {
    padding: 12px 14px; font-size: 1rem; font-family: inherit;
    border: 1px solid var(--ufvjm-cinza); border-radius: 2px;
}
.form-login input[type=file] { padding: 8px 0; font-size: .9rem; font-family: inherit; }
.form-login textarea { min-height: 8rem; resize: vertical; line-height: 1.45; }
.form-login button {
    margin-top: 8px; background: var(--ufvjm-azul); color: #fff; border: 0;
    padding: 12px 16px; border-radius: 2px; font-size: 1rem; font-family: inherit; cursor: pointer;
}
.form-login button:hover { background: var(--ufvjm-azul-escuro); }
.form-login .check { display: flex; align-items: center; gap: 8px; margin: 6px 0; }
/* Tela Entrar: cartão institucional com formulário legível. */
.pagina-entrar {
    max-width: 32rem;
    margin: 28px auto 48px;
}
.pagina-entrar > .meta { margin: 0 0 10px; }
.entrar-cartao {
    background: #fff;
    border: 1px solid var(--ufvjm-cinza);
    border-top: 4px solid var(--ufvjm-verde);
    padding: 30px 34px 28px;
}
.entrar-cabecalho { margin-bottom: 22px; }
.entrar-selo {
    margin: 0 0 5px;
    color: var(--ufvjm-verde);
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.pagina-entrar h1 {
    margin: 0 0 8px;
    font-size: 1.75rem;
    line-height: 1.15;
    text-align: center;
}
.pagina-entrar .lead {
    margin: 0;
    max-width: none;
    font-size: .95rem;
    line-height: 1.55;
}
.pagina-entrar .aviso-erro { margin: 0 0 20px; }
.pagina-entrar .login-form {
    max-width: none;
    margin: 0;
    padding: 0;
    border: 0;
    gap: 16px;
}
.login-campo {
    display: grid;
    gap: 6px;
}
.pagina-entrar .login-form label {
    color: var(--texto);
    font-weight: 600;
}
.pagina-entrar .login-form input[type=text],
.pagina-entrar .login-form input[type=password] {
    width: 100%;
    box-sizing: border-box;
    background: #fff;
}
.pagina-entrar .login-form input:focus-visible {
    border-color: var(--ufvjm-azul);
    outline: 2px solid var(--ufvjm-azul);
    outline-offset: 2px;
}
.pagina-entrar .login-form .check {
    margin: 0;
    font-weight: 400;
}
.pagina-entrar .login-form button {
    width: 100%;
    margin-top: 2px;
    font-weight: 600;
}
.login-nota {
    margin: 22px 0 0;
    padding-top: 16px;
    border-top: 1px solid var(--ufvjm-cinza);
    color: var(--muted);
    font-size: .8rem;
    line-height: 1.45;
}
@media (max-width: 600px) {
    .pagina-entrar { margin-top: 18px; }
    .entrar-cartao { padding: 24px 20px; }
}
/* Filtros de indicadores e de áreas temáticas (q, datas, abas). */
.filtro-projetos {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 10px;
    max-width: 48rem;
    margin: 0 0 20px;
}
.filtro-projetos label { font-size: .9rem; color: var(--muted); }
.filtro-projetos input[type=search],
.filtro-projetos input[type=text] {
    flex: 1 1 16rem;
    min-width: 0;
    padding: 8px 12px;
    font: inherit;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 2px;
    background: #fff;
}
.filtro-projetos input[type=number],
.filtro-projetos input[type=date] {
    width: 7.5rem;
    flex: 0 0 auto;
    min-width: 0;
    padding: 8px 12px;
    font: inherit;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 2px;
    background: #fff;
}
.filtro-projetos input[type=date] { width: 11.5rem; }
.filtro-projetos input[type=search]:focus,
.filtro-projetos input[type=text]:focus,
.filtro-projetos input[type=number]:focus,
.filtro-projetos input[type=date]:focus,
.filtro-projetos select:focus {
    outline: 0;
    border-color: var(--ufvjm-azul);
}
.filtro-projetos select {
    padding: 8px 12px;
    font: inherit;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 2px;
    background: #fff;
}
.filtro-projetos button {
    background: var(--ufvjm-azul);
    color: #fff;
    border: 0;
    padding: 8px 14px;
    border-radius: 2px;
    font: inherit;
    cursor: pointer;
}
.filtro-projetos button:hover { background: var(--ufvjm-azul-escuro); }
.filtro-barra {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 12px 16px;
    margin: 0 0 20px;
}
.filtro-barra .card {
    flex: 0 0 auto;
    align-self: center;
    min-width: 10.5rem;
    padding: 10px 14px 12px;
}
.filtro-barra:has(.form-area-wrap) .card {
    align-self: stretch;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
}
.filtro-barra .card strong { font-size: 1.55rem; }
.filtro-barra .filtro-projetos {
    flex: 1 1 18rem;
    max-width: none;
    margin: 0;
    align-self: center;
}
.filtro-projetos > strong {
    font-size: .75rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--texto);
}
.filtro-projetos .check {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: .9rem;
    color: var(--muted);
    white-space: nowrap;
}
.filtro-barra .form-area-wrap {
    flex: 1 1 28rem;
    margin-bottom: 0;
    padding: 14px 16px 16px;
}
.filtro-barra .form-area-wrap h2 {
    margin: 0 0 10px;
    font-size: 1.05rem;
}
.form-area-nova {
    display: grid;
    grid-template-columns: minmax(12rem, 18rem) 1fr auto;
    gap: 8px 12px;
    align-items: end;
}
.form-area-nova .campo {
    display: grid;
    gap: 4px;
    min-width: 0;
}
.form-area-nova .campo-nome,
.form-area-nova .campo-mae { grid-column: 1; }
.form-area-nova .campo-descricao { grid-column: 2 / -1; }
.form-area-nova .campo label {
    font-size: .8rem;
    color: var(--muted);
}
.form-area-nova .campo input,
.form-area-nova .campo select {
    width: 100%;
    min-width: 0;
    padding: 8px 12px;
    font: inherit;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 2px;
    background: #fff;
}
.form-area-nova .campo input:focus,
.form-area-nova .campo select:focus {
    outline: 0;
    border-color: var(--ufvjm-azul);
}
.form-area-nova-acoes {
    grid-column: 2 / -1;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 38px;
}
.form-area-nova-acoes .check {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: .9rem;
    color: var(--muted);
    white-space: nowrap;
}
.form-area-nova-acoes button {
    background: var(--ufvjm-azul);
    color: #fff;
    border: 0;
    padding: 8px 14px;
    border-radius: 2px;
    font: inherit;
    cursor: pointer;
}
.form-area-nova-acoes button:hover { background: var(--ufvjm-azul-escuro); }
.projetos-lote-acoes { margin: 4px 0 16px; }
.vinculos { max-height: 240px; overflow: auto; border: 1px solid var(--ufvjm-cinza); border-radius: 2px; padding: 8px 12px; background: #fff; }
/* Flash de sucesso: faixa verde sólida, distinta dos cards (borda verde no topo). */
.ok {
    background: var(--ufvjm-verde);
    color: var(--ufvjm-azul-escuro);
    border: 0;
    border-radius: 2px;
    padding: 12px 16px;
    margin: 0 0 16px;
    font-weight: 500;
}
.ok strong { font-weight: 700; }
.ok-falha {
    background: #c45c26;
    color: #fff;
}
/* Links de seção (Ajuda, conta, indicadores). */
.subnav { margin: 0 0 20px; }
.subnav a { margin-right: 16px; }
.ajuda-secao { margin-top: 28px; }
.ajuda-secao h2 { scroll-margin-top: 12px; }
/* Abas pesquisa/extensão em Meus projetos. */
.abas {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    margin: 8px 0 20px;
    border-bottom: 2px solid var(--ufvjm-cinza);
}
.aba {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    margin-bottom: -2px;
    color: var(--muted);
    text-decoration: none;
    font-weight: 500;
    border-bottom: 2px solid transparent;
}
.aba:hover { color: var(--ufvjm-azul); }
.aba.is-ativa {
    color: var(--ufvjm-azul);
    border-bottom-color: var(--ufvjm-verde);
}
.aba-conta {
    background: #eef6ec;
    color: var(--ufvjm-azul);
    font-size: .8rem;
    padding: 1px 7px;
    border-radius: 2px;
}
/* Selos de status (login, fila, sucesso/falha). */
.evento { display: inline-block; padding: 3px 10px; border-radius: 2px; font-size: .85rem; }
.evento-login { background: #eef6ec; color: var(--ufvjm-azul); }
.evento-logout { background: #e8eef3; color: var(--ufvjm-azul-escuro); }
.evento-sucesso { background: #eef6ec; color: var(--ufvjm-azul-escuro); }
.evento-andamento { background: #e8eef3; color: var(--ufvjm-azul); }
.evento-falha { background: #f4ece6; color: #6b3a16; }
/* Cards-resumo do painel e das filas ETL. */
.filas-resumo, .painel-resumo { margin: 8px 0 24px; }
.painel-resumo a.card.is-ativa {
    border-color: var(--ufvjm-azul);
    border-top-color: var(--ufvjm-azul);
}
.painel-acoes {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
    margin: 0 0 24px;
    align-items: start;
}
.filas-acoes {
    display: grid;
    grid-template-columns: minmax(170px, 220px) minmax(0, 1fr);
    gap: 20px;
    margin: 8px 0 24px;
    align-items: stretch;
}
.filas-acoes .filas-resumo {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin: 0;
}
.filas-acoes .filas-resumo .card {
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.filas-acoes > .filas-bloco { margin: 0; }
.filas-acoes .form-login button { justify-self: start; }
.filas-bloco, .painel-bloco {
    background: #fff;
    border: 1px solid var(--ufvjm-cinza);
    border-top: 4px solid var(--ufvjm-verde);
    border-radius: 2px;
    padding: 20px 22px 24px;
    margin-bottom: 24px;
}
.filas-bloco h2, .painel-bloco h2 { margin: 0 0 8px; font-size: 1.05rem; }
.filas-bloco .form-login, .painel-bloco .form-login {
    max-width: none;
    margin-top: 12px;
    border: 0;
    padding: 0;
}
.filas-tabela, .painel-tabela { overflow-x: auto; margin-top: 12px; }
.filas-tabela table, .painel-tabela table { min-width: 640px; }
.tabela-auditoria {
    width: 100%;
    min-width: 70rem;
    table-layout: fixed;
}
.tabela-consolidado { min-width: 56rem; }
.tabela-consolidado .num { text-align: right; font-variant-numeric: tabular-nums; }
.tabela-consolidado tfoot th,
.tabela-consolidado tfoot td {
    font-weight: 600;
    border-top: 2px solid var(--ufvjm-verde);
}
.tabela-consolidado .th-ordenar {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--ufvjm-azul);
    font: inherit;
    font-weight: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    text-align: inherit;
    text-decoration: none;
    cursor: pointer;
}
.tabela-consolidado .num .th-ordenar { justify-content: flex-end; }
.tabela-consolidado th[aria-sort="descending"] .th-ordenar::after,
.tabela-consolidado th[aria-sort="ascending"] .th-ordenar::after {
    font-size: .7em;
    line-height: 1;
}
.tabela-consolidado th[aria-sort="descending"] .th-ordenar::after { content: "▼"; }
.tabela-consolidado th[aria-sort="ascending"] .th-ordenar::after { content: "▲"; }
.tabela-consolidado .th-ordenar:hover,
.tabela-consolidado .th-ordenar:focus-visible {
    color: var(--ufvjm-verde-escuro);
    outline: 0;
}
.tabela-auditoria .col-quando {
    width: 9.5rem;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.tabela-auditoria .col-usuario {
    width: 13rem;
    overflow-wrap: anywhere;
}
.tabela-auditoria .col-acao {
    width: 13rem;
    overflow-wrap: anywhere;
}
.tabela-auditoria .col-detalhe {
    width: auto;
    overflow-wrap: anywhere;
}
.tabela-auditoria .col-alvo {
    width: 15rem;
    overflow-wrap: anywhere;
}
.tabela-auditoria .col-ip {
    width: 8rem;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.filas-msg { max-width: 28rem; word-break: break-word; white-space: pre-line; }
/* Bloco de um projeto na associação de áreas. */
.projeto-area { margin: 16px 0 0; padding-top: 16px; border-top: 1px solid var(--ufvjm-cinza); }
.projeto-area:first-of-type { border-top: 0; padding-top: 8px; }
.projeto-area h3 { margin: 0 0 6px; font-size: 1.05rem; }
.projeto-area button {
    margin-top: 10px;
    background: var(--ufvjm-azul);
    color: #fff;
    border: 0;
    padding: 8px 14px;
    cursor: pointer;
}
.projeto-area button:hover { background: var(--ufvjm-azul-escuro); }
/* Layout em duas colunas de /conta (Meus dados). */
.conta-pagina { display: block; padding-bottom: 72px; }
.conta-form-ancora {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
}
.conta-pagina > .lead { max-width: none; font-size: .95rem; margin-bottom: 16px; }
.conta-pagina .painel-resumo { margin: 0 0 16px; gap: 10px; }
.conta-pagina .painel-resumo .card { padding: 10px 12px; }
.conta-pagina .painel-resumo .card strong { font-size: 1.25rem; }
.conta-grade, .conta-colunas {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 16px;
    margin: 0 0 16px;
    align-items: start;
}
.conta-grade:has(> :only-child), .conta-colunas:has(> :only-child) { grid-template-columns: 1fr; }
.contato-grade { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.conta-coluna { display: grid; gap: 16px; min-width: 0; }
.conta-pagina .painel-bloco {
    padding: 14px 16px 16px;
    margin-bottom: 0;
}
.conta-pagina .painel-bloco h2 { font-size: 1.05rem; margin-bottom: 6px; }
.conta-pagina .painel-bloco > .meta { margin: 0 0 10px; }
.conta-campos {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 10px 12px;
}
.conta-campo { display: grid; gap: 4px; min-width: 0; }
.conta-campo-largo { grid-column: 1 / -1; }
.conta-pagina label { font-size: .85rem; color: var(--muted); }
.conta-pagina input[type=text],
.conta-pagina input[type=password],
.conta-pagina input[type=email],
.conta-pagina textarea {
    width: 100%;
    box-sizing: border-box;
    padding: 8px 10px;
    font-size: .95rem;
    font-family: inherit;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 2px;
}
.conta-pagina textarea {
    min-height: 8rem;
    resize: vertical;
    line-height: 1.45;
}
.conta-pagina textarea.conta-palavras {
    min-height: 0;
    height: calc(1.45em * 3 + 18px);
}
.conta-lattes-upload { display: grid; gap: 4px; margin: 0 0 8px; }
.conta-lattes-acoes {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    margin-top: 4px;
}
.conta-lattes-reimportar { margin: 0; }
.conta-seguidos { display: grid; gap: 16px; }
.conta-pagina /* Checkboxes de unidades de pesquisa agrupados por campus. */
.unidades-por-campus {
    max-height: 220px;
    gap: 8px;
    margin-top: 4px;
    padding: 8px;
}
.conta-pagina .unidade-campus { gap: 4px; }
.conta-pagina .unidade-campus h3 { font-size: .72rem; }
.conta-pagina .unidade-item {
    padding: 4px 8px;
    font-size: .72rem;
    gap: 6px;
    border-radius: 4px;
}
.conta-pagina .check { display: flex; align-items: flex-start; gap: 8px; margin: 0; }
.conta-visibilidade {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 8px 16px;
}
.conta-coluna .conta-visibilidade { grid-template-columns: 1fr; }
.conta-visibilidade .check { color: var(--ufvjm-preto, #222); font-size: .9rem; }
.conta-pagina .vinculos {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 2px 12px;
    max-height: 180px;
    margin-top: 8px;
}
.unidades-por-campus {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-height: 280px;
    overflow-y: auto;
    overflow-x: hidden;
    margin-top: 8px;
    padding: 12px 12px 14px;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 8px;
    background: #fff;
}
.unidades-por-campus:focus {
    outline: 2px solid var(--ufvjm-azul);
    outline-offset: 2px;
}
.unidade-campus {
    display: grid;
    gap: 8px;
}
.unidade-campus h3 {
    margin: 0;
    font-size: .82rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: var(--texto);
    line-height: 1.3;
}
.unidade-item {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 6px;
    background: #fff;
    font-size: .88rem;
    line-height: 1.3;
    color: var(--texto);
    cursor: pointer;
}
.unidade-item input {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    margin: 0;
}
.conta-acoes {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin: 4px 0 0;
}
.conta-rodape {
    margin: 28px 0 88px;
    padding: 12px 0 0;
    border-top: 1px solid var(--ufvjm-cinza);
    width: 100%;
    max-width: none;
}
.conta-rodape p {
    margin: 0;
    color: var(--muted);
    font-size: .8rem;
    line-height: 1.45;
}
.conta-acoes-flutuante {
    position: fixed;
    left: 50%;
    bottom: 20px;
    transform: translateX(-50%);
    z-index: 20;
    margin: 0;
    padding: 8px 14px;
    background: #fff;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 999px;
    box-shadow: 0 8px 24px rgba(0, 101, 162, .18);
}
.conta-pagina button[type=submit] {
    width: auto;
    margin: 0;
    background: var(--ufvjm-azul);
    color: #fff;
    border: 0;
    padding: 7px 14px;
    border-radius: 2px;
    font-size: .9rem;
    font-family: inherit;
    cursor: pointer;
}
.conta-pagina button[type=submit]:hover { background: var(--ufvjm-azul-escuro); }
.conta-pagina > form > .conta-acoes { margin: 0 0 16px; }
/* Filtros e canvas Chart.js dos indicadores. */
.grafico-ano-cabecalho {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 16px;
    margin: 0 0 8px;
}
.grafico-ano-cabecalho h2 { margin: 0; }
.grafico-ano-filtros {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
    margin: 0;
    padding: 0;
    border: 0;
}
.grafico-ano-filtros .check {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: .9rem;
    color: var(--muted);
    white-space: nowrap;
    cursor: pointer;
}
.grafico-ano-canvas { position: relative; height: 320px; max-width: 100%; }
.serie-anual-divisao {
    border: 0;
    border-top: 2px solid var(--ufvjm-cinza);
    margin: 8px 0 32px;
}
.visually-hidden {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
/* Corpo autenticado: sidebar + conteúdo. */
.app-corpo { display: flex; align-items: stretch; min-height: 40vh; }
/* Menu lateral do gestor/administrador (recolhível). */
.sidebar {
    width: 268px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    background: #fff;
    border-right: 1px solid var(--ufvjm-cinza);
    padding: 16px 12px 18px;
}
.sidebar-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 4px 8px 14px;
    border-bottom: 1px solid #eee;
    margin-bottom: 12px;
}
.sidebar-topo strong {
    font-size: .78rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--ufvjm-azul);
}
.sidebar-toggle {
    width: 36px;
    height: 36px;
    border: 0;
    background: transparent;
    color: var(--ufvjm-azul);
    cursor: pointer;
    border-radius: 8px;
    padding: 0;
}
.sidebar-toggle:hover { background: #eef6ec; }
.sidebar-toggle-ico, .sidebar-toggle-ico:before, .sidebar-toggle-ico:after {
    display: block;
    width: 16px;
    height: 2px;
    background: currentColor;
    border-radius: 1px;
    margin: 0 auto;
    position: relative;
}
.sidebar-toggle-ico:before, .sidebar-toggle-ico:after {
    content: "";
    position: absolute;
    left: 0;
}
.sidebar-toggle-ico:before { top: -5px; }
.sidebar-toggle-ico:after { top: 5px; }
.sidebar-nav { display: grid; gap: 6px; align-content: start; align-items: start; }
.sidebar-grupo { border-radius: 10px; }
.sidebar-grupo summary {
    list-style: none;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 10px;
    border-radius: 10px;
    cursor: pointer;
    color: var(--texto);
    font-weight: 500;
}
.sidebar-grupo summary::-webkit-details-marker { display: none; }
.sidebar-grupo summary:hover { background: #f3f5f7; }
.sidebar-grupo[open] > summary { color: var(--ufvjm-azul); }
.sidebar-ico {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    display: inline-flex;
    color: var(--ufvjm-azul);
}
.sidebar-ico svg { width: 20px; height: 20px; display: block; }
.sidebar-filhos {
    display: grid;
    gap: 2px;
    margin: 2px 0 8px 21px;
    padding: 0 0 4px 12px;
    border-left: 2px solid #d4e8c2;
}
.sidebar-filhos a {
    display: block;
    padding: 7px 12px;
    border-radius: 8px;
    text-decoration: none;
    color: var(--texto);
    font-size: .95rem;
}
.sidebar-filhos a:hover { background: #f3f5f7; color: var(--ufvjm-azul-escuro); }
.sidebar-filhos a.is-ativa {
    background: #e8f2f8;
    color: var(--ufvjm-azul);
    font-weight: 600;
}
.sidebar-usuario {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: auto;
    padding: 10px 8px 2px;
    border-top: 1px solid #eee;
    text-decoration: none;
    color: inherit;
}
.sidebar-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--ufvjm-azul);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    flex-shrink: 0;
}
.sidebar-usuario-dados { min-width: 0; }
.sidebar-usuario-dados strong { display: block; font-size: .92rem; color: var(--ufvjm-azul); }
.sidebar-usuario-dados small { display: block; color: var(--muted); font-size: .78rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar.is-recolhida { width: 76px; padding-left: 8px; padding-right: 8px; }
.sidebar.is-recolhida .sidebar-rotulo,
.sidebar.is-recolhida .sidebar-filhos,
.sidebar.is-recolhida .sidebar-topo strong,
.sidebar.is-recolhida .sidebar-usuario-dados { display: none; }
.sidebar.is-recolhida .sidebar-topo { justify-content: center; padding-left: 0; padding-right: 0; }
.sidebar.is-recolhida .sidebar-grupo summary { justify-content: center; padding: 10px; }
/* Conteúdo largo quando a sidebar está visível. */
body.com-sidebar main {
    flex: 1;
    min-width: 0;
    max-width: none;
    width: 100%;
    margin: 0;
    padding-left: 28px;
    padding-right: 32px;
}
body.com-sidebar .painel-tabela table,
body.com-sidebar .filas-tabela table {
    width: 100%;
    min-width: 0;
}
body.com-sidebar .painel-tabela .tabela-auditoria {
    min-width: 70rem;
}
body.com-sidebar .painel-tabela .tabela-consolidado {
    min-width: 56rem;
}
/* Página Links de atualização (CSVs e horário). */
.fontes-pagina { max-width: 46rem; }
.fontes-pagina > .lead,
.fontes-pagina > .meta,
.fontes-pagina > h1,
.fontes-pagina .painel-bloco .meta,
.fontes-pagina .aviso {
    overflow-wrap: anywhere;
}
.fontes-pagina > .painel-bloco { margin-top: 0; }
.fontes-pagina .conta-acoes { justify-content: flex-start; }
.fontes-divisor {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 28px 0 16px;
    color: var(--muted);
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.fontes-divisor::before,
.fontes-divisor::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--ufvjm-cinza);
}
.fontes-lattes-form { max-width: none; gap: 12px; }
.fontes-lattes-form .conta-acoes { margin-top: 4px; }
/* Formulário de identidade visual (marca e cores). */
.identidade-form { display: grid; gap: 16px; max-width: 46rem; }
.identidade-form .painel-bloco { margin: 0; }
.identidade-form label { display: block; font-size: .85rem; color: var(--muted); margin-bottom: 4px; }
.identidade-form .check { display: flex; align-items: flex-start; gap: 8px; margin-top: 10px; color: var(--texto); }
.fonte-dias {
    border: 0;
    margin: 12px 0 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 4px 16px;
}
.fonte-dias legend {
    font-size: .85rem;
    color: var(--muted);
    padding: 0;
    margin-bottom: 6px;
    width: 100%;
}
.identidade-form .fonte-dias .check { margin-top: 0; }
.identidade-form input[type=file] {
    width: 100%;
    box-sizing: border-box;
    padding: 8px 10px;
    font: inherit;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 2px;
    background: #fff;
}
.identidade-form input[type=text],
.identidade-form input[type=password],
.identidade-form input[type=url],
.identidade-form input[type=time],
.identidade-form select {
    width: 100%;
    box-sizing: border-box;
    padding: 8px 10px;
    font: inherit;
    border: 1px solid var(--ufvjm-cinza);
    border-radius: 2px;
}
.identidade-marca-atual {
    margin: 0 0 12px;
    padding: 10px 12px;
    background: var(--ufvjm-branco);
    border: 1px solid var(--ufvjm-cinza);
}
.identidade-marca-atual img { display: block; height: 64px; width: auto; max-width: 280px; }
.identidade-icone-atual img { height: 32px; width: 32px; object-fit: contain; }
.identidade-cores {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 10px 16px;
    margin-top: 10px;
}
.identidade-cor-campos { display: flex; gap: 8px; align-items: center; }
.identidade-cor-campos input[type=color] {
    width: 42px;
    height: 36px;
    padding: 0;
    border: 1px solid var(--ufvjm-cinza);
    background: #fff;
    cursor: pointer;
}
.identidade-form button[type=submit] {
    background: var(--ufvjm-azul);
    color: #fff;
    border: 0;
    padding: 8px 16px;
    font: inherit;
    cursor: pointer;
}
.identidade-form button[type=submit]:hover { background: var(--ufvjm-azul-escuro); }
@media (max-width: 800px) {
    .marca img { height: 58px; max-width: 264px; }
    .produto { border-left: 0; padding-left: 0; width: 100%; }
    .menu .bar { flex-wrap: wrap; }
    .menu-principal a { margin-right: 12px; padding: 12px 0; }
    .sessao { width: 100%; margin-left: 0; padding: 4px 0 12px; border-left: 0; border-top: 1px solid rgba(255,255,255,.28); justify-content: flex-end; }
    .filas-acoes, .painel-acoes { grid-template-columns: 1fr; }
    .filas-tabela table, .painel-tabela table { min-width: 0; }
    .cards-home,
    .cards-home-totais { grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); }
    .conta-grade, .conta-colunas, .contato-grade, .conta-campos, .conta-visibilidade { grid-template-columns: 1fr; }
    .app-corpo { flex-direction: column; }
    .sidebar, .sidebar.is-recolhida { width: 100%; border-right: 0; border-bottom: 1px solid var(--ufvjm-cinza); }
    body.com-sidebar main { max-width: none; }
    .filtro-barra .form-area-nova,
    .form-area-nova { grid-template-columns: 1fr; }
    .form-area-nova .campo-nome,
    .form-area-nova .campo-descricao,
    .form-area-nova .campo-mae,
    .form-area-nova-acoes { grid-column: 1; }
    .identidade-cores { grid-template-columns: 1fr; }
}

/* --------------------------------------------------------------------------
   Alto Contraste (classe html.contraste, botão no cabeçalho / accesskey 6)
   Fundo preto, texto comum branco. Amarelo só em links e botões.
   O campo de busca (#q) fica branco para não sumir sobre a barra preta.
   -------------------------------------------------------------------------- */

/* Troca as cores institucionais por amarelo/branco/preto enquanto o modo está ligado. */
html.contraste {
    --ufvjm-verde: #ffff00;
    --ufvjm-azul: #ffff00;
    --ufvjm-azul-escuro: #ffff00;
    --ufvjm-verde-escuro: #ffff00;
    --ufvjm-cinza: #ffffff;
    --ufvjm-preto: #ffffff;
    --ufvjm-branco: #000000;
    --papel: #000000;
    --texto: #ffffff;
    --muted: #ffffff;
    --verde: #ffff00;
    --verde-2: #ffff00;
    --ouro: #ffff00;
}

/* Página: fundo preto e texto branco. */
html.contraste body {
    background: #000;
    color: #fff;
}

/* Links e botões em amarelo; o restante do texto fica branco. */
html.contraste a,
html.contraste a strong,
html.contraste button,
html.contraste input[type=submit],
html.contraste .sidebar-grupo summary,
html.contraste .ficha-secao > summary {
    color: #ffff00;
}

/* Títulos, números de card, nomes de lista e rótulos: texto comum, branco. */
html.contraste h1,
html.contraste h2,
html.contraste h3,
html.contraste .card strong,
html.contraste .lista strong,
html.contraste label,
html.contraste .lead,
html.contraste .meta,
html.contraste .ficha-dados dt,
html.contraste .produto small,
html.contraste .paginacao-info,
html.contraste .conta-rodape,
html.contraste .sidebar-usuario-dados strong,
html.contraste .sidebar-usuario-dados small {
    color: #fff;
}

/* Card ou item de lista que é um link: o conjunto inteiro fica amarelo. */
html.contraste a.card,
html.contraste a.card strong,
html.contraste .lista a,
html.contraste .lista a strong {
    color: #ffff00;
}

/* Superfícies (menu, cards, tabelas, formulários, sugestões): fundo preto,
   texto branco e borda amarela. Não incluir #q aqui — o input ficaria invisível. */
html.contraste .barra-instituicao,
html.contraste .menu,
html.contraste .site-header,
html.contraste .site-footer,
html.contraste .search-wrap,
html.contraste .sidebar,
html.contraste .card,
html.contraste .card.card-estatico,
html.contraste .lista li,
html.contraste table,
html.contraste thead,
html.contraste tbody,
html.contraste tfoot,
html.contraste tr,
html.contraste th,
html.contraste td,
html.contraste tbody tr:nth-child(odd) td,
html.contraste tbody tr:nth-child(even) td,
html.contraste #sugestoes,
html.contraste .paginacao-barra,
html.contraste .painel-bloco,
html.contraste .filas-bloco,
html.contraste .entrar-cartao,
html.contraste .form-login,
html.contraste .form-login input,
html.contraste .form-login select,
html.contraste .form-login textarea,
html.contraste .aviso,
html.contraste .evento,
html.contraste .evento-login,
html.contraste .evento-logout,
html.contraste .evento-sucesso,
html.contraste .evento-andamento,
html.contraste .evento-falha,
html.contraste code {
    background: #000;
    color: #fff;
    border-color: #ffff00;
}
html.contraste .entrar-selo,
html.contraste .login-nota {
    color: #fff;
    border-color: #ffff00;
}

/* Flash de sucesso: faixa amarela, fora do grupo de superfícies pretas (como o #q). */
html.contraste .ok {
    background: #ffff00;
    color: #000;
}
html.contraste .ok-falha {
    background: #000;
    color: #fff;
    border: 2px solid #ffff00;
}
html.contraste .aviso-erro {
    background: #000;
    color: #ffff00;
    border-left-color: #ffff00;
}
html.contraste .indicadores-nav {
    background: #000;
    border-color: #fff;
}
html.contraste .indicadores-nav-titulo { color: #fff; }
html.contraste .indicadores-nav a {
    background: #000;
    border-color: #ffff00;
    color: #ffff00;
}
html.contraste .indicadores-nav a.is-ativa {
    background: #ffff00;
    color: #000;
}

/* Linha inferior do cabeçalho em amarelo (no tema normal é verde). */
html.contraste .site-header {
    border-bottom-color: #ffff00;
}

/* Células da tabela: texto branco, divisórias amarelas. */
html.contraste th,
html.contraste td {
    color: #fff;
    border-bottom-color: #ffff00;
}

/* Menu e sessão: links e botões amarelos; iniciais em branco. */
html.contraste .menu-principal a,
html.contraste .sessao a,
html.contraste .sessao button {
    color: #ffff00;
}
html.contraste .sessao,
html.contraste .sessao-nome {
    color: #fff;
}

/* Botão Alto Contraste visível sobre o menu preto. */
html.contraste .btn-alto-contraste {
    color: #ffff00;
    border-color: #ffff00;
    background: #000;
}

/* Links das sugestões de busca em amarelo; etiquetas (Lattes, SIEXC) em branco. */
html.contraste .sugestoes-coluna a {
    background: #000;
    color: #ffff00;
    border: 1px solid #ffff00;
}
html.contraste .tag,
html.contraste .tag.fonte-dado {
    background: #000;
    color: #fff;
    border: 1px solid #ffff00;
}
html.contraste a.tag {
    color: #ffff00;
    text-decoration: underline;
}
html.contraste a.nuvem-palavra {
    color: #ffff00;
    text-decoration: underline;
}

/* Botões de paginação. */
html.contraste .paginacao-btn {
    background: #000;
    color: #ffff00;
    border: 1px solid #ffff00;
}

/* Botões: fundo preto e texto amarelo (o azul institucional vira amarelo no contraste
   e o texto também — sem isso some, ex. “Salvar áreas deste projeto”). */
html.contraste button,
html.contraste input[type=submit],
html.contraste .projeto-area button,
html.contraste .conta-pagina button[type=submit],
html.contraste .filtro-projetos button,
html.contraste .form-area-nova-acoes button,
html.contraste .identidade-form button[type=submit],
html.contraste .form-login button,
html.contraste .paginacao-btn,
html.contraste .ficha-secao > summary {
    background: #000;
    color: #ffff00;
    border: 1px solid #ffff00;
}
html.contraste .ficha-secao > summary::before {
    color: #ffff00;
}
html.contraste button:hover,
html.contraste button:focus-visible,
html.contraste input[type=submit]:hover,
html.contraste .projeto-area button:hover,
html.contraste .conta-pagina button[type=submit]:hover,
html.contraste .filtro-projetos button:hover,
html.contraste .form-area-nova-acoes button:hover,
html.contraste .identidade-form button[type=submit]:hover,
html.contraste .form-login button:hover,
html.contraste .paginacao-btn:hover,
html.contraste .sessao button:not(.btn-alto-contraste):hover {
    background: #ffff00;
    color: #000;
}

/* Separador “ou” da tela de login / fontes (texto comum). */
html.contraste .fontes-divisor {
    color: #fff;
}

/* Traços à esquerda e à direita do texto “ou”. */
html.contraste .fontes-divisor::before,
html.contraste .fontes-divisor::after {
    background: #ffff00;
}

/* Hover e item ativo da sidebar do painel. */
html.contraste .sidebar-toggle:hover,
html.contraste .sidebar-grupo summary:hover,
html.contraste .sidebar-filhos a:hover,
html.contraste .sidebar-filhos a.is-ativa {
    background: #000;
    color: #ffff00;
}

/* Bordas internas da sidebar. */
html.contraste .sidebar-topo,
html.contraste .sidebar-usuario,
html.contraste .sidebar-filhos {
    border-color: #ffff00;
}

/* Avatar com as iniciais na sidebar. */
html.contraste .sidebar-avatar {
    background: #000;
    color: #ffff00;
    border: 1px solid #ffff00;
}

/* Campo de busca: fundo branco e texto preto para não sumir na barra preta.
   color-scheme: light evita que o Chrome pinte o input no tema escuro. */
html.contraste #q {
    background: #fff;
    color: #000;
    border: 2px solid #ffff00;
    caret-color: #000;
    color-scheme: light;
}

/* Texto de dica dentro do campo (placeholder) em cinza escuro, legível no branco. */
html.contraste #q::placeholder {
    color: #333;
    opacity: 1;
}

/* Foco no campo: traço preto na base, visível sobre o fundo branco. */
html.contraste #q:focus {
    box-shadow: inset 0 -2px 0 #000;
}

/* Checkboxes: caixa preta, texto branco (não herdar o fundo branco do tema claro). */
html.contraste .check,
html.contraste .unidades-por-campus,
html.contraste .unidade-item,
html.contraste .vinculos,
html.contraste .conta-visibilidade .check {
    background: #000;
    color: #fff;
    border-color: #ffff00;
}
html.contraste input[type=checkbox] {
    accent-color: #ffff00;
    color-scheme: dark;
    background: #000;
    border: 1px solid #ffff00;
}

html.contraste .tabela-consolidado .th-ordenar,
html.contraste .tabela-consolidado .th-ordenar:hover,
html.contraste .tabela-consolidado .th-ordenar:focus-visible {
    background: transparent;
    color: #ffff00;
    border: 0;
    text-decoration: underline;
}
