/* ===================================================================
   Estilos do novo layout da página inicial (index.xhtml, quando
   paginaExternalBean.currentPage.index é true)
   Escopo: tudo fica dentro de .novo-page para não vazar para as
   demais páginas do portal, que continuam usando css/style.css.
   =================================================================== */

.novo-page {
    font-family: 'Inter', 'Segoe UI', Arial, sans-serif;
    color: #333333;
    background-color: #ffffff;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.novo-page a {
    text-decoration: none;
}

.novo-container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* ---------- Barra utilitária ---------- */
.novo-topbar {
    background-color: #1E4670;
    font-size: 12px;
    color: #ffffff;
}

.novo-topbar .novo-container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 34px;
    flex-wrap: wrap;
}

.novo-topbar-links {
    display: flex;
    gap: 18px;
    flex-wrap: wrap;
}

.novo-topbar-links a {
    color: #ffffff;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.novo-topbar-links a:hover {
    color: #cfe0f2;
}

/* Mantém Mapa do Site / Informação ao Cidadão / Ouvidoria / Acessibilidade
   sempre na mesma linha no responsivo: encolhe fonte/ícone/espaçamento e,
   se ainda assim não couber num aparelho muito estreito, rola na horizontal
   em vez de quebrar para uma segunda linha. */
@media (max-width: 767px) {
    .novo-topbar .novo-container {
        flex-wrap: nowrap;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        justify-content: flex-start;
    }

    .novo-topbar-links {
        flex-wrap: nowrap;
        flex-shrink: 0;
        gap: 12px;
    }

    .novo-topbar-links a {
        font-size: 10.5px;
        gap: 4px;
    }

    .novo-topbar-links a i {
        font-size: 11px;
    }
}

/* ---------- Cabeçalho (logo + busca) ---------- */
.novo-headerrow {
    position: relative;
    background: linear-gradient(90deg, rgba(10, 25, 45, 0.45), rgba(10, 25, 45, 0.2)), url('../img/header_igreja.jpg') center 8%/cover no-repeat;
    padding: 50px 0;
}

/* Em telas largas, "cover" precisa ampliar demais a foto (que é mais
   alta que larga) para preencher a faixa toda, cortando as torres. Em
   vez de aumentar o header para caber a foto ampliada, mostra a foto
   num tamanho fixo e menor (efeito "mais distante"/mais zoom out) sobre
   um fundo azul sólido que combina com o céu da foto — assim o header
   pode ficar mais baixo e a igreja aparece inteira, só menor.
   A foto fica num ::before com máscara de degradê nas bordas, para
   dissolver no fundo sólido em vez de aparecer como um recorte colado. */
@media (min-width: 992px) {
    .novo-headerrow {
        background-color: #03173d;
        background-image: none;
        padding: 70px 0;
        overflow: hidden;
    }

    .novo-headerrow::before {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        width: 470px;
        height: 200px;
        transform: translate(-50%, -50%);
        background-image: url('../img/header_igreja.jpg');
        background-repeat: no-repeat;
        background-position: center;
        background-size: cover;
        -webkit-mask-image: radial-gradient(ellipse 50% 50% at center, #000 40%, transparent 100%);
        mask-image: radial-gradient(ellipse 50% 50% at center, #000 40%, transparent 100%);
    }

    .novo-headerrow .novo-container {
        position: relative;
        z-index: 1;
    }
}

.novo-headerrow .novo-container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    flex-wrap: wrap;
}

.novo-logo {
    display: inline-flex;
    align-items: center;
}

.novo-logo img {
    max-height: 114px;
    filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.35));
}

/* A imagem é bem mais larga que alta (brasão + texto lado a lado);
   em telas estreitas, 165px de altura estouraria a largura da tela. */
@media (max-width: 767px) {
    .novo-logo img {
        max-height: 110px;
    }
}

@media (max-width: 480px) {
    .novo-logo img {
        max-height: 80px;
    }
}

.novo-search-top {
    flex: 0 1 380px;
    max-width: 380px;
    margin-left: auto;
}

/* Abaixo de 768px a busca quebra para sua própria linha (a logo ocupa
   a linha toda); nesse ponto ela deixa de respeitar o limite de 320px
   e passa a ocupar 100% da largura disponível. */
@media (max-width: 767px) {
    .novo-headerrow .novo-container {
        justify-content: center;
    }

    .novo-search-top {
        flex-basis: 100%;
        max-width: 100%;
        margin-left: 0;
        margin-top: 4px;
    }
}

.novo-search-top .novo-search-field {
    display: flex;
    border: 1px solid #d7dce1;
    border-radius: 30px;
    overflow: hidden;
    background: #fff;
}

.novo-search-top input[type="text"] {
    border: none;
    outline: none;
    flex: 1;
    padding: 10px 20px;
    font-size: 14px;
    background: transparent;
}

.novo-search-top .novo-search-btn {
    border: none;
    background: #25588C;
    color: #fff !important;
    width: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.novo-search-top .novo-search-btn:hover {
    background: #1E4670;
}

/* ---------- Menu principal ----------
   Mesmo componente/JS do index.xhtml original (b:navBar/b:dropMenu),
   só restilizado. Isso garante o colapso responsivo (hambúrguer) e a
   abertura dos submenus usando o JS do BootsFaces já testado em
   produção, em vez de reimplementar isso na mão. */
.novo-nav {
    background-color: #25588C;
}

/* Texto de boas-vindas some no responsivo (ver .novo-topbar-welcome); é
   repetido aqui, ao lado do menu, para continuar visível nesses tamanhos. */
.novo-nav-welcome {
    display: none;
}

@media (max-width: 999px) {
    .novo-nav > .novo-container {
        display: flex;
        align-items: center;
        gap: 8px;
        position: relative;
    }

    .novo-nav-welcome {
        display: block;
        flex: 0 1 auto;
        min-width: 0;
        text-align: left;
        color: #ffffff;
        font-size: 13px;
        font-weight: 600;
        line-height: 1.3;
        padding: 8px 0;
    }

    /* Tira o menu aberto do fluxo normal: assim ele não fica preso à
       largura "encolhida" do cabeçalho (MENU + INÍCIO) e pode ocupar
       100% da barra, sobrepondo o conteúdo abaixo em vez de empurrá-lo. */
    .novo-nav .navbar {
        position: static;
    }

    .novo-nav .navbar-default .navbar-collapse {
        position: absolute;
        top: 100%;
        left: 0;
        width: 100%;
        margin: 0;
        z-index: 1000;
    }

    .novo-nav > .novo-container > .navbar {
        flex: 0 0 auto;
    }

    /* O Bootstrap dá largura FIXA (750px/970px, conforme a faixa) à
       .container interna do navbar nessas larguras de tela — isso
       ignorava por completo o encolhimento acima e mantinha MENU/INÍCIO
       espalhados nas pontas da barra. */
    .novo-nav .navbar > .container {
        width: auto !important;
    }
}

/* Força uma única cor chapada em todos os elementos que o
   BootsFaces/Bootstrap possam desenhar dentro do menu (a própria nav,
   o container interno, o navbar-collapse etc.), porque o tema padrão
   do Bootstrap aplica sua própria cor/gradiente em ".navbar-default"
   e isso criava um "degrau" de tonalidade visível na barra. */
.novo-nav,
.novo-nav .navbar,
.novo-nav .navbar-default,
.novo-nav .container,
.novo-nav .navbar-header,
.novo-nav .navbar-collapse {
    background-color: #25588C !important;
    background-image: none !important;
}

.novo-nav .navbar {
    border: none;
    min-height: 34px;
    margin-bottom: 0;
}

/* No desktop, centraliza o grupo logo+links dentro da barra em vez de
   deixá-lo colado à esquerda com espaço vazio sobrando à direita. */
@media (min-width: 1000px) {
    .novo-nav .navbar > .container {
        display: flex;
        align-items: center;
        justify-content: center;
    }
}

.novo-nav .navbar-default .navbar-brand {
    height: auto;
    margin: 0;
    padding: 8px 15px;
    background-color: #2e8540;
    color: #ffffff;
    font-weight: 700;
    font-size: 12.5px;
    letter-spacing: .3px;
}

.novo-nav .navbar-default .navbar-brand::before {
    font-family: "FontAwesome";
    content: "\f015";
    margin-right: 8px;
    font-size: 19px;
    vertical-align: -3px;
}

.novo-nav .navbar-default .navbar-brand:hover,
.novo-nav .navbar-default .navbar-brand:focus {
    background-color: #256e35;
    color: #ffffff;
}

.novo-nav .navbar-default .navbar-nav > li > a {
    color: #ffffff;
    font-weight: 600;
    font-size: 12.5px;
    letter-spacing: .3px;
    text-transform: uppercase;
    padding: 8px 18px;
}

/* Faixa intermediária entre o hambúrguer (até 999px) e o desktop com
   espaço de sobra: aperta um pouco o menu só aqui para caber numa
   linha só, sem reduzir o espaçamento confortável das telas grandes. */
@media (min-width: 1000px) and (max-width: 1300px) {
    .novo-nav .navbar-default .navbar-brand {
        padding-right: 10px;
        font-size: 12px;
        letter-spacing: .2px;
    }

    .novo-nav .navbar-default .navbar-brand::before {
        margin-right: 6px;
    }

    .novo-nav .navbar-default .navbar-nav > li > a {
        font-size: 12px;
        letter-spacing: .2px;
        padding: 8px 13px;
    }
}

.novo-nav .navbar-default .navbar-nav > li > a:hover,
.novo-nav .navbar-default .navbar-nav > li > a:focus,
.novo-nav .navbar-default .navbar-nav > .open > a,
.novo-nav .navbar-default .navbar-nav > .open > a:hover,
.novo-nav .navbar-default .navbar-nav > .open > a:focus {
    background-color: rgba(255,255,255,.12);
    color: #ffffff;
}

.novo-nav .navbar-default .navbar-nav .dropdown-menu {
    background-color: #ffffff;
    border: none;
    border-radius: 0 0 8px 8px;
    box-shadow: 0 12px 28px rgba(10,30,50,.2);
    padding: 6px 0;
    min-width: 260px;
}

.novo-nav .navbar-default .navbar-nav .dropdown-menu .divider {
    margin: 4px 0;
}

.novo-nav .navbar-default .navbar-nav .dropdown-menu > li.dropdown-header {
    color: #25588C;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .5px;
    text-transform: uppercase;
    padding: 6px 16px 3px;
}

.novo-nav .navbar-default .navbar-nav .dropdown-menu > li > a {
    color: #40505f;
    font-size: 11.5px;
    font-weight: 500;
    padding: 5px 16px;
    white-space: normal;
    line-height: 1.3;
}

.novo-nav .navbar-default .navbar-nav .dropdown-menu > li > a:hover,
.novo-nav .navbar-default .navbar-nav .dropdown-menu > li > a:focus {
    background-color: #eef4fa;
    color: #25588C;
}

/* botão hambúrguer padrão do bootstrap (aparece < 1000px, ver override
   abaixo que estende o modo mobile até telas médias) */
.novo-nav .navbar-default .navbar-toggle {
    background-color: #2e8540 !important;
    background-image: none !important;
    border: none;
    border-radius: 6px;
    margin-right: 4px;
    padding: 9px 12px;
}

.novo-nav .navbar-default .navbar-toggle .icon-bar {
    width: 20px;
    height: 2px;
    background-color: #ffffff;
    border-radius: 2px;
}

.novo-nav .navbar-default .navbar-toggle .icon-bar + .icon-bar {
    margin-top: 4px;
}

/* Texto "MENU" abaixo do ícone, para deixar mais claro que é clicável */
.novo-nav .navbar-default .navbar-toggle::after {
    content: "MENU";
    margin-top: 4px;
    color: #ffffff;
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: .5px;
}

.novo-nav .navbar-default .navbar-toggle:hover,
.novo-nav .navbar-default .navbar-toggle:focus {
    background-color: #256e35 !important;
}

.novo-nav .navbar-default .navbar-collapse {
    border: none;
    box-shadow: none;
}

/* Em telas médias (~768–999px) os 8 itens do menu não cabem numa
   linha só, e o Bootstrap por padrão só ativa o hambúrguer abaixo de
   768px — sobrando itens que quebram linha de forma desalinhada. Força
   o comportamento de hambúrguer (igual ao mobile) também nessa faixa. */
@media (min-width: 768px) and (max-width: 999px) {
    .novo-nav .navbar-header {
        float: none;
    }

    .novo-nav .navbar-default .navbar-toggle {
        display: block;
    }

    .novo-nav .navbar-default .navbar-collapse {
        width: auto;
    }

    .novo-nav .navbar-default .navbar-collapse.collapse {
        display: none !important;
    }

    .novo-nav .navbar-default .navbar-collapse.collapse.in {
        display: block !important;
    }

    .novo-nav .navbar-default .navbar-nav {
        float: none !important;
        margin: 0;
    }

    .novo-nav .navbar-default .navbar-nav > li {
        float: none;
    }
}

@media (max-width: 999px) {
    /* ícone + texto "MENU" empilhados (só quando o botão aparece) */
    .novo-nav .navbar-default .navbar-toggle {
        display: flex;
        flex-direction: column;
        align-items: center;
        order: -1;
    }

    /* linha do brand + hambúrguer com uma leve separação do painel;
       flex para centralizar os dois botões na mesma altura/alinhamento,
       independente da diferença de conteúdo entre eles. "order" garante
       que o MENU fique sempre à esquerda e o INÍCIO à direita, não
       importa a ordem em que o BootsFaces gere os elementos no HTML. */
    .novo-nav .navbar-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        border-bottom: 1px solid rgba(255,255,255,.12);
    }

    .novo-nav .navbar-default .navbar-brand {
        order: 1;
    }

    .novo-nav .navbar-default .navbar-brand {
        padding-top: 13px;
        padding-bottom: 13px;
        border-radius: 6px;
    }

    /* acordeão de 1º nível (MUNICÍPIO, GOVERNO...) */
    .novo-nav .navbar-default .navbar-nav {
        background-color: #25588C;
        padding-bottom: 6px;
    }

    .novo-nav .navbar-default .navbar-nav > li {
        border-bottom: 1px solid rgba(255,255,255,.1);
    }

    .novo-nav .navbar-default .navbar-nav > li:last-child {
        border-bottom: none;
    }

    .novo-nav .navbar-default .navbar-nav > li > a {
        padding: 14px 20px;
    }

    .novo-nav .navbar-default .navbar-nav > .open > a,
    .novo-nav .navbar-default .navbar-nav > .open > a:hover,
    .novo-nav .navbar-default .navbar-nav > .open > a:focus {
        background-color: #1e4670;
    }

    .novo-nav .navbar-default .navbar-nav > li > a .caret {
        transition: transform .15s ease;
    }

    .novo-nav .navbar-default .navbar-nav > .open > a .caret {
        transform: rotate(180deg);
    }

    /* painel do submenu: fundo mais escuro para indicar aninhamento */
    .novo-nav .navbar-default .navbar-nav .dropdown-menu {
        box-shadow: none;
        border-radius: 0;
        background-color: #163d61;
        padding: 6px 0 10px;
    }

    .novo-nav .navbar-default .navbar-nav .dropdown-menu > li.dropdown-header {
        color: #9fc1e0;
        font-size: 10.5px;
        font-weight: 700;
        letter-spacing: .6px;
        padding: 14px 20px 6px 34px;
    }

    .novo-nav .navbar-default .navbar-nav .dropdown-menu > li > a {
        color: #eef4fa;
        font-weight: 500;
        padding: 10px 20px 10px 34px;
        border-left: 3px solid transparent;
    }

    .novo-nav .navbar-default .navbar-nav .dropdown-menu > li > a:hover,
    .novo-nav .navbar-default .navbar-nav .dropdown-menu > li > a:focus {
        background-color: rgba(255,255,255,.08);
        color: #ffffff;
        border-left-color: #2e8540;
    }
}

/* ---------- Carrossel de banners ---------- */
.novo-hero {
    padding: 24px 0 0;
}

.novo-hero-frame {
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 6px 18px rgba(0,0,0,.12);
}

.novo-hero-frame img {
    width: 100%;
    display: block;
}

.novo-hero-frame .carousel-control {
    width: 52px;
    height: 52px;
    top: 50%;
    margin-top: -26px;
    border-radius: 50%;
    background: rgba(255,255,255,.85) !important;
    color: #25588C;
    opacity: 1;
    text-shadow: none;
    display: flex;
    align-items: center;
    justify-content: center;
}

.novo-hero-frame .carousel-control.left {
    left: 18px;
}

.novo-hero-frame .carousel-control.right {
    right: 18px;
}

.novo-hero-frame .carousel-indicators li {
    background-color: #c7d0d8;
    border: none;
}

.novo-hero-frame .carousel-indicators .active {
    background-color: #25588C;
}

/* ---------- Acesso rápido ---------- */
.novo-section {
    padding: 34px 0;
}

.novo-section-title {
    display: flex;
    align-items: center;
    gap: 10px;
    color: #25588C;
    font-weight: 900;
    text-transform: uppercase;
    font-size: 17px;
    margin: 0 0 18px;
}

.novo-section-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 18px;
}

.novo-section-title-row .novo-section-title {
    margin: 0;
}

.novo-pill-btn {
    border: 1px solid #25588C;
    color: #25588C;
    background: #fff;
    border-radius: 20px;
    padding: 7px 18px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    cursor: pointer;
    white-space: nowrap;
}

.novo-pill-btn:hover {
    background: #25588C;
    color: #fff;
}

.novo-quickaccess {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 16px;
}

.novo-quick-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: #ffffff;
    border: 1px solid #e6e9ec;
    border-bottom: 4px solid var(--accent, #25588C);
    border-radius: 6px;
    padding: 22px 10px;
    text-align: center;
    box-shadow: 0 2px 6px rgba(0,0,0,.04);
    color: #26313c;
    transition: transform .15s ease, box-shadow .15s ease;
}

.novo-quick-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 16px rgba(0,0,0,.10);
    color: #25588C;
}

.novo-quickaccess .novo-quick-card:nth-child(6n+1) { --accent: #2f6fb0; }
.novo-quickaccess .novo-quick-card:nth-child(6n+2) { --accent: #2e8540; }
.novo-quickaccess .novo-quick-card:nth-child(6n+3) { --accent: #f2a900; }
.novo-quickaccess .novo-quick-card:nth-child(6n+4) { --accent: #7b4fa0; }
.novo-quickaccess .novo-quick-card:nth-child(6n+5) { --accent: #17a2b8; }
.novo-quickaccess .novo-quick-card:nth-child(6n+6) { --accent: #1b6e3c; }

.novo-quick-card i {
    font-size: 26px;
    color: var(--accent, #25588C);
}

.novo-quick-card span {
    font-size: 12.5px;
    font-weight: 800;
    text-transform: uppercase;
    line-height: 1.25;
}

/* ---------- Filtro de notícias (todas_noticias.xhtml) ---------- */
.novo-filterbar {
    background: #f4f6f8;
    border: 1px solid #e8ebee;
    border-radius: 10px;
    padding: 18px 22px 6px;
    margin-bottom: 26px;
}

.novo-filterbar .bootstrap-select .btn,
.novo-filterbar input.form-control {
    border-radius: 6px;
}

/* ---------- Notícias + Serviços ---------- */
.novo-news-grid {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 26px;
    align-items: start;
}

.novo-news-card {
    display: flex;
    gap: 18px;
    padding: 16px 0;
    border-bottom: 1px solid #eceff2;
}

.novo-news-card:first-child {
    padding-top: 0;
}

.novo-news-thumb {
    position: relative;
    flex: 0 0 220px;
}

.novo-news-thumb img {
    width: 220px;
    height: 150px;
    object-fit: cover;
    border-radius: 6px;
    display: block;
}

.novo-news-badge {
    position: absolute;
    top: 8px;
    left: 8px;
    background: #2e8540;
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    text-transform: uppercase;
    padding: 3px 9px;
    border-radius: 3px;
}

.novo-news-body {
    flex: 1;
}

.novo-news-body h3 {
    margin: 0 0 6px;
    font-size: 16px;
}

.novo-news-body h3 a {
    color: #25588C;
    font-weight: 800;
}

.novo-news-meta {
    color: #8a94a0;
    font-size: 12px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.novo-news-excerpt {
    color: #55606b;
    font-size: 12.5px;
    line-height: 1.5;
    margin-bottom: 8px;
    text-align: justify;
}

.novo-news-more {
    color: #25588C;
    font-weight: 800;
    font-size: 12.5px;
    text-transform: uppercase;
}

.novo-services-panel {
    background: #fff;
    border: 1px solid #e6e9ec;
    border-radius: 8px;
    padding: 20px;
}

.novo-services-panel h4 {
    color: #25588C;
    font-weight: 900;
    text-transform: uppercase;
    font-size: 15px;
    margin: 0 0 14px;
}

.novo-service-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 6px;
    border-bottom: 1px solid #f0f2f4;
    color: #33404b;
    font-weight: 700;
    font-size: 13px;
}

.novo-service-item:last-of-type {
    border-bottom: none;
}

.novo-service-item i:first-child {
    color: #25588C;
    width: 18px;
    text-align: center;
}

.novo-service-item .fa-chevron-right {
    margin-left: auto;
    font-size: 11px;
    color: #b7bec4;
}

.novo-service-item:hover {
    color: #25588C;
    background: #f7f9fa;
}

.novo-services-cta {
    display: block;
    text-align: center;
    background: #2e8540;
    color: #fff !important;
    font-weight: 800;
    text-transform: uppercase;
    font-size: 12.5px;
    padding: 11px;
    border-radius: 5px;
    margin-top: 16px;
}

.novo-services-cta:hover {
    background: #256b33;
    color: #fff !important;
}

/* ---------- Rodapé ---------- */
.novo-footer {
    background-color: #f4f6f8;
    color: #45525e;
    border-top: 1px solid #dde3e8;
    padding-top: 34px;
}

.novo-footer .novo-container {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
    gap: 24px;
    padding-bottom: 26px;
}

.novo-footer-brand img {
    max-height: 130px;
    margin-bottom: 12px;
}

.novo-footer-brand p {
    font-size: 12.5px;
    line-height: 1.5;
    color: #6b7784;
}

/* linhas divisórias finas entre as colunas, como na referência */
.novo-footer-col {
    border-left: 1px solid #dde3e8;
    padding-left: 22px;
}

.novo-footer h5 {
    color: #173F63;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    margin: 0 0 14px;
}

.novo-footer ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.novo-footer ul li {
    margin-bottom: 9px;
}

.novo-footer ul li a {
    color: #3b6ea5;
    font-size: 13px;
}

.novo-footer ul li a:hover {
    color: #173F63;
    text-decoration: underline;
}

.novo-footer-contact li {
    display: flex;
    gap: 8px;
    align-items: flex-start;
    font-size: 11.5px;
    color: #45525e;
}

.novo-footer-contact li i {
    color: #25588C;
    margin-top: 2px;
}

.novo-footer-contact li i.fa-map-marker {
    color: #2e8540;
}

.novo-footer-social {
    display: flex;
    gap: 12px;
    margin-top: 14px;
}

.novo-footer-social a {
    color: #ffffff;
    background: #25588C;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.novo-footer-social a:hover {
    background: #173F63;
}

.novo-footer-bottom {
    background-color: #2f6ea9;
    padding: 14px 0;
    font-size: 12px;
    color: #e4edf5;
}

.novo-footer-bottom .novo-container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    padding-bottom: 0;
}

.novo-footer-bottom-text {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
}

.novo-footer-bottom-text a {
    color: #e4edf5;
    margin-left: 18px;
}

.novo-footer-credito-row {
    justify-content: center;
    margin-top: 10px;
}

.novo-footer-credito {
    display: block;
    padding-top: 10px;
    border-top: 1px solid rgba(255,255,255,.12);
    color: #b9cee3;
    font-size: 10.5px;
    text-align: center;
}

.novo-footer-bottom-text a:hover {
    color: #fff;
}

.novo-footer-totop {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: rgba(255,255,255,.16);
    color: #ffffff !important;
    flex: 0 0 auto;
}

.novo-footer-totop:hover {
    background: rgba(255,255,255,.3);
}

/* ---------- Modo de alto contraste ----------
   O JS de acessibilidade (em layout_footer.xhtml, compartilhado por todo
   o site) só alterna a classe ".contrast" no <body>. As regras do modo
   alto-contraste já existiam em style.css para os elementos antigos do
   CMS; estas aqui cobrem os elementos do novo cabeçalho/menu/rodapé,
   que usam classes próprias (.novo-*) não previstas em style.css. */
.contrast,
.contrast nav,
.contrast div,
.contrast li,
.contrast ol,
.contrast ul,
.contrast header,
.contrast footer,
.contrast section,
.contrast main,
.contrast aside,
.contrast article {
    background: black !important;
    background-image: none !important;
    box-shadow: none !important;
    color: white !important;
}

/* O menu força uma cor chapada (#25588C) em vários elementos internos
   do BootsFaces (.navbar, .navbar-default, .container, .navbar-collapse)
   com regras de 2 classes de especificidade — mais específicas que as
   genéricas acima, então "vazavam" azul no canto do menu com contraste
   ligado. Precisamos repetir o mesmo alvo aqui para vencer o empate. */
.contrast .novo-nav,
.contrast .novo-nav .navbar,
.contrast .novo-nav .navbar-default,
.contrast .novo-nav .container,
.contrast .novo-nav .navbar-header,
.contrast .novo-nav .navbar-collapse {
    background-color: black !important;
    background-image: none !important;
}

.contrast h1,
.contrast h2,
.contrast h3,
.contrast h4,
.contrast h5,
.contrast h6,
.contrast p,
.contrast label,
.contrast strong,
.contrast em,
.contrast cite,
.contrast q,
.contrast i,
.contrast b,
.contrast u,
.contrast span {
    color: white !important;
    background: black !important;
}

.contrast a {
    color: yellow !important;
    background: black !important;
    text-decoration: underline !important;
}

.contrast .btn,
.contrast button,
.contrast select,
.contrast input[type=button],
.contrast input[type=reset],
.contrast input[type=submit] {
    background: black !important;
    color: yellow !important;
    border-color: white !important;
}

.contrast input[type=text],
.contrast input[type=search],
.contrast textarea {
    background: black !important;
    border: 1px solid white !important;
    color: white !important;
}

.contrast tr,
.contrast th,
.contrast td {
    color: white !important;
    background: black !important;
}

/* elementos que dependem de imagem/gradiente de fundo para fazer
   sentido continuam com a própria imagem, só ganham uma borda amarela
   para não sumir contra o preto */
.contrast .novo-hero-frame,
.contrast .novo-news-thumb img,
.contrast .novo-footer-brand img,
.contrast .novo-logo img {
    border: 2px solid yellow !important;
}

/* ---------- Aviso de cookies (LGPD) ---------- */
.novo-page .cookie-message {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background-color: #25588C;
    font-weight: bold;
    padding: 16px 20px;
    text-align: center;
    color: #ffffff;
    z-index: 9999;
    font-size: 13px;
}

/* ---------- Responsivo ---------- */
@media (max-width: 992px) {
    .novo-quickaccess {
        grid-template-columns: repeat(3, 1fr);
    }
    .novo-news-grid {
        grid-template-columns: 1fr;
    }
    .novo-footer .novo-container {
        grid-template-columns: 1fr 1fr;
    }

    .novo-topbar-welcome {
        display: none;
    }
}

@media (max-width: 600px) {
    .novo-quickaccess {
        grid-template-columns: repeat(2, 1fr);
    }
    .novo-news-card {
        flex-direction: column;
    }
    .novo-news-thumb {
        width: 100%;
        flex-basis: auto;
    }
    .novo-news-thumb img {
        width: 100%;
        height: auto;
        aspect-ratio: 16 / 10;
    }
    .novo-footer .novo-container {
        grid-template-columns: 1fr;
    }
}
