/*core globals css*/
.site-content {
    width: 100%;
}
.core-container {
    max-width: var(--core-container-max);
    margin: auto;
}
.core-topo-picture {
    margin-bottom: 30px;
}
/*core globals css - fim*/

/* ========================================
   Card Hover Effects - Reutilizáveis
   ======================================== */

/* 
 * Classes de hover para cards de conteúdo
 * Podem ser aplicadas a qualquer card/link de conteúdo
 * Configurável via ACF Options (acf-options-adsi-core)
 */

/* Hover Style 1: Subtle Opacity */
.card-hover-opacity {
    transition: opacity 0.3s ease;
}

.card-hover-opacity:hover {
    opacity: 0.85;
}

.card-hover-opacity:focus {
    outline: 2px solid #2271b1;
    outline-offset: 2px;
}

/* Hover Style 2: Shadow Lift */
.card-hover-shadow {
    transition: box-shadow 0.3s ease;
}

.card-hover-shadow:hover {
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
}

.card-hover-shadow:focus {
    outline: 2px solid #2271b1;
    outline-offset: 2px;
}

/* Hover Style 3: Scale & Shadow */
.card-hover-scale {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.card-hover-scale:hover {
    transform: scale(1.02);
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.12);
}

.card-hover-scale:focus {
    outline: 2px solid #2271b1;
    outline-offset: 2px;
}

/* Image zoom effect (apenas para shadow e scale) */
.card-hover-shadow:hover img,
.card-hover-scale:hover img {
    transform: scale(1.05);
}

.card-hover-shadow img,
.card-hover-scale img {
    transition: transform 0.4s ease;
}

/* Hover Style 4: Filter Grayscale */
.card-hover-filter {
    transition: opacity 0.3s ease;
}

.card-hover-filter img {
    transition: filter 0.4s ease;
    filter: grayscale(0%);
}

.card-hover-filter:hover img {
    filter: grayscale(100%);
}

.card-hover-filter:focus {
    outline: 2px solid #2271b1;
    outline-offset: 2px;
}

/* ========================================
   Card Hover Effects - Fim
   ======================================== */

/* ========================================
   CoreCards - Global Card Layouts
   Link só no título (-card__title-link, CoreCards::title_link()); o resto
   do card é clicável via assets/js/core-cards.js. .{prefix}-card__link é
   agora um <div> — mantido como contentor de layout.
   ======================================== */

/* ---- Base ---- */
.core-card {
    overflow: hidden;
    border-radius: var(--core-radius, 0.5rem);
    background: #fff;
    height: 100%;
    padding: var(--card-padding, 0px);
}
.core-card [class*="-card__link"] {
    display: flex;
    flex-direction: column;
    height: 100%;
    color: inherit;
    text-decoration: none;
}
.core-card [class*="-card__title-link"] {
    color: inherit;
    text-decoration: none;
}
/* Sublinhado do título por bloco/shortcode (CoreCards::title_underline_wrap()):
   ganha ao "Cards por Tipo" (CoreCardsTypes::css(), até 0,4,0 com :hover) — por
   isso a classe e .core-card dobradas (0,5,0; 0,6,0 nos estados). !important nos
   valores explícitos (aqui e no tipo de card): temas que sublinham todos os links
   com !important (cm-sabugal: a{text-decoration:underline!important}) ganhavam a
   qualquer opção. "Herdar" não imprime nada — fica o que o site faz. */
.core-cards-sublinhado--always.core-cards-sublinhado--always .core-card.core-card [class*="-card__title-link"] {
    text-decoration: underline !important;
}
.core-cards-sublinhado--none.core-cards-sublinhado--none .core-card.core-card [class*="-card__title-link"],
.core-cards-sublinhado--hover.core-cards-sublinhado--hover .core-card.core-card [class*="-card__title-link"] {
    text-decoration: none !important;
}
.core-cards-sublinhado--none.core-cards-sublinhado--none .core-card.core-card:is(:hover, :focus-within) [class*="-card__title-link"] {
    text-decoration: none !important;
}
.core-cards-sublinhado--hover.core-cards-sublinhado--hover .core-card.core-card:is(:hover, :focus-within) [class*="-card__title-link"] {
    text-decoration: underline !important;
}
/* Foco: no card inteiro (é o card que é clicável); sem :has(), no título. */
.core-card [class*="-card__title-link"]:focus-visible {
    outline: 2px solid #2271b1;
    outline-offset: 2px;
}
@supports selector(:has(*)) {
    .core-card [class*="-card__title-link"]:focus-visible {
        outline: none;
    }
    .core-card:has([class*="-card__title-link"]:focus-visible) {
        outline: 2px solid #2271b1;
        outline-offset: -2px; /* dentro: os carrosséis cortam o que sai do card */
    }
}
/* Card clicável (assets/js/core-cards.js) — só com JS. */
.core-cards-js .core-card:has([class*="-card__title-link"]) {
    cursor: pointer;
}
.core-card img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ---- Layout A: Material (imagem topo, conteúdo baixo) ---- */
[class*="-card--layout-a"] [class*="-card__media"] {
    position: relative;
    overflow: hidden;
}
/* --core-card-overlay-inset: distância dos elementos sobre a imagem
   (mini calendário, pills) às margens da imagem — Cards por Tipo, módulo
   (CoreCardsTypes overlay_inset) ou bloco (CoreCards::body_padding_style).
   Sem valor: 0.75rem (A e pills) / 20px (caixa de data do G), como sempre. */
[class*="-card--layout-a"] [class*="-card__image-overlay"] {
    position: absolute;
    top: var(--core-card-overlay-inset, 0.75rem);
    left: var(--core-card-overlay-inset, 0.75rem);
    z-index: 10;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.5rem 0.65rem;
    /* Cor por site: --core-card-overlay-bg (ex: adsi-core-variables.css). */
    background: var(--core-card-overlay-bg, rgba(0, 0, 0, 0.75));
    border-radius: var(--core-radius-sm, 0.375rem);
    backdrop-filter: blur(4px);
}
[class*="-card--layout-a"] [class*="-card__badges-overlay"],
[class*="-card--layout-g"] [class*="-card__badges-overlay"] {
    position: absolute;
    top: var(--core-card-overlay-inset, 0.75rem);
    right: var(--core-card-overlay-inset, 0.75rem);
    z-index: 11;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.35rem;
    /* Sem limite, um texto longo crescia para a esquerda até ser cortado
       pela imagem; 65% deixa livre o calendário do canto esquerdo. */
    max-width: 65%;
}
/* Posição da sobreposição da imagem no A (CoreCards overlay_position:
   Cards por Tipo, módulo ou bloco). Sem modificador fica no canto superior
   esquerdo, como sempre. O modificador é a última classe do elemento. */
[class*="-card--layout-a"] [class*="-card__image-overlay--"] {
    transform: translate(var(--core-ov-tx, 0), var(--core-ov-ty, 0));
}
[class*="-card--layout-a"] [class*="-card__image-overlay--center-"] {
    top: 50%;
    --core-ov-ty: -50%;
}
[class*="-card--layout-a"] [class*="-card__image-overlay--bottom-"] {
    top: auto;
    bottom: var(--core-card-overlay-inset, 0.75rem);
}
[class*="-card--layout-a"] [class*="-card__image-overlay--"][class$="-center"] {
    left: 50%;
    --core-ov-tx: -50%;
}
[class*="-card--layout-a"] [class*="-card__image-overlay--"][class$="-right"] {
    left: auto;
    right: var(--core-card-overlay-inset, 0.75rem);
}
/* Canto das pills sobre a imagem (CoreCards badges_corner; Cards por Tipo,
   módulo ou bloco). O de sempre é o superior direito. Mesma especificidade
   da regra acima (0,2,0) e vem depois. */
[class*="-card--layout-a"] [class*="-card__badges-overlay--top-left"],
[class*="-card--layout-g"] [class*="-card__badges-overlay--top-left"] {
    right: auto;
    left: var(--core-card-overlay-inset, 0.75rem);
    align-items: flex-start;
}
[class*="-card--layout-a"] [class*="-card__badges-overlay--bottom-right"],
[class*="-card--layout-g"] [class*="-card__badges-overlay--bottom-right"] {
    top: auto;
    bottom: var(--core-card-overlay-inset, 0.75rem);
}
[class*="-card--layout-a"] [class*="-card__badges-overlay--bottom-left"],
[class*="-card--layout-g"] [class*="-card__badges-overlay--bottom-left"] {
    top: auto;
    right: auto;
    bottom: var(--core-card-overlay-inset, 0.75rem);
    left: var(--core-card-overlay-inset, 0.75rem);
    align-items: flex-start;
}
/* G: o texto sobe 40px sobre a imagem (margin-top:-40px) — os cantos de
   baixo ficam acima dessa faixa. */
[class*="-card--layout-g"] :is([class*="-card__badges-overlay--bottom-right"], [class*="-card__badges-overlay--bottom-left"]) {
    bottom: calc(40px + var(--core-card-overlay-inset, 0.75rem));
}
/* Pills antes do título: espaço por baixo em vez de por cima. */
.core-card.core-card [class*="-card__taxonomies--before"] {
    margin-top: 0;
    margin-bottom: 0.5rem;
}
[class*="-card--layout-a"] [class*="-card__overlay-item"] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: max(var(--core-font-min, 0px), 0.8em);
    line-height: 1.3;
    color: #fff;
}
[class*="-card--layout-a"] .rota-overlay-badge {
    display: inline-block;
    padding: 0.2em 0.5em;
    font-size: max(var(--core-font-min, 0px), 0.75em);
    font-weight: 600;
    border-radius: var(--core-radius-sm, 3px);
    background: rgba(255, 255, 255, 0.25);
    color: #fff;
    text-transform: uppercase;
    letter-spacing: 0.025em;
}
[class*="-card--layout-a"] .rota-overlay-icon {
    display: inline-flex;
    align-items: center;
    width: 1em;
    height: 1em;
    opacity: 0.9;
}
[class*="-card--layout-a"] .rota-overlay-icon::before {
    content: '•';
    font-size: 1.2em;
}
[class*="-card--layout-a"] .rota-overlay-icon--distance::before {
    content: '↔';
}
[class*="-card--layout-a"] .rota-overlay-icon--type::before {
    content: '⚐';
}
[class*="-card--layout-a"] .rota-overlay-value {
    font-weight: 500;
}
[class*="-card--layout-a"] [class*="-card__body"] {
    padding: 1rem 1.25rem;
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* ---- Layout B: Horizontal (imagem esquerda, conteúdo direita) ----
   Largura da imagem: var(--card-b-media-width, 40%)
   Override exemplo: .meu-card [class*="-card__inner"] { --card-b-media-width: 120px; }
*/
[class*="-card--layout-b"] [class*="-card__link"] {
    flex-direction: row;
}
[class*="-card--layout-b"] [class*="-card__inner"] {
    display: grid;
    grid-template-columns: var(--card-b-media-width, 40%) 1fr;
    align-items: stretch;
    width: 100%;
}
[class*="-card--layout-b"] [class*="-card__media"] {
    overflow: hidden;
    flex-shrink: 0;
}
[class*="-card--layout-b"] [class*="-card__media"] img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
[class*="-card--layout-b"] [class*="-card__body"] {
    padding: 1rem 1.25rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
/* Sem imagem (nem de recurso) o corpo é o único filho e caía na 1.ª coluna,
   a da imagem — na pesquisa 120px, o texto ficava numa coluna estreita. */
[class*="-card--layout-b"] [class*="-card__inner"] > [class*="-card__body"]:only-child {
    grid-column: 1 / -1;
}

/* ---- Layout C: Compacto (sem imagem) ---- */
[class*="-card--layout-c"] [class*="-card__body"] {
    padding: 1rem 1.25rem;
}

/* ---- Layout D: Overlay (imagem fundo + texto sobreposto) ---- */
[class*="-card--layout-d"] {
    background: transparent;
}
[class*="-card--layout-d"] [class*="-card__link"] {
    color: #fff;
}
[class*="-card--layout-d"] [class*="-card__inner"] {
    position: relative;
    overflow: hidden;
    border-radius: var(--core-radius, 0.5rem);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    background-color: #333;
    display: flex;
    align-items: flex-end;
    min-height: 280px;
}
[class*="-card--layout-d"] [class*="-card__overlay"] {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.1) 60%, transparent 100%);
    z-index: 1;
    transition: background 0.3s ease;
}
[class*="-card--layout-d"]:hover [class*="-card__overlay"] {
    background: linear-gradient(to top, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.2) 60%, transparent 100%);
}
[class*="-card--layout-d"] [class*="-card__content"] {
    position: relative;
    z-index: 2;
    padding: 1.25rem;
    width: 100%;
    height: 100%;
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}
[class*="-card--layout-d"] [class*="-card__title"] {
    color: #fff;
}
[class*="-card--layout-d"] [class*="-card__date"] {
    color: rgba(255,255,255,0.9);
}
[class*="-card--layout-d"] [class*="-card__taxonomy-badge"] {
    background: rgba(255,255,255,0.2);
    color: #fff;
}
[class*="-card--layout-d"] [class*="-card__custom-meta"] {
    color: rgba(255,255,255,0.9);
}

/* ---- Layout E: Inline (linha horizontal para listas) ---- */
[class*="-card--layout-e"] {
    background: var(--core-docs-recent-card-bg);
    border: var(--core-border-width, 1px) solid var(--core-docs-recent-card-border);
    border-radius: var(--core-docs-recent-card-radius);
    padding: 0;
    overflow: hidden;
}

/* Spacing between inline cards in list context */
.doc-recent__list [class*="-card--layout-e"] {
    flex: 1;
}

[class*="-card--layout-e"] [class*="-card__link"] {
    display: flex;
    justify-content: center;
    height: 100%;
    padding: var(--core-docs-recent-card-padding);
}

[class*="-card--layout-e"] [class*="-card__inline-content"] {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 1rem;
    align-items: center;
}

[class*="-card--layout-e"] [class*="-card__text-content"] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 0;
}

[class*="-card--layout-e"] [class*="-card__meta-row"] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

[class*="-card--layout-e"] [class*="-card__date"] {
    font-size: var(--core-docs-date-size);
    color: var(--core-docs-date-color);
    font-weight: var(--core-docs-date-weight);
    margin: 0;
}

[class*="-card--layout-e"] [class*="-card__taxonomy"] {
    font-size: var(--core-docs-date-size);
    color: var(--core-docs-date-color);
    font-weight: var(--core-docs-date-weight);
    margin: 0;
    padding-left: 0.5rem;
    position: relative;
}

[class*="-card--layout-e"] [class*="-card__taxonomy"]::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    height: 0.75em;
    width: 1px;
    background: var(--core-docs-date-color, #999);
}

/* Tamanho: Cards por Tipo (--core-docs-title-size) ou, sem ele, a escala de headings
   do nível do título (o <h3> de um card E tem o tamanho de H3 em Apresentação → Tipografia). */
[class*="-card--layout-e"] h2[class*="-card__title"] { --core-docs-heading-size: var(--core-h2-size); }
[class*="-card--layout-e"] h3[class*="-card__title"] { --core-docs-heading-size: var(--core-h3-size); }
[class*="-card--layout-e"] h4[class*="-card__title"] { --core-docs-heading-size: var(--core-h4-size); }
[class*="-card--layout-e"] h5[class*="-card__title"] { --core-docs-heading-size: var(--core-h5-size); }
[class*="-card--layout-e"] h6[class*="-card__title"] { --core-docs-heading-size: var(--core-h6-size); }
[class*="-card--layout-e"] [class*="-card__title"] {
    font-size: var(--core-docs-title-size, var(--core-docs-heading-size, var(--core-font-size-base, 1rem)));
    font-weight: var(--core-docs-title-weight);
    margin: 0;
    color: var(--core-docs-title-color) !important;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box !important;
    -webkit-line-clamp: var(--core-docs-title-line-clamp, 2);
    line-clamp: var(--core-docs-title-line-clamp, 2);
    -webkit-box-orient: vertical;
    line-height: 1.4;
}

[class*="-card--layout-e"] [class*="-card__link"]:hover [class*="-card__title"],
[class*="-card--layout-e"] [class*="-card__link"]:focus-within [class*="-card__title"] {
    color: var(--core-docs-title-color-hover);
}

[class*="-card--layout-e"] [class*="-card__icon"] {
    font-size: var(--core-docs-icon-size);
    color: var(--core-docs-icon-color);
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--core-docs-icon-bg-size);
    height: var(--core-docs-icon-bg-size);
    flex-shrink: 0;
}

/* Responsive - Mobile */
@media (max-width: 600px) {
    [class*="-card--layout-e"] [class*="-card__inline-content"] {
        gap: 0.75rem;
    }
    
    [class*="-card--layout-e"] [class*="-card__date"] {
        font-size: max(var(--core-font-min, 0px), 0.75rem);
    }
    
    [class*="-card--layout-e"] [class*="-card__title"] {
        font-size: max(var(--core-font-min, 0px), 0.9375rem);
    }
    
    [class*="-card--layout-e"] [class*="-card__icon"] {
        font-size: 1.125rem;
        width: 28px;
        height: 28px;
    }
}

/* ---- Layout F: Button (sem imagem, texto centrado, aspeto de botão) ---- */
/* Cores e hover animation controladas via CoreButtons (--core-color-primary/secondary + button_hover_style ACF) */
[class*="-card--layout-f"] {
    background: var(--core-card-btn-bg);
    color: var(--core-card-btn-color);
    border: var(--core-card-btn-border-width) var(--core-card-btn-border-style) var(--core-card-btn-border-color);
    border-radius: var(--core-card-btn-radius);
    transition: background 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
}
[class*="-card--layout-f"]:hover,
[class*="-card--layout-f"]:focus-within {
    background: var(--core-card-btn-bg-hover);
    color: var(--core-card-btn-color-hover);
    border-color: var(--core-card-btn-border-color-hover);
}
[class*="-card--layout-f"] [class*="-card__link"] {
    justify-content: center;
    align-items: center;
    min-height: 3.5rem;
    color: inherit;
}
[class*="-card--layout-f"] [class*="-card__link"]:hover,
[class*="-card--layout-f"] [class*="-card__link"]:focus-within {
    color: inherit;
}
[class*="-card--layout-f"] [class*="-card__body"] {
    padding: var(--core-card-btn-padding);
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
}
[class*="-card--layout-f"] [class*="-card__title"] {
    font-size: max(var(--core-font-min, 0px), 0.95rem);
    font-weight: 600;
    margin: 0;
    line-height: 1.3;
    color: inherit;
}
[class*="-card--layout-f"] [class*="-card__excerpt"] {
    font-size: max(var(--core-font-min, 0px), 0.8rem);
    opacity: 0.85;
    margin: 0;
    color: inherit;
}
[class*="-card--layout-f"] [class*="-card__taxonomies"] {
    font-size: max(var(--core-font-min, 0px), 0.75rem);
    opacity: 0.85;
    color: inherit;
}

/* ---- Layout G: Event (imagem centrada, date box flutuante, card sobreposto) ---- */
/* Inspirado no layout B original dos eventos com animações de hover sofisticadas */
[class*="-card--layout-g"] {
    position: relative;
    display: flex;
    flex-direction: column;
    padding-top: 20px;
    height: 100%;
}

[class*="-card--layout-g"] [class*="-card__link"] {
    display: flex;
    flex-direction: column;
    flex: 1;
    height: 100%;
    text-decoration: none;
}

/* Media wrapper: contém imagem e date box */
[class*="-card--layout-g"] [class*="-card__media-wrapper"] {
    position: relative;
    width: 90%;
    margin: 0 auto;
    z-index: 2;
}

/* Imagem com bordas arredondadas */
[class*="-card--layout-g"] [class*="-card__media"] {
    overflow: hidden;
    border-radius: var(--core-card-radius, 20px);
}
[class*="-card--layout-g"] [class*="-card__media"] img {
    width: 100%;
    min-width: 100%;
    min-height: 100%;
    object-fit: cover;
    transform: scale(1);
    transition: transform 0.5s ease;
}
[class*="-card--layout-g"]:hover [class*="-card__media"] img {
    transform: scale(1.05);
}

/* Moldura animada na imagem */
[class*="-card--layout-g"] [class*="-card__media--framed"] {
    position: relative;
}
[class*="-card--layout-g"] [class*="-card__media--framed"]::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 7px solid var(--core-color-primary, #63ab43);
    border-radius: var(--core-card-radius, 20px);
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}
[class*="-card--layout-g"]:hover [class*="-card__media--framed"]::after {
    opacity: 1;
}

/* Date box flutuante — base */
[class*="-card--layout-g"] [class*="-card__datebox"] {
    position: absolute;
    width: fit-content;
    min-width: 145px;
    padding: 10px 20px;
    background: var(--core-color-primary, #63ab43);
    color: var(--core-color-primary-contrast, #fff);
    border-radius: var(--core-radius-sm, 8px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 999;
    font-weight: 500;
    font-size: 16px;
    gap: 10px;
}

/* Alinhamento vertical */
[class*="-card--layout-g"] [class*="-card__datebox"].datebox--v-top {
    top: var(--core-card-overlay-inset, 20px);
    bottom: auto;
}
[class*="-card--layout-g"] [class*="-card__datebox"].datebox--v-center {
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
}
[class*="-card--layout-g"] [class*="-card__datebox"].datebox--v-bottom {
    bottom: var(--core-card-overlay-inset, 20px);
    top: auto;
}

/* Alinhamento horizontal */
[class*="-card--layout-g"] [class*="-card__datebox"].datebox--h-left {
    left: var(--core-card-overlay-inset, 20px);
    right: auto;
    margin: 0;
}
[class*="-card--layout-g"] [class*="-card__datebox"].datebox--h-center {
    left: 0;
    right: 0;
    margin: 0 auto;
}
[class*="-card--layout-g"] [class*="-card__datebox"].datebox--h-right {
    right: var(--core-card-overlay-inset, 20px);
    left: auto;
    margin: 0;
}
[class*="-card--layout-g"] [class*="-card__datebox"] time {
    display: flex;
    align-items: center;
    gap: 10px;
    color: inherit;
}
[class*="-card--layout-g"] [class*="-card__datebox"] i {
    font-size: 17px;
}

/* Card body sobreposto */
[class*="-card--layout-g"] [class*="-card__body--overlapped"] {
    position: relative;
    flex: 1;
    background: var(--core-color-white, #fff);
    border-radius: var(--core-radius, 15px);
    padding: 60px 20px 40px;
    margin-top: -40px;
    z-index: 1;
    text-align: center;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
}

/* Overlay de hover escuro no body */
[class*="-card--layout-g"] [class*="-card__body--overlapped"]::before {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--core-color-black, #212226);
    border-radius: inherit;
    opacity: 0;
    z-index: 0;
    transition: opacity 0.3s ease;
}
[class*="-card--layout-g"]:hover [class*="-card__body--overlapped"]::before {
    opacity: 1;
}

/* Conteúdo acima do overlay */
[class*="-card--layout-g"] [class*="-card__body--overlapped"] > * {
    position: relative;
    z-index: 1;
}

/* Título */
[class*="-card--layout-g"] [class*="-card__title"] {
    font-size: 24px;
    line-height: 30px;
    font-weight: 600;
    margin-bottom: 15px;
    color: var(--core-color-black, #212226);
    transition: color 0.2s linear;
}
[class*="-card--layout-g"]:hover [class*="-card__title"] {
    color: var(--core-color-white, #fff);
}

/* Meta list */
[class*="-card--layout-g"] [class*="-card__meta-list"] {
    list-style: none;
    margin: 18px 0 0;
    padding: 0;
    display: grid;
    gap: 6px;
}
[class*="-card--layout-g"] [class*="-card__meta-item"] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-size: 16px;
    line-height: 21px;
    font-weight: 500;
    color: var(--core-color-black, #212226);
    transition: color 0.2s linear;
}
[class*="-card--layout-g"] [class*="-card__meta-item"] i {
    font-size: 18px;
    color: var(--core-color-primary, #63ab43);
}
[class*="-card--layout-g"]:hover [class*="-card__meta-item"] {
    color: var(--core-color-white, #fff);
}

/* Botão de ação */
[class*="-card--layout-g"] [class*="-card__actions"] {
    margin-top: 27px;
    line-height: 0;
    text-align: center;
}
[class*="-card--layout-g"] [class*="-card__btn"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 20px 30px;
    border: 1px solid #E5E5E5;
    border-radius: var(--core-btn-radius, 8px);
    background: transparent;
    color: var(--core-color-black, #212226);
    font-size: 16px;
    font-weight: 600;
    text-decoration: none;
    transition: all 0.2s linear;
}
[class*="-card--layout-g"]:hover [class*="-card__btn"] {
    border-color: var(--core-color-primary, #63ab43);
    background: var(--core-color-primary, #63ab43);
    color: var(--core-color-primary-contrast, #fff);
}

/* Taxonomias */
[class*="-card--layout-g"] [class*="-card__taxonomies"] {
    margin-top: 12px;
}
[class*="-card--layout-g"] [class*="-card__taxonomy-badge"] {
    background: transparent;
    color: var(--core-color-black, #212226);
    border: 1px solid #E5E5E5;
    transition: color 0.2s linear, border-color 0.2s linear;
}
[class*="-card--layout-g"]:hover [class*="-card__taxonomy-badge"] {
    color: var(--core-color-white, #fff);
    border-color: rgba(255, 255, 255, 0.3);
}

/* ── Badges overlay (top-right sobre a imagem) ──────────────────────────────
   Especificidade maior (3 atributos) garante override sobre qualquer layout.
   Dark pill + backdrop-blur assegura contraste ≥ 7:1 sobre qualquer imagem. */
[class*="-card--layout-a"] [class*="-card__badges-overlay"] [class*="-card__taxonomy-badge"],
[class*="-card--layout-g"] [class*="-card__badges-overlay"] [class*="-card__taxonomy-badge"] {
    background: rgba(0, 0, 0, 0.72);
    color: #fff;
    border: none;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}
/* Estado e local do evento: cor primária (sólida) em vez do pill escuro */
[class*="-card--layout-a"] [class*="-card__badges-overlay"] :is(.event-status, .event-location),
[class*="-card--layout-g"] [class*="-card__badges-overlay"] :is(.event-status, .event-location) {
    background: var(--core-color-primary, #63ab43);
    color: var(--core-color-primary-contrast, #fff);
    border: none;
}
/* Os três badges com a mesma forma da pill de estado/local (eventos.css):
   16px, peso normal — o da taxonomia herdava 0.72rem/600 da regra base.
   Texto longo parte em linhas, alinhado à direita, em vez de sair do card. */
[class*="-card--layout-a"] [class*="-card__badges-overlay"] :is([class*="-card__taxonomy-badge"], .event-status, .event-location),
[class*="-card--layout-g"] [class*="-card__badges-overlay"] :is([class*="-card__taxonomy-badge"], .event-status, .event-location) {
    max-width: 100%;
    padding: 0.25em 0.65em;
    border-radius: 1em;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.4;
    white-space: normal;
    overflow-wrap: anywhere;
    text-align: right;
}

/* Responsivo */
@media (max-width: 480px) {
    [class*="-card--layout-g"] [class*="-card__body--overlapped"] {
        padding: 50px 16px 32px;
        margin-top: -35px;
    }
    [class*="-card--layout-g"] [class*="-card__title"] {
        font-size: 20px;
        line-height: 26px;
    }
    [class*="-card--layout-g"] [class*="-card__datebox"] {
        min-width: 135px;
        padding: 8px 16px;
        font-size: max(var(--core-font-min, 0px), 14px);
    }
    [class*="-card--layout-g"] [class*="-card__btn"] {
        padding: 16px 24px;
        font-size: max(var(--core-font-min, 0px), 14px);
    }
}

/* ---- Layout H: Alternating (Ziguezague editorial) ---- */
/* Cada card ocupa 100% da largura. Imagem e corpo alternam lado a lado.
   Usar dentro de um container sem grid de colunas (core-cols-1 ou sem classe). */
[class*="-card--layout-h"] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: stretch;
    gap: 0;
    background: transparent;
    box-shadow: none;
    border-radius: 0;
    overflow: visible;
    width: 100%;
    margin-bottom: 0;
}

/* Ordem padrão: imagem esquerda, corpo direita */
[class*="-card--layout-h"] [class*="-card__media"] {
    order: 1;
    overflow: hidden;
    min-height: 300px;
    height: 100%;
}

[class*="-card--layout-h"] [class*="-card__media"] img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.4s ease;
}

[class*="-card--layout-h"]:hover [class*="-card__media"] img {
    transform: scale(1.03);
}

[class*="-card--layout-h"] [class*="-card__body"] {
    order: 2;
    padding: 2.5rem 3rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.75rem;
}

/* Itens pares: inverter — corpo esquerda, imagem direita */
[class*="-card--layout-h"]:nth-child(even) [class*="-card__media"] {
    order: 2;
}

[class*="-card--layout-h"]:nth-child(even) [class*="-card__body"] {
    order: 1;
}

/* Índice numérico */
[class*="-card--layout-h"] [class*="-card__index"] {
    display: block;
    font-size: max(var(--core-font-min, 0px), 0.8rem);
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--core-color-primary, #63ab43);
    margin-bottom: 0.25rem;
}

/* Título */
[class*="-card--layout-h"] [class*="-card__title"] {
    margin: 0;
    font-size: clamp(1.25rem, 2vw, 1.75rem);
    font-weight: 700;
    line-height: 1.25;
    transition: color 0.2s ease;
}

[class*="-card--layout-h"] [class*="-card__title"] a {
    color: inherit;
    text-decoration: none;
}

[class*="-card--layout-h"]:hover [class*="-card__title"] a {
    color: var(--core-color-primary, #63ab43);
}

/* Excerpt */
[class*="-card--layout-h"] [class*="-card__excerpt"] {
    color: #555;
    line-height: 1.6;
    margin: 0;
}

/* Link "Ler mais" */
[class*="-card--layout-h"] [class*="-card__read-more"] {
    display: inline-flex;
    align-items: center;
    gap: 0.35em;
    font-size: max(var(--core-font-min, 0px), 0.85rem);
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--core-color-primary, #63ab43);
    transition: gap 0.2s ease, color 0.2s ease;
    margin-top: 0.5rem;
}

[class*="-card--layout-h"]:hover [class*="-card__read-more"] {
    gap: 0.6em;
}

/* Responsivo: empilhar abaixo de 768px */
@media (max-width: 768px) {
    [class*="-card--layout-h"] {
        grid-template-columns: 1fr;
    }

    [class*="-card--layout-h"] [class*="-card__media"],
    [class*="-card--layout-h"]:nth-child(even) [class*="-card__media"] {
        order: 1;
    }

    [class*="-card--layout-h"] [class*="-card__body"],
    [class*="-card--layout-h"]:nth-child(even) [class*="-card__body"] {
        order: 2;
        padding: 1.5rem 1.25rem;
    }
}

/* ---- Layout I: Agenda (badge de data inline, linha horizontal compacta) ----
   Sem imagem. Pensado para listas verticais (cols-1) tipo "Agenda"/"Próximos eventos".
   Valores de padding/gap/tipografia alinhados com .evento-magazine-item (eventos.css)
   para consistência visual entre os dois padrões existentes de "linha com badge de data". */
[class*="-card--layout-i"] {
    background: var(--core-card-bg, #fff);
    border: var(--core-border-width, 1px) solid var(--core-card-border, #ccc);
    border-radius: var(--core-card-radius, 0.5rem);
    padding: 0;
    overflow: hidden;
    height: 100%;
    transition: border-color 0.2s ease;
}
[class*="-card--layout-i"]:hover,
[class*="-card--layout-i"]:focus-within {
    border-color: var(--core-color-primary, #2c5f8d);
}
[class*="-card--layout-i"] [class*="-card__link"] {
    flex-direction: row;
    align-items: center;
    gap: 1rem;
    height: 100%;
    padding: 0.875rem 1rem;
}
[class*="-card--layout-i"] [class*="-card__datebox--inline"] {
    flex: none;
    width: 52px;
    text-align: center;
    line-height: 1;
}
[class*="-card--layout-i"] [class*="-card__divider"] {
    flex: none;
    width: 1px;
    align-self: stretch;
    background: var(--core-card-border, #ccc);
}
[class*="-card--layout-i"] [class*="-card__body"] {
    flex: 1 1 0%;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
[class*="-card--layout-i"] [class*="-card__title"] {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.3;
    color: var(--core-color-black, #212226);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
[class*="-card--layout-i"] [class*="-card__custom-meta"] {
    display: block;
    margin-top: 0.1rem;
}
[class*="-card--layout-i"] [class*="-card__meta-item--schedule"] {
    font-size: 1rem; /* era --core-font-size-sm (14px): mínimo legível 16px */
    color: var(--core-color-text-muted, #595959);
}

/* Responsivo: reduzir gaps/badge em ecrãs muito estreitos */
@media (max-width: 480px) {
    [class*="-card--layout-i"] [class*="-card__link"] {
        gap: 0.75rem;
        padding: 0.75rem;
    }
    [class*="-card--layout-i"] [class*="-card__datebox--inline"] {
        width: 44px;
    }
}

/* ---- Elementos Comuns ---- */
[class*="-card__title"] {
    margin: 0 0 0.25rem;
    line-height: 1.3;
}
[class*="-card__date"] {
    display: block;
    font-size: max(var(--core-font-min, 0px), 0.85em);
    color: #595959;
    margin-bottom: 0.25rem;
}
[class*="-card__excerpt"] {
    margin: 0.25rem 0 0.75rem;
    line-height: 1.5;
    color: #555;
    flex: 1;
}
[class*="-card__taxonomies"] {
    margin-top: 0.35rem;
}
[class*="-card__taxonomy-badge"] {
    display: inline-flex;
    align-items: center;
    padding: 0.25em 0.65em;
    font-size: max(var(--core-font-min, 0px), 0.72rem);
    font-weight: 600;
    border-radius: 2em;
    background: #e8e8e8;
    color: #333;  /* contrast 10.4:1 ✓ */
    line-height: 1.4;
    /* Nomes longos ("União das Freguesias de …") partem em linhas em vez de
       sair do card (o card tem overflow:hidden e cortava o texto). */
    max-width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
}
[class*="-card__custom-meta"] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    font-size: 1rem; /* era 0.85em: mínimo legível 16px */
    color: #555;
    margin-top: 0.5rem;
}
[class*="-card__meta-item"] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

/* ---- Aspect Ratios ---- */
.ar-101 { aspect-ratio: 1 / 1; }
.ar-169 { aspect-ratio: 16 / 9; }
.ar-43,
.ar-403 { aspect-ratio: 4 / 3; }
.ar-32  { aspect-ratio: 3 / 2; }
.ar-219 { aspect-ratio: 21 / 9; }
.ar-916 { aspect-ratio: 9 / 16; }
.ar-114 { aspect-ratio: 1 / 1.4; }

/* ---- Responsivo ---- */
@media (max-width: 768px) {
    [class*="-card--layout-d"] [class*="-card__inner"] {
        min-height: 200px;
    }
}

/* ========================================
   CoreCards - Fim
   ======================================== */

/* ========================================
   Cards Grid - Global Layout System
   ======================================== */

/* Base grid - auto-fill responsivo */
[class*="-cards-grid"] {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: var(--core-gap);
  align-items: stretch;
}

/* Fixed column count modifiers */
[class*="-cards-grid"].cols-1 { grid-template-columns: 1fr; }
[class*="-cards-grid"].cols-2 { grid-template-columns: repeat(2, 1fr); }
[class*="-cards-grid"].cols-3 { grid-template-columns: repeat(3, 1fr); }
[class*="-cards-grid"].cols-4 { grid-template-columns: repeat(4, 1fr); }
[class*="-cards-grid"].cols-5 { grid-template-columns: repeat(5, 1fr); }

/* Responsive: Tablet (2 colunas) */
@media (max-width: 768px) {
  [class*="-cards-grid"].cols-2,
  [class*="-cards-grid"].cols-3,
  [class*="-cards-grid"].cols-4,
  [class*="-cards-grid"].cols-5 {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Responsive: Mobile (1 coluna) */
@media (max-width: 480px) {
  [class*="-cards-grid"].cols-2,
  [class*="-cards-grid"].cols-3,
  [class*="-cards-grid"].cols-4,
  [class*="-cards-grid"].cols-5 {
    grid-template-columns: 1fr;
  }
  [class*="-cards-grid"] {
    gap: var(--core-spacing-md);
  }
}

/* ========================================
   Cards Grid - Fim
   ======================================== */

/*video shortcodes*/

/* Remove padding e limitações do GLightbox no conteúdo inline de vídeos locais */

.gslide-inline .glightbox-inline-video {
    padding: 0;
}

.gslide-inline .glightbox-inline-video video {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
}
.glightbox-video-btn {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 999;
}
/*video shortcodes - fim*/


/*fade up*/
/* estados iniciais */
.fade-up {
  opacity:    0;
  transform:  translateY(20px);
/* duração 0.8s + delay 0.2s */
  transition: opacity 1s ease-out 0.3s,
              transform 1s ease-out 0.3s;
}
/* quando entrar no viewport */
.fade-up.in-view {
  opacity:   1;
  transform: translateY(0);
}

/*fade up - end*/

/*core titles*/
.core-title {
    margin-bottom: 20px
}
.core-h1-title { font-size: var(--core-h1-size, 2.25rem); }
.core-h2-title { font-size: var(--core-h2-size, 1.875rem); }
.core-h3-title { font-size: var(--core-h3-size, 1.5rem); }
.core-h4-title { font-size: var(--core-h4-size, 1.25rem); }
.core-h5-title { font-size: var(--core-h5-size, 1.125rem); }
.core-h6-title { font-size: var(--core-h6-size, 1rem); }
/*core titles - fim*/

/*core description*/
.core-description {
    margin-bottom: 20px;
}
/*core description - fim*/

/*core simple calendar*/
.calendario-simples { text-align: center; max-width: 100%; margin: 0 auto 20px; }
.calendario-simples .calendario-simples-header { padding: 10px; display: flex; gap: 10px; justify-content: space-between; align-items: center; margin-bottom: 10px; background: #f4f4f4; }
.calendario-simples .calendario-controls { width: 100%; }
.calendario-simples .calendario-controls select { margin-bottom: 0 !important; height: 44px}
.calendario-simples .calendario-simples-header h2 { margin: 0 }
.calendario-simples .calendario-simples-header button { padding: 12px; min-width: 50px; }
.calendario-simples table { width: 100%; min-height: 300px; border-collapse: collapse; }
.calendario-simples th, .calendario-simples td { padding: 10px; border: 1px solid #ccc; width: 14.28%; text-align: center; vertical-align: middle }
.calendario-simples .today { background-color: #ffecb3; }
.calendario-simples .especial { background-color: #c8e6c9; font-weight: bold; cursor: default; }
.calendario-simples .legenda { margin-top: 10px; font-size: max(var(--core-font-min, 0px), 0.9em); text-align: left; }
.calendario-simples .legenda span { display: inline-block; padding: 4px 8px; margin-right: 10px; border-radius: var(--core-radius-sm, 4px); }
.calendario-simples .legenda .hoje { background-color: #ffecb3; }
.calendario-simples .legenda .evento { background-color: #c8e6c9; }
/* Lista de eventos do mês */
#listaEventos { margin-top: 20px; text-align: left; }
#listaEventos h4 { margin-bottom: 8px; }
#listaEventos .evento-item { margin-bottom: 10px; padding: 20px 30px; background: #f4f4f4; }
#listaEventos .evento-item a {display: block; padding-right: 20px; position: relative}
/* Pseudo-elemento com o ícone de seta à direita */
#listaEventos .evento-item a::after {
  content: "\f061";                      /* código Unicode da seta direita em FontAwesome */
  font-family: "Font Awesome 6 Free";    /* nome da família (confere na tua versão) */
  font-weight: 900;                      /* solid icons usam peso 900 */
  position: absolute;
  top: 50%;
  right: 0;
  transform: translateY(-50%);           /* centra verticalmente */
  font-size: 0.9em;                      /* ajusta ao teu gosto */
  color: inherit;                        /* herda cor do link */
}
#listaEventos .evento-item h3 {
    margin-bottom: 0;
}
/*core simple calendar - fim*/

/*youtube full with*/


.youtube-full-with {
  position: relative;
  width: 100%;
  /* Proporção 16:9 = 9/16 ≈ 56.25% */
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
}

.youtube-full-with iframe,
.youtube-full-with object,
.youtube-full-with embed {
  position: absolute;
  top:   0;
  left:  0;
  width: 100%;
  height: 100%;
  border: 0;
}

/*youtube full with - fim*/

/*loop generico*/

/* item base */
.loop-one-item {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "thumb content";
    gap: 50px;
    margin-bottom: 50px;
    border-radius: var(--core-radius, 0.5rem);
    align-items: center;
}

/* inverte para itens pares */
.loop-one-item:nth-child(even) {
    grid-template-areas: "content thumb";
}

/* figura (sempre 4:3) */
.loop-one-figure {
    grid-area: thumb;
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: var(--core-radius, 0.5rem);
}
.loop-one-figure img.loop-one-thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* conteúdo textual */
.loop-one-entry {
    grid-area: content;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 0 50px;
}
.loop-one-header {
    margin-bottom: 0.75rem;
}

.loop-one-excerpt {
    margin-bottom: 1rem;
    color: #555;
    line-height: 1.5;
}
.loop-one-button {
    align-self: start;
    padding: 0.6rem 1.2rem;
    text-decoration: none;
    border-radius: var(--core-btn-radius, 0.3rem);
    font-weight: bold;
    transition: background-color 0.3s ease;
    background: #f4f4f4
}
.loop-one-button:hover {
    background-color: #005177;
}

/* responsivo: uma coluna só */
@media (max-width: 768px) {
  .loop-one-item {
    display: grid; /* reforça o grid */
    grid-template-columns: 1fr;
    grid-template-areas:
      "thumb"
      "content";
    gap: 1rem;       /* espaçamento menor no mobile */
    margin-bottom: 2rem;
    padding: 0;      /* zera padding externo */
  }

  /* remove qualquer override anterior para pares */
  .loop-one-item:nth-child(even) {
    grid-template-areas:
      "thumb"
      "content";
  }

  .loop-one-figure {
    aspect-ratio: 4/3;
  }

  .loop-one-entry {
    grid-area: content;
    padding: 0 1rem;   /* padding interno mais suave */
    text-align: center;
  }

  .loop-one-button {
    align-self: center; /* centraliza o botão */
    margin-top: 1rem;
  }
}
/*loop generico - fim*/

/*visitar*/

.visitar-subnav-container {
    margin-top: 80px;
}




/*visitar - fim*/

/*loop archive item*/
.loop-archive-thumbnail a {
    display: block;
}
.loop-archive-title {
    padding: 20px;
}
.loop-title {
    font-size: 1.6em;
}
/*loop archive item - end*/

/*MODULO DE DESTAQUES*/
/* Main Grid Layout - 4 Rows and 3 Columns */
.adsi-destaques {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* 3 posts per row */
    grid-auto-rows: auto; /* Ensures consistent row heights */
    gap: 20px; /* Space between items */
}

/* Post title and date styling */
.adsi-destaque h3 {
    margin: 0;
    font-size: 1.2rem;
}

.adsi-destaque time {
    font-size: max(var(--core-font-min, 0px), 0.9rem);
    color: #555;
}

/* Styles for the first 3 posts (with image overlay) */
.adsi-destaque-first {
    position: relative;
    overflow: hidden; /* Ensures overlay remains within boundaries */
    min-height: 260px; /* Adjust image height to auto on small screens */
}

/* Title and date for highlighted posts */
.adsi-destaque-first h3, 
.adsi-destaque-first time {
    position: relative;
    z-index: 3;
    color: #fff;
}

/* Text overlay for first 3 posts */
.adsi-destaque-first .adsi-destaque-text {
    position: absolute;
    bottom: 0;
    left: 0;
    z-index: 1;
    color: #fff;
    padding: 20px;
    width: 100%;
    box-sizing: border-box;
    background: #30554d; /* Adjust opacity for readability */
    min-height: 88px;
}

.adsi-destaque-first a {
    color: #fff;
    text-decoration: none; /* Optional for cleaner design */
}

.adsi-destaque-first .adsi-destaque-image img {
    width: 100%;
    height: 360px;
    object-fit: cover;
}

/* Hide image for posts after the first 3 */
.adsi-destaque:not(.adsi-destaque-first) .adsi-destaque-image {
    display: none;
}

/* Text container for remaining posts */
.adsi-destaque-text {
    padding: 20px;
}

/* Date Badge Style */
time.adsi-destaque-date-badge {
    display: flex;
    background: #30554d;
    color: #fff;
    position: absolute !important;
    top: 0;
    right: 0;
    width: 70px;
    height: 70px;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    line-height: 1.5;
    font-size: 1.1rem;
}

.adsi-destaque-date-badge-day {
    font-size: 22px;
    font-weight: bold;
}

.adsi-destaque-date-badge-month {
    text-transform: uppercase;
    font-weight: bold;
}

/*destaques opcao a*/
.adsi-destaques-grelha-opcaoa {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(6, 1fr);  
    grid-template-areas: 
        "destaque-a destaque-a destaque-a destaque-b destaque-b destaque-b"
        "destaque-c destaque-c destaque-d destaque-d destaque-e destaque-e"; 
    grid-auto-rows: auto;
    gap: 30px;
}
.adsi-destaques-grelha-opcaoa .adsi-destaque-image  { 
    display: grid
}
.adsi-destaques-grelha-opcaoa .adsi-destaque-image .adsi-destaque-link {
    display: block;             /* garante que o link seja um box */
    width: 100%;                /* ou fixe o width que quiser */
    aspect-ratio: 16 / 9;       /* define proporção 16:9 */
    overflow: hidden;           /* esconde o que ultrapassar */
    position: relative;         /* para posicionar o img por cima */
}
.adsi-destaques-grelha-opcaoa .adsi-destaque-image .adsi-destaque-link img {
    width: 100%;
    height: 100%;
    object-fit: cover;          /* cobre todo o container sem distorcer */
    object-position: center;    /* centraliza o corte */
}
.adsi-destaques-grelha-opcaoa .adsi-destaque-item {
    align-content: stretch;
    display: grid;
    background-color: #fff;
}
.adsi-destaques-grelha-opcaoa .adsi-destaque-item .adsi-destaque-text {
    align-content: center
}
.adsi-destaques-grelha-opcaoa .adsi-destaque-item .adsi-destaque-title {
    margin-bottom: 0
}
/*destaques opcao a - fim*/



/*destaques opcao b*/
.adsi-destaques-grelha-opcaob {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(6, 1fr);  
    grid-template-areas: 
        "destaque-a destaque-a destaque-a destaque-b destaque-b destaque-b"
        "destaque-c destaque-c destaque-d destaque-d destaque-e destaque-e"; 
    grid-auto-rows: auto;
    gap: 30px;
}

.adsi-destaques-grelha-opcaob .adsi-destaque-a { grid-area: destaque-a; }
.adsi-destaques-grelha-opcaob .adsi-destaque-b { grid-area: destaque-b; }
.adsi-destaques-grelha-opcaob .adsi-destaque-c { grid-area: destaque-c; }
.adsi-destaques-grelha-opcaob .adsi-destaque-d { grid-area: destaque-d; }
.adsi-destaques-grelha-opcaob .adsi-destaque-e { grid-area: destaque-e; }
    
.adsi-destaques-grelha-opcaob .adsi-destaque-image  { 
    display: grid
}
.adsi-destaques-grelha-opcaob .adsi-destaque-image .adsi-destaque-link {
    display: block;             /* garante que o link seja um box */
    width: 100%;                /* ou fixe o width que quiser */
    aspect-ratio: 16 / 9;       /* define proporção 16:9 */
    overflow: hidden;           /* esconde o que ultrapassar */
    position: relative;         /* para posicionar o img por cima */
}
.adsi-destaques-grelha-opcaob .adsi-destaque-image .adsi-destaque-link img {
    width: 100%;
    height: 100%;
    object-fit: cover;          /* cobre todo o container sem distorcer */
    object-position: center;    /* centraliza o corte */
}
.adsi-destaques-grelha-opcaob .adsi-destaque-item {
    align-content: stretch;
    display: grid;
    background-color: #fff;
}
.adsi-destaques-grelha-opcaob .adsi-destaque-item .adsi-destaque-text {
    align-content: center
}
.adsi-destaques-grelha-opcaob .adsi-destaque-item .adsi-destaque-title {
    margin-bottom: 0
}
/*destaques opcao b - fim*/

/*destaques opcao c*/
.adsi-destaques-grelha-opcaoc .adsi-destaque-image  { 
    display: grid
}
.adsi-destaques-grelha-opcaoc .adsi-destaque-image .adsi-destaque-link {
    display: block;             /* garante que o link seja um box */
    width: 100%;                /* ou fixe o width que quiser */
    aspect-ratio: 16 / 9;       /* define proporção 16:9 */
    overflow: hidden;           /* esconde o que ultrapassar */
    position: relative;         /* para posicionar o img por cima */
}
.adsi-destaques-grelha-opcaoc .adsi-destaque-image .adsi-destaque-link img {
    width: 100%;
    height: 100%;
    object-fit: cover;          /* cobre todo o container sem distorcer */
    object-position: center;    /* centraliza o corte */
}
.adsi-destaques-grelha-opcaoc .adsi-destaque-item {
    align-content: stretch;
    display: grid;
    background-color: #fff;
}
.adsi-destaques-grelha-opcaoc .adsi-destaque-item .adsi-destaque-text {
    align-content: center
}
.adsi-destaques-grelha-opcaoc .adsi-destaque-item .adsi-destaque-title {
    margin-bottom: 0
}
/*destaques opcao c - fim*/

/*GRID FIVE*/
    .adsi-destaques-five {
        display: grid;
        grid-template-columns: repeat(4, 1fr); /* 4 colunas de igual largura */
        grid-template-rows: repeat(2, 1fr); /* 2 linhas de igual altura */
        gap: 10px; /* Espaço entre os itens da grelha */
    }
/*GRID FIVE - END*/

/*GRID*/
.adsi-destaques {  
        display: grid;        
        grid-auto-flow: row;             
    }
    
    .adsi-destaques-3 {  
        grid-template-columns: 3fr 2fr;
        grid-template-rows: 1fr 1fr;
        grid-template-areas:
            "destaque-a destaque-b"
            "destaque-a destaque-c";
    }
    
    .adsi-destaques-4 {  
        display: grid;
        grid-template-columns: repeat(2, 1fr); /* 2 columns */
        grid-template-rows: repeat(2, 1fr);    /* 2 rows */
        grid-template-areas: 
            "destaque-a destaque-b"
            "destaque-c destaque-d"; 
        gap: 30px; /* Optional: Adjust the gap between grid items */
    }

    /* Define the grid areas for each article */
    .adsi-destaques-4 .destaque-a { grid-area: destaque-a; }
    .adsi-destaques-4 .destaque-b { grid-area: destaque-b; }
    .adsi-destaques-4 .destaque-c { grid-area: destaque-c; }
    .adsi-destaques-4 .destaque-d { grid-area: destaque-d; }
    
    
    .adsi-destaques-4 .adsi-destaque-a,
    .adsi-destaques-4 .adsi-destaque-b,
    .adsi-destaques-4 .adsi-destaque-c,
    .adsi-destaques-4 .adsi-destaque-d {
        position: relative;
        
    }
    
    .adsi-destaques-4 .adsi-destaque-a .adsi-destaque-text,
    .adsi-destaques-4 .adsi-destaque-b .adsi-destaque-text,
    .adsi-destaques-4 .adsi-destaque-c .adsi-destaque-text,
    .adsi-destaques-4 .adsi-destaque-d .adsi-destaque-text {
        position: absolute;
        bottom: 0;
        width: 100%;
        padding: 20px;
        min-height: 120px;
    }

    .adsi-destaques-5 {  
        grid-template-columns: repeat(6, 1fr); 
        grid-template-rows: 1fr 1fr; 
        grid-template-areas: 
            "destaque-a destaque-a destaque-a destaque-b destaque-b destaque-b"
            "destaque-c destaque-c destaque-d destaque-d destaque-e destaque-e"; 
    }                  
    
    .adsi-destaques-8 {  
        grid-template-columns: 1fr 1fr;   
        grid-template-areas: 
            "destaque-a destaque-b"
            "destaque-c destaque-d"
            "destaque-e destaque-f"
            "destaque-g destaque-h"; 
    }
    
   .adsi-destaques-8 {
        .adsi-destaque-c,
        .adsi-destaque-d,
        .adsi-destaque-e,
        .adsi-destaque-f,
        .adsi-destaque-g,
        .adsi-destaque-h {
            display: grid;
            grid-template-columns: 90px 1fr;
            gap: 30px;
            align-items: center;
        }
    }
    
    .adsi-destaques-8 .adsi-destaque-a,
    .adsi-destaques-8 .adsi-destaque-b {
        position: relative;
        
    }
    
    .adsi-destaques-8 .adsi-destaque-a .adsi-destaque-text,
    .adsi-destaques-8 .adsi-destaque-b .adsi-destaque-text {
        position: absolute;
        bottom: 0;
        width: 100%;
        padding: 20px;
        min-height: 120px;
    }
    
    .adsi-destaques-8 h3 {
        margin: 0
    }
    .adsi-destaques-8 .adsi-destaque-a .adsi-destaque-image a,
    .adsi-destaques-8 .adsi-destaque-b .adsi-destaque-image a {
        display: block;
        height: 300px;
        overflow: hidden;
    }

    .adsi-destaques-8 .adsi-destaque-a .adsi-destaque-image a img,
    .adsi-destaques-8 .adsi-destaque-b .adsi-destaque-image a img {
        object-fit: cover;
        height: 100%;
        width: 100%;
    }
    

    
    
    .adsi-destaque-f { grid-area: destaque-f; }
    .adsi-destaque-g { grid-area: destaque-g; }
    .adsi-destaque-h { grid-area: destaque-h; }
/*GRID - END*/

/*destaques*/
.adsi-destaque-link {
  display: block;           /* transforma em container de bloco */
  color: inherit;           /* herda cor do texto */
  text-decoration: none;    /* remove sublinhado */
  height: 100%;
}

.adsi-destaque-link:focus {
  outline: 3px solid Highlight;
  outline-offset: 2px;
}

.adsi-destaque-link:hover {
  /* opcional: adicionar um efeito de hover no card inteiro */
  background-color: rgba(0,0,0,0.05);
}

.adsi-destaque-link img {
    display: block;                /* Remove espaços indesejados */
    width: 100%;                   /* Adapta ao contêiner */
    height: auto;
    transition: transform 0.3s ease; /* Duração e curva de transição */
    transform-origin: center center; /* Origem do zoom */ 
}
.adsi-destaque-link:hover img {
     transform: scale(1.1);         /* Aumenta em 10% */
}

/*destaques - fim*/

/*DIRETORIO*/
.diretorio-single-image {
    max-height: 480px;
    overflow: hidden;
    display: flex;
    align-content: center
}
.diretorio-single-image img {
    object-fit: cover;
    min-width: 100%;
}
.adsi-diretorio-descricao {
    margin-bottom: 30px;
}
.cat-dir-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 30px;
}
.cat-dir-grid-item .diretorio-caticon-wrapper {
  padding: 30px;
  display: flex;
  align-content: stretch;
  flex-flow: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  height: 100%;
}

.cat-dir-grid {
    display: grid;
    gap: 30px;   
}
.cat-dir-grid-item {
    border-radius: var(--core-radius, 5px);
}
.cat-dir-grid-item-txt {
    text-align: center
}
.cat-dir-grid-item-img {
    padding: 20px;
    display: flex;
    justify-content: center;
}
.cat-dir-grid-item-img img {
    max-height: 60px;
}

.diretorio-top-search {
  margin-bottom: 30px
}
.diretorio-top-search .adsi-dir-search-form ul {
  display: grid;
  margin: 0 !important;
  gap: 30px;
}
.adsi-dir-search-form ul li {
    padding: 0;
    list-style: none
}
.adsi-dir-search-form ul input, .adsi-dir-search-form ul select {
    width: 100% !important;
    display: flex;
    height: 50px;
    padding: 5px 10px !important;
    line-height: 100%;
    border-top: 0;
    border-left: 0;
    border-right: 0;
    border-radius: var(--core-radius, 5px);
}
.single-diretorio .post-thumb-img-content img {
    object-fit: cover;
    width: 100%;
    min-height: 100%;
}
/*DIRETORIO - END*/

/*FREGUESIAS*/
.freguesias-terms ul {
    display: inline-block;
    list-style: none;
    margin: 0;
}
/*FREGUESIAS - END*/

/*CONTENT NAVIGATION CONTROLS*/
/* Colunas "auto": cada botão parte da largura do seu conteúdo e o espaço
   que sobra é repartido (flex-grow) — a linha fica sempre preenchida, sem
   metades iguais; quebra de linha quando não cabem lado a lado (ex:
   sidebar estreita com uma designação longa). */
.content-controls {
    display: flex;
    flex-wrap: wrap;
    gap: var(--core-gap, 1rem);
    margin-top: var(--core-gap, 1rem);
}
.content-controls > .core-button {
    flex: 1 1 auto;
    justify-content: center;
}
/*CONTENT NAVIGATION CONTROLS - FIM*/

/*core related documents*/
.core-related-documents ul {
    margin: 0;
}
.bo-simple-document {
  display: block;
  position: relative;      /* para posicionar o ::after */
  padding: 10px 35px 10px 15px;
  background: #f4f4f4;
  margin-bottom: 5px;
  text-decoration: none;   /* opcional, se for link */
  color: inherit;          /* opcional, herda cor do texto */
}

/* Ícone de download do FontAwesome após cada .bo-simple-document */
.bo-simple-document::after {
    content: "\f061";                    /* Unicode do fa-eye */
    font-family: "Font Awesome 6 Free";   /* ou "Font Awesome 5 Free" conforme a tua versão */
    font-weight: 900;                     /* solid icons usam peso 900 */
    position: absolute;
    right: 15px;                          /* alinha à direita, dentro do padding */
    top: 50%;
    transform: translateY(-50%);
    font-size: 1em;                       /* ajusta ao teu gosto */
    pointer-events: none;                 /* não interfere em cliques */
}

/*core related documents - fim*/

/*SIDEBAR*/
/*executivo - details*/
.core-sidebar-picture {
    margin-bottom: 30px
}
.core-sidebar-picture img {
    width: 100%;
}
/*SIDEBAR - FIM*/

/*SIDEBAR SEARCH*/
.sidebar-search form {
    padding: 30px;
    background: #f4f4f4;
    border-radius: var(--core-radius-sm, 3px);
}
.sidebar-search form input,
.sidebar-search form select {
    width: 100%;
    padding: 5px 15px;
    margin-bottom: 10px;
}
/*SIDEBAR SEARCH - FIM*/

/*SUBNACEGACAO DE PAGINAS*/
.adsi-subnav-grid {
    margin: auto
}
.adsi-subnav-grid > ul {
    display: grid;
    margin: 0;
    gap: 20px;
    align-items: center;
    grid-auto-rows: 1fr;
    padding: 0;
    align-items: stretch;
}
.adsi-subnav-grid > ul li {
    list-style: none;
}
.adsi-subnav-grid > ul li a {
    text-align: center;
    display: flex;
    justify-content: center;
    padding: 20px;
    border-radius: var(--core-radius, 5px);
    background: #f4f4f4;
    align-content: center;
    align-items: center;
    height: 100%;
}
.adsi-subnav-grid .current_page_item {
    border-bottom: 5px #ddd solid;
}

ul#page-subnavigation-services {
  padding: 0;
}
/*SUBNACEGACAO DE PAGINAS - FIM*/

/* SEPARADORES DE SERVIÇO ([subpage_nav]) — navegação em pill, escopada a
   .subpage-nav-outside para não afetar o [mbs_subnav] partilhado acima. */
.subpage-nav-outside .adsi-subnav-grid {
    margin: 0 0 var(--core-spacing-lg, 32px);
}

.subpage-nav-outside .adsi-subnav-grid > ul {
    display: flex;
    flex-wrap: wrap;
    gap: var(--core-spacing-sm, 8px);
    align-items: stretch;
}

/* Raio: Componentes → Pílulas (--core-pill-radius; vazio = redondas). Tipografia
   e espessura do bordo seguem Componentes → Botões (--core-btn-*, só definidas
   quando configuradas — CoreGlobaisCss); sem opção, os valores próprios das
   pills (fallbacks). Cores e estado atual são das
   pills: isto é navegação, não ações (não usa CoreButtons). */
.subpage-nav-outside .adsi-subnav-grid > ul li a:not(.core-button) {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--core-spacing-xs, 6px);
    min-height: 44px;
    padding: 10px 20px;
    font-size: var(--core-btn-font-size, 1rem);
    font-weight: var(--core-btn-font-weight, inherit);
    text-transform: var(--core-btn-text-transform, none);
    letter-spacing: var(--core-btn-letter-spacing, normal);
    text-decoration: none;
    color: var(--core-color-primary, #2c5f8d);
    background: var(--core-color-gray-light, #f5f5f5);
    border: var(--core-btn-border-width, var(--core-border-width, 1px)) solid var(--core-color-gray, #ccc);
    border-radius: var(--core-pill-radius, var(--core-border-radius-full, 9999px));
    height: auto;
}

.subpage-nav-outside .adsi-subnav-grid > ul li a:not(.core-button):hover,
.subpage-nav-outside .adsi-subnav-grid > ul li a:not(.core-button):focus-visible,
.subpage-nav-outside .adsi-subnav-grid > ul li.current-page a:not(.core-button) {
    background: var(--core-color-primary, #2c5f8d);
    border-color: var(--core-color-primary, #2c5f8d);
    color: var(--core-color-white, #fff);
}

/* Pill "voltar ao serviço" — visualmente distinta das restantes (contorno
   em vez de preenchida), para se destacar como "subir um nível" e não mais
   um separador ao mesmo nível. */
.subpage-nav-outside .adsi-subnav-grid > ul li.subpage-nav-home a:not(.core-button) {
    background: transparent;
    color: var(--core-color-primary, #2c5f8d);
    border-style: dashed;
}

.subpage-nav-outside .adsi-subnav-grid > ul li.subpage-nav-home a:not(.core-button):hover,
.subpage-nav-outside .adsi-subnav-grid > ul li.subpage-nav-home a:not(.core-button):focus-visible {
    background: var(--core-color-primary, #2c5f8d);
    border-style: solid;
    color: var(--core-color-white, #fff);
}

/* Menu de sidebar dos separadores (CoreSubPages::render_sidebar_navigation) —
   reaproveita .sidebar-menu/.menu-item (ver TaxonomyMenu.php); só o destaque
   do item atual é próprio, escopado para não afetar outros menus .sidebar-menu. */
.subpage-sidebar-nav .sidebar-menu .current-menu-item > a {
    background: var(--core-color-primary, #2c5f8d);
    color: var(--core-color-white, #fff);
}

/*sidebar picture*/
.custom-sidebar-picture {
    margin-bottom: 30px;
}
/*sidebar picture - end*/

/*SIDEBAR*/
/* 
 * Sidebar positioning classes
 * Em mobile, sempre usa flex-direction: column (definido em .main-content-wrapper)
 * Em desktop (768px+), aplica row/row-reverse conforme posição
 */
/*SIDEBAR - FIM*/

/* SIDEBAR MENU */
/* General menu styling */
.sidebar-menu {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

/* Style for main menu items */
.sidebar-menu .menu-item {
    margin-bottom: 6px !important;
}

.sidebar-menu .menu-item:first-of-type {
    border: none;
}



.sidebar-menu .menu-item > a {
    text-decoration: none;
    color: var(--core-sidebar-menu-color, #222);
    display: flex;
    width: 100%;
    align-items: center;
    padding: 7px 30px;
    background-color: var(--core-sidebar-menu-bg, #f4f4f4);
    border-radius: var(--core-radius-sm, 4px);
    transition: background-color 0.3s ease, color 0.3s ease;
    position: relative
}

.sidebar-menu .menu-item > a::after {
    content: "\f105"; /* FontAwesome arrow icon */
    font-family: 'FontAwesome';
    margin-right: 8px;
    font-size: 12px;
    color: var(--core-sidebar-menu-arrow, #888); /* Icon color */
    transition: color 0.3s ease;
    position: absolute;
    right: 0
}

.sidebar-menu .menu-item > a:hover {
    background-color: var(--core-sidebar-menu-hover-bg, #e0e0e0);
    color: var(--core-sidebar-menu-color, #222);
}

.sidebar-menu .menu-item > a:hover::before {
    color: #333;
}

/* Hide all submenus by default */
.sidebar-menu .sub-menu {
    display: none;
    margin-top: 6px;
    padding-left: 15px;
    list-style-type: none;
    margin-left: 0;
}

/* Show submenus for the active item and ancestors of an active item */
.sidebar-menu .current-menu-item > .sub-menu,
.sidebar-menu .current-menu-ancestor > .sub-menu {
    display: block;
    border-left: 1px #ddd solid;
}

/* Style for submenu links */
.sidebar-menu .sub-menu .menu-item > a {
    background-color: var(--core-sidebar-menu-sub-bg, #f1f1f1);
    color: var(--core-sidebar-menu-color, #222);
    padding-left: 20px;
    border-radius: var(--core-radius-sm, 4px);
    transition: background-color 0.3s ease, color 0.3s ease;
}

.sidebar-menu .sub-menu .current-menu-item > a, 
.sidebar-menu .sub-menu .current-menu-ancestor > a {
    background-color: var(--core-sidebar-menu-current-bg, #ddd);
    color: var(--core-sidebar-menu-current-color, #222);
}

/* FontAwesome icon styling for submenu items */
.sidebar-menu .sub-menu .menu-item > a::after {
    content: "\f105"; /* FontAwesome arrow icon */
    font-family: 'FontAwesome';
    margin-right: 6px;
    font-size: 10px;
    color: var(--core-sidebar-menu-arrow, #aaa); /* Submenu icon color */
    transition: color 0.3s ease;
}

/* Hover effect for submenu links */
.sidebar-menu .sub-menu .menu-item > a:hover {
    background-color: var(--core-sidebar-menu-hover-bg, #ddd);
    color: var(--core-sidebar-menu-color, #444);
}

.sidebar-menu .sub-menu .menu-item > a:hover::before {
    color: #666;
}

/* Recuo dos submenus: o Enfold zera padding/margin de todas as listas dos widgets
   ("#top .widget ul"), e os subitens ficavam alinhados com o item de cima. A linha
   à esquerda (#6b7280, 4.8:1) mostra o nível. */
#top .sidebar-menu .sub-menu {
    float: none;
    width: auto;
    margin: 6px 0 0 .75rem;
    padding: 0 0 0 .75rem;
}
#top .sidebar-menu .current-menu-item > .sub-menu,
#top .sidebar-menu .current-menu-ancestor > .sub-menu,
#top .sidebar-menu .sub-menu.is-open {
    border-left: 2px solid var(--core-sidebar-menu-accent, #6b7280);
}
/* Itens só de agrupamento (sem página): texto em negrito, sem fundo nem seta. */
.sidebar-menu .menu-item > .sidebar-menu__label {
    display: block;
    padding: 7px 0;
    font-weight: 700;
    color: #1f2937;
}
/* Os filhos de um item de agrupamento mostram-se sempre (não há página onde os ver). */
.sidebar-menu .menu-item > .sidebar-menu__label + .sub-menu {
    display: block;
}
#top .sidebar-menu .menu-item > .sidebar-menu__label + .sub-menu {
    border-left: 2px solid var(--core-sidebar-menu-accent, #6b7280);
}
/* Página atual: negrito além da cor de fundo (não só a cor distingue — 1.4.1). */
.sidebar-menu .current-menu-item > a {
    font-weight: 700;
    background-color: var(--core-sidebar-menu-current-bg, #ddd);
    color: var(--core-sidebar-menu-current-color, #222);
}

/* Indent for nested submenu items */
.sidebar-menu .sub-menu .sub-menu .menu-item > a {
    padding-left: 30px;    
}

.sidebar-menu .sub-menu .sub-menu .menu-item > a:hover {
    background-color: var(--core-sidebar-menu-hover-bg, #ddd);
}

/*sidebar menu with image*/
 .sidebar-menu-with-image .menu-item {
    display: flex;
    align-items: center;
    margin-bottom: 10px;
}

.sidebar-menu-with-image .post-thumbnail-container {
    flex: 0 0 56px;
    margin-right: 10px;
}

/* Miniatura sempre quadrada (1:1), recortada ao centro — o ficheiro pode ter
   qualquer proporção quando o tamanho 'smallthumb' não foi gerado. */
#top .sidebar-menu-with-image .post-thumbnail {
    display: block;
    width: 56px;
    height: 56px;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    object-position: center;
    border-radius: var(--core-radius-sm, 4px);
}

.sidebar-menu-with-image .post-title {
    font-size: 16px;
}
/* Títulos limitados a N linhas (Apresentação → Sidebar → "Linhas dos Títulos
   Relacionados", omissão 2). O texto completo continua no link (leitores de ecrã). */
.related-posts-widget--clamp .post-title__text {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: var(--related-title-lines, 2);
    line-clamp: var(--related-title-lines, 2);
    overflow: hidden;
}


/*sidebar menu with image -fim*/
/* SIDEBAR MENU - END */

/*freguesias*/
.freguesia-wrapper {
    width: 100%;
}
.adsi-freguesias-grid {
    display: grid;
    gap: 30px
}
.adsi-freguesias-grid-item {
    text-align: center;
    background: #f4f4f4;
    border-radius: var(--core-radius, 5px)
}

.fre-repeater-row {
    display: grid;
    grid-template-columns: 140px 1fr auto;
    gap: 10px;
    border-bottom: 1px #ddd solid;
    border-top: 1px #ddd solid;
    margin-top: -1px;
}
.fre-repeater-row > div {
    padding: 5px 0;
}
.fre-row {
    margin-bottom: 20px;
}
.fre-dados {
    margin: 0;
}
.fre-dados dt {
    font-weight: bold;
}
.fre-dados dd {
    margin: 0;
}
.fre-membros,
.fre-documentos {
    list-style: none;
    margin: 0;
    padding: 0;
}
.fre-documentos li {
    margin-bottom: 5px;
}
@media (max-width: 600px) {
    .fre-repeater-row {
        grid-template-columns: 1fr;
        gap: 0;
    }
}

.freguesia-wrapper h3 {
    margin-bottom: 10px;
}
.fre-imagem {
    padding: 30px;
    border: 1px #ddd solid;
    border-radius: var(--core-radius, 5px);
    margin-bottom: 30px;
    text-align: center
}
.fre-row > span {
    font-weight: bold;
}
.fre-archive-imagem {
    padding: 30px 50px 20px 50px;
}
/*freguesias - fim*/

/*reunioes*/
.reuniao-archive-item {
    background: #fff;
    margin-bottom: 15px;
}
.reuniao-archive-item a {
    display: block;
}
.reuniao-archive-item img {
    width: 100%
}
.reuniao-archive-item-inside {
    display: grid;
    gap: 30px;
    align-items: center;
    padding: 20px
}
.reu-row {
    margin-bottom: 30px
}
/*reunioes - fim*/

/*widgets*/
/* Doubled class (0,2,0): themes colour every heading in the content
   (Enfold: .main_color h2, 0,1,1), which turned the title text dark on the
   dark --core-widget-title-bg — unreadable. */
.widget_title.widget_title {
    padding: var(--core-widget-title-padding-block) var(--core-widget-title-padding-inline);
    margin-bottom: var(--core-widget-title-margin-bottom);
    background: var(--core-widget-title-bg);
    color: var(--core-widget-title-color);
    border-radius: var(--core-widget-title-border-radius);
    font-size: var(--core-widget-title-font-size);
}
/*widgets - fim*/

/*youtube slider*/
/* Slide base */
.ytbslider {
    margin-bottom: 30px
}
.ytbslider .splide__slide {
  position: relative;
  padding-top: 56.25%;
  background: #000;
  overflow: hidden;
  border-radius: var(--core-radius, 12px);
}

/* Thumbnail como cover */
.ytbslider .ytb-cover {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.ytbslider .ytb-thumb {
  position: absolute;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--core-radius, 12px);
}

/* Degradé nas laterais */
.ytbslider .ytb-overlay::before {
  content: "";
  position: absolute;
  top: 0; bottom: 0; left: 0; right: 0;
  pointer-events: none;
  z-index: 1;
  background: radial-gradient(circle, transparent 40%, rgba(0,0,0,0.6));
}


/* Overlay para conteúdo */
.ytbslider .ytb-overlay {
  position: relative;
  width: 100%;
  height: 100%;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-align: center;
  pointer-events: none;
}

/* Ícone de play */
.ytbslider .ytb-play-icon {
  font-size: 4rem;
  pointer-events: none;
  text-shadow: 0 2px 5px rgba(0,0,0,0.5);
}

/* Legenda abaixo do play */
.ytbslider .ytv-caption {
    margin-top: 160px;
    max-width: 90%;
    font-size: 1.1rem;
    font-weight: 500;
}
.ytbslider .splide__video__play {
    border-radius: 150px;
    padding: 36px;
    background-color: #ffffff;
}

/* Esconde a cover quando o iframe aparece */
.ytbslider .splide__slide.has-video video,
.ytbslider .splide__slide.has-video iframe {
  position: absolute;
  top: 0; left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 3;
}

/* Oculta a capa e legenda quando o vídeo está a tocar */
.ytbslider.is-playing .ytb-cover {
  display: none;
}


/* Capa com animação */
.ytbslider .ytb-cover {
  opacity: 1;
  transition: opacity 0.5s ease, visibility 0.5s ease;
  visibility: visible;
}

/* Quando o vídeo está a tocar (via Splide), a capa desaparece com fade */
.ytbslider.is-playing .ytb-cover {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/*youtube slider - fim*/

/* Sliders - Core styles (module-specific styles in /modulos/sliders/assets/sliders.css) */
.adsi-slide-item-content {
    position: relative;
}

/* Vídeo de fundo dos slides: só em modulos/sliders/assets/sliders.css.
   A cópia que havia aqui centrava com translate(-50%, -50%); o sliders.css
   repunha top/left 0 sem anular o transform e o vídeo ficava deslocado. */

.splide__slide.adsi-slide-item {
  position: relative;
}

/*core gallery splide*/
.core-gallery-splide .splide__slide {
    position: relative;
    overflow: hidden;
    background-color: var(--gal-image-bg, transparent);
  }
.core-gallery-splide .splide__slide img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
  }
/* Ajuste "Conter" (gal_ajuste_imagem): imagem inteira, centrada na caixa do slide */
.core-gallery-splide--contain .splide__slide img {
    object-fit: contain;
  }
/* Lightbox (gal_lightbox): o link ocupa o slide (ou a imagem única). Foco: anel duplo,
   branco e escuro, por cima da imagem (::after) — um anel de uma só cor perdia-se em
   fotografias da mesma cor (WCAG 2.4.13). */
.core-gallery-splide .splide__slide a.core-gallery-lightbox,
.core-gallery-single a.core-gallery-lightbox {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
    cursor: zoom-in;
  }
.core-gallery-splide .splide__slide a.core-gallery-lightbox:focus-visible,
.core-gallery-single a.core-gallery-lightbox:focus-visible {
    outline: none;
  }
.core-gallery-splide .splide__slide a.core-gallery-lightbox:focus-visible::after,
.core-gallery-single a.core-gallery-lightbox:focus-visible::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 3px solid #fff;
    box-shadow: inset 0 0 0 3px #111827;
    pointer-events: none;
  }
.core-gallery-single {
    position: relative;
  }
/* Splide — setas nativas globais (controladas via ACF Componentes → Slider) */
.splide__arrow {
    width:         var(--splide-arrow-size);
    height:        var(--splide-arrow-size);
    padding:       var(--splide-arrow-padding);
    border-radius: var(--splide-arrow-radius);
    border-width:  var(--splide-arrow-border-width);
    border-style:  solid;
    border-color:  var(--splide-arrow-border-color);
    background:    var(--splide-arrow-bg);
    opacity:       var(--splide-arrow-opacity);
    transition:    opacity 0.2s, background 0.2s, border-color 0.2s;
}
/* Acessibilidade: alvo de toque mínimo de 44x44px (WCAG 2.5.5/2.5.8),
   independente do valor de --splide-arrow-size escolhido em
   Componentes → Setas. min-width/min-height não entra em conflito com a
   largura/altura definida acima (propriedades diferentes) — o browser usa
   sempre o maior dos dois valores. */
.splide__arrow,
.destaques-carousel__arrow,
.core-eventos-arrow,
.agenda-institucional-arrow {
    min-width: 44px;
    min-height: 44px;
}
.splide__arrow svg {
    width:  var(--splide-arrow-icon-size);
    height: var(--splide-arrow-icon-size);
    fill:   var(--splide-arrow-color);
}
.splide__arrow:hover:not(:disabled) {
    opacity:      var(--splide-arrow-opacity-hover);
    background:   var(--splide-arrow-bg-hover);
    border-color: var(--splide-arrow-border-color-hover);
}
.splide__arrow:hover:not(:disabled) svg {
    fill: var(--splide-arrow-color-hover);
}
.splide__arrow:disabled {
    opacity: var(--splide-arrow-opacity-disabled);
}

/* core gallery splide - custom arrows */
.core-gallery-splide .splide__arrows--custom {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
}
/* Setas da galeria (sobre o slider e no rodapé): Componentes → Galeria (--gal-arrow-*)
   > Componentes → Setas (--splide-arrow-*, as dos Destaques/Eventos) > omissão. */
.core-gallery-splide .splide__arrow,
.core-gallery-arrow {
  pointer-events: all;
  background: var(--gal-arrow-bg, var(--splide-arrow-bg, rgba(0,0,0,0.55)));
  color: var(--gal-arrow-color, var(--splide-arrow-color, #fff));
  padding: var(--gal-arrow-padding, var(--splide-arrow-padding, 10px));
  border-width: var(--splide-arrow-border-width, 0);
  border-style: solid;
  border-color: var(--splide-arrow-border-color, transparent);
  border-radius: var(--gal-arrow-border-radius, var(--splide-arrow-radius, 50%));
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--splide-arrow-size, auto);
  height: var(--splide-arrow-size, auto);
  min-width: 44px;
  min-height: 44px;
  line-height: 1;
  transition: background 0.2s, color 0.2s, opacity 0.2s, border-color 0.2s;
  opacity: var(--splide-arrow-opacity, 0.9);
}
.core-gallery-splide .splide__arrow:hover:not(:disabled),
.core-gallery-arrow:hover:not(:disabled) {
  opacity: var(--splide-arrow-opacity-hover, 1);
  background: var(--gal-arrow-bg, var(--splide-arrow-bg-hover, var(--splide-arrow-bg, rgba(0,0,0,0.8))));
  color: var(--gal-arrow-color, var(--splide-arrow-color-hover, var(--splide-arrow-color, #fff)));
  border-color: var(--splide-arrow-border-color-hover, var(--splide-arrow-border-color, transparent));
}
.core-gallery-splide .splide__arrow:disabled,
.core-gallery-arrow:disabled {
  opacity: var(--splide-arrow-opacity-disabled, 0.35);
  cursor: default;
}
.core-gallery-splide .splide__arrow i,
.core-gallery-arrow i {
  font-size: var(--gal-arrow-icon-size, var(--splide-arrow-icon-size, 1rem));
  color: inherit;
  pointer-events: none;
}
/* Foco: anel duplo (branco junto ao controlo, escuro por fora) — contraste em fundo claro,
   escuro e sobre fotografias (WCAG 2.4.13) */
.core-gallery-splide .splide__arrow:focus-visible,
.core-gallery-arrow:focus-visible,
.core-gallery-splide .splide__pagination__page:focus-visible,
.core-gallery-controls .splide__pagination__page:focus-visible {
  outline: 3px solid #111827;
  outline-offset: 3px;
  box-shadow: 0 0 0 3px #fff;
}
/*core gallery splide - end*/

/*default buttons*/
.ac-primary-btn-wrapper {
    display: flex;
    align-items: center
}
.ac-primary-btn {
    display: flex;
    width: 100%;
    border: 5px #30554d solid;
    border-radius: var(--core-btn-radius, 5px);
    padding: 10px 15px;
}
.ac-secondary-btn {
    display: flex;
    width: 100%;
    border: none;
    border-radius: 0px;
    padding: 10px 15px;
}
/*default buttons - fim*/
/*ticker*/
[id^="avisosTicker"] {
    max-width: 1320px;
    margin: auto;
}
/*ticker - fim*/
/*lightbox*/
.gslide-image img {
    max-width: 86%; /* ou 800px, por exemplo */
    max-height: 86vh;
    object-fit: contain;
    margin: auto;
}

/*lightbox - fim*/
/* executivo styles moved to modulos/executivo/assets/executivo.css */

/*freguesias*/
.freguesia-archive-item-inside {
    padding: 30px;
    background: #fff;
}
.freguesia-archive-title h2 {
    font-size: 1.5em;
    margin-top: 15px;
    text-align: center;   
}
/*freguesias - fim*/

/*mediacenter*/
.mediacenter-archive-item-inside {
    padding: 30px;
    background: #fff;
}
.mediacenter-archive-title h2 {
    font-size: 1.5em;
    margin-top: 15px;
    text-align: center;
}
.mc-galeria-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* ajustável */
    gap: 1rem;
}

.mc-galeria-item {
    display: flex;
    flex-direction: column;
}

.mc-galeria-thumb {
    position: relative;
    width: 100%;
    padding-top: 100%; /* 1:1 ratio */
    overflow: hidden;
    border-radius: var(--core-radius, 8px);
}

.mc-galeria-thumb img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.mc-galeria-item figcaption {
    margin-top: 0.5rem;
    text-align: center;
    font-size: max(var(--core-font-min, 0px), 0.9rem);
    color: #333;
}
/*medaicenter - fim*/


/* usearch - start */
/* Formulários de pesquisa ([usearch], e por arrasto [event_search]). Três
   designs (Pesquisa → Formulário → Design, ou o atributo design), todos com a
   mesma base acessível:
   - Contorno (.usearch--classic): campos com contorno, etiqueta por cima;
   - Painel (.usearch--material): os mesmos campos num cartão;
   - Barra (.usearch--barra): tipo + texto numa só caixa, botão ao lado.
   Base: etiquetas visíveis e a 1rem, campos de 48px, contorno ≥ 3:1 (1.4.11),
   texto ≥ 7:1, foco com outline de 3px na cor dos links (fica visível também
   no modo de alto contraste, ao contrário de uma box-shadow), checkbox de 24px
   num alvo de 44px. Os controlos levam "#top form.usearch" — as regras do
   Enfold ("#top .main_color input[type=…]") ganhavam às de ".usearch". As
   variáveis ficam em :root para o formulário dos Eventos as usar também. */
:root {
  --usearch-border: #6b7280;        /* 4.8:1 em branco */
  --usearch-border-width: 2px;
  --usearch-radius: var(--core-radius, 6px); /* campos: Estilo Global (não os Botões) */
  /* O cartão (Painel) não fica em pílula com raios grandes: máx. 16px. */
  --usearch-panel-radius: min(var(--usearch-radius), 16px);
  --usearch-height: 3rem;           /* 48px */
  --usearch-focus: var(--core-color-link, var(--core-color-primary, #0b5394));
  --usearch-label: #1f2937;         /* 14:1 */
  --usearch-text: #111827;
  --usearch-placeholder: #4b5563;   /* 7.6:1 */
  --usearch-bg: #fff;
  --usearch-type-bg: #f3f4f6;       /* seletor de tipo dentro da Barra */
  --usearch-panel-bg: #fff;
  --usearch-panel-border: #d1d5db;
  --usearch-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23111827' stroke-width='2'/%3E%3C/svg%3E");
}

.usearch {
  width: 100%;
  display: grid;
  gap: 1rem;
}

/* Layout variants */
.usearch.usearch--inline {
  align-items: end;
  grid-template-columns: 1fr auto;
}
.usearch.usearch--sidebar {
  grid-template-columns: 1fr;
}

/* Etiquetas */
:is(#top, body) form.usearch label {
  display: block;
  margin: 0 0 .375rem;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--usearch-label);
}
.usearch__sr,
:is(#top, body) form.usearch .usearch__sr {
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Campos */
:is(#top, body) form.usearch input[type="search"],
:is(#top, body) form.usearch input[type="text"],
:is(#top, body) form.usearch input[type="date"],
:is(#top, body) form.usearch input[type="number"],
:is(#top, body) form.usearch input[type="datetime-local"],
:is(#top, body) form.usearch select {
  width: 100%;
  height: auto;
  min-height: var(--usearch-height);
  margin: 0;
  padding: .625rem .875rem;
  font-size: 1rem;
  line-height: 1.4;
  color: var(--usearch-text);
  background-color: var(--usearch-bg);
  border: var(--usearch-border-width) solid var(--usearch-border);
  border-radius: var(--usearch-radius);
  box-shadow: none;
}
:is(#top, body) form.usearch select {
  padding-right: 2.5rem;
  -webkit-appearance: none;
  appearance: none;
  background-image: var(--usearch-chevron);
  background-repeat: no-repeat;
  background-position: right .875rem center;
  cursor: pointer;
}
:is(#top, body) form.usearch input::placeholder { color: var(--usearch-placeholder); opacity: 1; }
:is(#top, body) form.usearch input:focus,
:is(#top, body) form.usearch select:focus {
  outline: 3px solid var(--usearch-focus);
  outline-offset: 2px;
  border-color: var(--usearch-focus);
  box-shadow: none;
}

/* Painel (era "Material"): o cartão à volta dos campos */
.usearch.usearch--material {
  padding: 1.875rem;
  background: var(--usearch-panel-bg);
  border: 1px solid var(--usearch-panel-border);
  border-radius: var(--usearch-panel-radius);
}
.usearch.usearch--material.usearch--sidebar > div { margin-bottom: 0; }
/* Sidebar estreita: menos padding para os campos não ficarem cortados. */
.usearch.usearch--material.usearch--sidebar { padding: 1.25rem; }
/* Bloco condicional (ex.: De / Até / Incluir terminados) agrupa vários campos
   num só filho da grelha: sem isto ficavam colados uns aos outros. O JS só
   alterna display entre '' e 'none', por isso o grid mantém-se. */
.usearch-conditional {
  display: grid;
  gap: 1rem;
}
:is(#top, body) form.usearch select { text-overflow: ellipsis; }
.usearch.usearch--material .md-select,
.usearch.usearch--material .md-input { position: relative; }
/* Etiquetas no fluxo normal, por cima do campo. Antes eram "flutuantes" (sobre
   a borda ou dentro do campo, a 12px): o AccessMonitor assinalava "label não
   visível ou posicionada incorretamente" e o texto ficava abaixo do mínimo. */
:is(#top, body) form.usearch.usearch--material .md-select label,
:is(#top, body) form.usearch.usearch--material .md-input label {
  position: static;
  transform: none;
  margin: 0 0 .375rem;
  padding: 0;
  background: none;
  pointer-events: auto;
}

/* Painel em linha */
.usearch.usearch--material.usearch--inline {
  grid-template-columns: 1fr;
}

/* Barra: [tipo ▾ | texto] + botão. Cada controlo com a sua etiqueta à vista
   por cima (.usearch__barcell = etiqueta + controlo); o contorno é dos
   próprios controlos (cantos só nas pontas), para as etiquetas ficarem fora
   da caixa. O tipo vem antes no DOM (ordem do foco = ordem visual). Os
   filtros extra (taxonomias, datas) seguem por baixo, em grelha. */
.usearch.usearch--barra {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
  align-items: end;
}
.usearch.usearch--barra > .usearch__barfield,
.usearch.usearch--barra > .usearch-conditional { grid-column: 1 / -1; }
.usearch__row {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  align-items: flex-end; /* o botão alinha com os controlos, não com as etiquetas */
}
.usearch__bar {
  display: flex;
  flex: 1 1 20rem;
  min-width: 0;
  align-items: flex-end;
}
.usearch__barcell {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.usearch__barcell--type { flex: 0 0 auto; max-width: 45%; }
.usearch__barcell--text { flex: 1 1 auto; }
:is(#top, body) form.usearch .usearch__bar select,
:is(#top, body) form.usearch .usearch__bar input[type="search"] {
  width: 100%;
  min-height: var(--usearch-height);
  border: var(--usearch-border-width) solid var(--usearch-border);
  border-radius: 0;
}
/* Tipo à esquerda: cantos à esquerda, sem borda direita (a do texto faz a divisão). */
:is(#top, body) form.usearch .usearch__bar select {
  font-weight: 600;
  background-color: var(--usearch-type-bg);
  border-right-width: 0;
  border-radius: var(--usearch-radius) 0 0 var(--usearch-radius);
}
:is(#top, body) form.usearch .usearch__bar input[type="search"] {
  min-width: 0;
  background-color: var(--usearch-bg);
  border-radius: 0 var(--usearch-radius) var(--usearch-radius) 0;
}
/* Sem seletor de tipo: o texto é a caixa inteira. */
:is(#top, body) form.usearch .usearch__bar .usearch__barcell--text:only-child input[type="search"] {
  border-radius: var(--usearch-radius);
}
/* Foco dentro da caixa (cada controlo mostra o seu). */
:is(#top, body) form.usearch .usearch__bar input:focus,
:is(#top, body) form.usearch .usearch__bar select:focus { outline-offset: -3px; }
.usearch__row > .core-button,
.usearch__row > button[type="submit"] { flex: 0 0 auto; }
@media (max-width: 600px) {
  .usearch__row > .core-button,
  .usearch__row > button[type="submit"] { flex: 1 1 100%; justify-content: center; }
}

/* Grouping spacing for inline layout */
.usearch.usearch--inline > div,
.usearch.usearch--inline > button,
.usearch.usearch--inline > select,
.usearch.usearch--inline > input {
  margin: 0;
}

/* Checkbox: 24px, num alvo de 44px com a etiqueta */
.usearch-checkbox {
  display: flex;
  align-items: center;
  gap: .625rem;
  min-height: 44px;
}
:is(#top, body) form.usearch .usearch-checkbox input[type="checkbox"] {
  -webkit-appearance: checkbox;
  appearance: checkbox;
  width: 24px;
  height: 24px;
  min-height: 0;
  margin: 0;
  padding: 0;
  flex-shrink: 0;
  accent-color: var(--usearch-focus);
  cursor: pointer;
}
:is(#top, body) form.usearch .usearch-checkbox input[type="checkbox"]:focus-visible {
  outline: 3px solid var(--usearch-focus);
  outline-offset: 2px;
}
:is(#top, body) form.usearch .usearch-checkbox label {
  display: inline;
  margin: 0;
  font-weight: 400;
  cursor: pointer;
}

@media (prefers-reduced-motion: reduce) {
  .usearch * { transition: none !important; }
}
/* usearch - end */

/*custom loops - search*/
.search-result-item {
      
    margin-bottom: 20px;
    width: 100%;
}

.search-result-item .search-result-image a {
    display: block; /* Makes the image area a block-level link */
    text-decoration: none; /* Removes default link styling */
    height: 100%;
}

.search-result-item .search-result-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    
}

.search-result-item a:hover {
    opacity: 0.8; /* Visual cue for hover interaction */
}
.search-result-content {
    display: flex;
    align-content: center;
    flex-flow: column;
    justify-content: center;
    padding: 20px 30px;
}
.search-result-content h2 {
    font-size: 1.5em
}
/*custom loops - search - fim*/

/*search results page*/
.custom-search-results-wrapper {
    display: flex;
}
.custom-search-results {
    width: 100%
}
.custom-search-results .pagination {
    text-align: center;
}
/* search result card - imagem quadrada de largura fixa, alinhada ao topo:
   não acompanha a altura do texto (com stretch, um título em 2 linhas dava
   uma imagem maior do que um em 1 linha). */
.search-result-card[class*="-card--layout-b"] [class*="-card__inner"] {
    --card-b-media-width: 120px;
    align-items: start;
}
.search-result-card[class*="-card--layout-b"] [class*="-card__media"] {
    align-self: start;
    aspect-ratio: 1 / 1;
}

.search-results-list {
    display: flex;
    flex-direction: column;
    gap: var(--core-gap, 1rem);
}
.search-results-list [class*="-card__title"] {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: var(--title-lines, 2);
    line-clamp: var(--title-lines, 2);
    overflow: hidden;
}
.search-results-summary {
    margin-bottom: var(--core-gap, 1rem);
    font-size: 1rem; /* era 0.9rem + opacity .75 — abaixo de 16px e contraste reduzido */
    color: var(--core-color-text-muted, #595959);
}
/*search results page - fim*/



/* Responsive adjustments */
@media (max-width: 1024px) {
    .usearch.usearch--material.usearch--inline {
        flex-wrap: wrap;
    }
    /*destaques opcao a*/
    .adsi-destaques.adsi-destaques-grelha-opcaoa {
        grid-template-columns: repeat(4, 1fr);  
        grid-template-areas: 
            "destaque-a destaque-a destaque-a destaque-a"
            "destaque-b destaque-b destaque-c destaque-c"
            "destaque-d destaque-d destaque-e destaque-e"; 
        grid-auto-rows: auto;
        gap: 30px;
    }
    /*destaques opcao a - fim*/

    /*destaques opcao b*/
    .adsi-destaques.adsi-destaques-grelha-opcaob {
        grid-template-columns: repeat(4, 1fr);  
        grid-template-areas: 
            "destaque-a destaque-a destaque-a destaque-a"
            "destaque-b destaque-b destaque-c destaque-c"
            "destaque-d destaque-d destaque-e destaque-e"; 
        grid-auto-rows: auto;
        gap: 30px;
    }
    /*destaques opcao b - fim*/
}

@media (max-width: 768px) {
    /*destaques opcao a*/
    .adsi-destaques.adsi-destaques-grelha-opcaoa {
        grid-template-columns: repeat(1, 1fr);  
        grid-template-areas: 
            "destaque-a"
            "destaque-b"
            "destaque-c" 
            "destaque-d" 
            "destaque-e"; 
        grid-auto-rows: auto;
        gap: 30px;
    }
    /*destaques opcao a - fim*/

    /*destaques opcao b*/
    .adsi-destaques.adsi-destaques-grelha-opcaob {
        grid-template-columns: repeat(1, 1fr);  
        grid-template-areas: 
            "destaque-a"
            "destaque-b"
            "destaque-c" 
            "destaque-d" 
            "destaque-e"; 
        grid-auto-rows: auto;
        gap: 30px;
    }
    /*destaques opcao a - fim*/
    
    .adsi-destaques {
        grid-template-columns: 1fr; /* Single column layout on smaller screens */
        gap: 20px; /* Adjust gap for smaller screens */
    }
    .adsi-destaque-first .adsi-destaque-image img {
        height: auto; /* Adjust image height to auto on small screens */
       
    }
}
/*MODULO DE DESTAQUES - FIM*/

/*bootstrap*/
/* Main Container */
.main-content-wrapper {
    display: flex;
    flex-direction: column;
    max-width: 1200px;
    width: 100%;
    margin: 0 auto;
    gap: 50px;
    padding: 50px 0;
    box-sizing: border-box;
}

/* Stacked (mobile): sidebar sempre a 100% independentemente do --core-sidebar-width */
.main-sidebar {
    width: 100%;
    max-width: 100%;
}

/* Responsive Layout - Tablet e Desktop */
@media (min-width: 992px) {
    .usearch.usearch--material.usearch--inline {
        grid-template-columns: 1fr 1fr;
    }
    
    /*balcao online*/
    
    .borec-item-doc-complete {
        grid-template-columns: 1fr 150px;
    }
    .borec-item-doc-right {
        flex-flow: column;
        gap: 5px;
    }
    
    /*balcao online - fim*/
    
    .main-content-wrapper {
        flex-direction: row;
    }
    
    /* Sidebar positioning - apenas em tablet landscape e desktop */
    .main-content-wrapper.sidebar-left {
        flex-direction: row-reverse;
    }
    .main-content-wrapper.sidebar-right {
        flex-direction: row;
    }
    
    /* Legacy classes (deprecated) */
    .main-content-wrapper.main-content-wrapper-sidebar-left {
        flex-direction: row;
    }
    .main-content-wrapper.main-content-wrapper-sidebar-right {
        flex-direction: row-reverse;
    }
    
    .main-sidebar {
        flex: 0 0 var(--core-sidebar-width, 33.333%);
        max-width: var(--core-sidebar-width, 33.333%);
        margin-bottom: 0;
    }
    .main-content {
        flex: 1;
        min-width: 0;
    }

/* Larger Screens Adjustments */
    
    .bo-duas-colunas-grid {        
        grid-template-columns: 1fr 1fr;
    }
    
    /*reunioes*/
    .reuniao-archive-item-inside {
        grid-template-columns: 1fr 3fr;        
    }
    /*reunioes - fim*/
    
    .adsi-slide-item-caption.adsi-slide-item-caption-fundo {
        text-align: left
    }
}

/* Custom Archive Pages - espaçamento vertical base (mobile) */
.custom-archive-page {
    display: flex;
    flex-direction: column;
    row-gap: 1.5rem;
}

/* Larger Screens Adjustments */


@media (min-width: 1024px) {

    
    /* Custom Archive Pages - layout base */
    .custom-archive-page {
        display: grid;
        gap: var(--core-gap, 1.5rem); /* Usa o gap global padrão (24px) */
    }

    /* Arquivo de serviços - Layouts responsivos com diferentes colunas */
    .custom-archive-page.core-cols-2 {
        grid-template-columns: repeat(2, 1fr);
    }

    .custom-archive-page.core-cols-3 {
        grid-template-columns: repeat(3, 1fr);
    }

    .custom-archive-page.core-cols-4 {
        grid-template-columns: repeat(4, 1fr);
    }

    /*archive pages*/
    .freguesias-archive-page, .mediacenter-archive-page {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 50px;
    }
    /*archive pages - fim*/

    /*mediacenter*/
    .mc-galeria-grid {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr;
        gap: 30px;
    }

}

@media (min-width: 1280px) {
    .usearch.usearch--material.usearch--inline {
        grid-template-columns: 1fr 1fr 1fr auto;
    }

    .main-content-wrapper {
        max-width: var(--core-container-max);
    }
}
/*bootstrap - end*/

/* CORE DOCUMENT LINKS (CoreDocumentLinks) — lista de links/ficheiros de um item.
   .pdm-doc-links / .pdm-link-pill mantidos como alias do módulo PDM (histórico). */
.core-doc-links,
.pdm-doc-links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--core-spacing-sm, 8px);
}

.core-doc-link-pill,
.pdm-link-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--core-font-size-xs, 0.75rem);
    font-weight: 500;
    color: var(--core-color-primary, #2c5f8d);
    background: var(--core-color-gray-light, #f5f5f5);
    border: var(--core-border-width, 1px) solid var(--core-color-gray, #ccc);
    border-radius: var(--core-border-radius-full, 9999px);
    padding: 7px 14px;
    text-decoration: none;
}

.core-doc-link-pill:hover,
.pdm-link-pill:hover {
    background: var(--core-color-primary, #2c5f8d);
    color: var(--core-color-white, #fff);
    border-color: var(--core-color-primary, #2c5f8d);
}

/* CORE CONTACT BOX (CoreContactBox) — caixa de contacto genérica (conteúdo ou sidebar). */
.core-contact-box {
    padding: 0 0 var(--core-spacing-2xl, 64px);
}

.main-sidebar .core-contact-box,
.widget-area.secondary .core-contact-box {
    padding: 0;
}

.core-contact-box-inner {
    background: var(--core-contact-box-bg, var(--core-color-primary, #2c5f8d));
    color: var(--core-contact-box-color, var(--core-color-white, #fff));
    border-radius: var(--core-contact-box-radius, var(--core-radius, var(--core-border-radius-lg, 16px)));
    padding: var(--core-contact-box-padding, var(--core-spacing-lg, 32px));
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    gap: var(--core-spacing-md, 24px);
}

.main-sidebar .core-contact-box-inner,
.widget-area.secondary .core-contact-box-inner {
    grid-template-columns: 1fr;
}

.core-contact-box-title {
    color: var(--core-contact-box-title-color, var(--core-contact-box-color, var(--core-color-white, #fff)));
    margin: 0 0 var(--core-spacing-sm, 8px);
}

.core-contact-box-text {
    margin: 0;
    font-size: var(--core-font-size-sm, 0.875rem);
    line-height: 1.6;
    opacity: 0.9;
}

.core-contact-box-details {
    display: flex;
    flex-direction: column;
    gap: var(--core-spacing-sm, 8px);
}

.core-contact-box-item {
    display: flex;
    align-items: center;
    gap: var(--core-spacing-sm, 8px);
    font-size: 1rem;
    min-height: 44px;
    min-width: 44px;
    padding: var(--core-spacing-xs, 4px) var(--core-spacing-xs, 4px);
    margin: calc(var(--core-spacing-xs, 4px) * -1);
    border-radius: var(--core-radius-sm, var(--core-border-radius-sm, 8px));
}

a.core-contact-box-item {
    color: inherit;
    text-decoration: none;
}

a.core-contact-box-item:hover,
a.core-contact-box-item:focus-visible {
    background: rgba(255, 255, 255, 0.12);
    text-decoration: underline;
}

/* CORE SCHEDULE BOX (CoreScheduleBox) — reutiliza o invólucro .core-contact-box; lista
   termo/descrição (<dl>) em vez de linhas ícone+valor, para texto mais longo. */
.core-schedule-box-inner {
    background: var(--core-contact-box-bg, var(--core-color-primary, #2c5f8d));
    color: var(--core-contact-box-color, var(--core-color-white, #fff));
    border-radius: var(--core-contact-box-radius, var(--core-radius, var(--core-border-radius-lg, 16px)));
    padding: var(--core-contact-box-padding, var(--core-spacing-lg, 32px));
}

.core-schedule-box-list {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--core-spacing-md, 24px);
}

.core-schedule-box-item + .core-schedule-box-item {
    padding-top: var(--core-spacing-md, 24px);
    border-top: 1px solid rgba(255, 255, 255, 0.2);
}

.core-schedule-box-item-title {
    margin: 0 0 var(--core-spacing-xs, 4px);
    font-size: 1rem;
    font-weight: 700;
}

.core-schedule-box-item-text {
    margin: 0;
    font-size: 1rem;
    line-height: 1.6;
    opacity: 0.9;
}

@media (max-width: 640px) {
    .core-contact-box-inner {
        grid-template-columns: 1fr;
    }
}

/* CORE PAGINATION (inspired by Astra) */
/* Works with WP core markup: .navigation.pagination > .nav-links > .page-numbers */
.navigation.pagination {
    display: inline-block;
    width: 100%;
    padding-top: 2em;
    text-align: center;
}
.navigation.pagination .nav-links {
    display: inline-block;
    width: 100%;
}
.navigation.pagination .page-numbers {
    display: inline-block;
    width: auto;
    min-width: 40px;
    min-height: 40px;
    line-height: 40px;
    font-size: 16px;
    font-weight: 500;
    color: var(--ast-global-color-2, inherit);
}
.navigation.pagination a.page-numbers,
.nav-links a.page-numbers {
    color: var(--ast-global-color-2, inherit);
}
.navigation.pagination a.page-numbers:hover,
.navigation.pagination a.page-numbers:focus,
.navigation.pagination > .page-numbers:hover:not(.dots),
.navigation.pagination > .page-numbers.current {
    color: var(--ast-global-color-1, inherit);
}
.navigation.pagination .prev.page-numbers,
.navigation.pagination .next.page-numbers {
    padding: 0 1.5em;
    height: 40px;
    line-height: 40px;
}
.navigation.pagination .prev.page-numbers { float: left; }
.navigation.pagination .next.page-numbers { float: right; }

/* Default shape adjustments similar to Astra */
.ast-pagination-default .post-page-numbers.current .page-link,
.ast-pagination-default .navigation.pagination .page-numbers.current {
    border-radius: var(--core-radius-sm, 2px);
}

/* Icon sizing alignment for potential SVG arrows */
.navigation.pagination .prev svg,
.navigation.pagination .next svg {
    height: 16px;
    position: relative;
    top: 0.2em;
}
.navigation.pagination .prev svg { margin-right: 0.3em; }
.navigation.pagination .next svg { margin-left: 0.3em; }

/* Responsive tweaks */
@media (max-width: 544px) {
    .navigation.pagination .next:focus,
    .navigation.pagination .prev:focus {
        width: 100% !important;
    }
}
@media (max-width: 420px) {
    .navigation.pagination .prev.page-numbers,
    .navigation.pagination .next.page-numbers {
        width: 100%;
        text-align: center;
        margin: 0;
    }
    .navigation.pagination .next.page-numbers { margin-top: 10px; }
    .navigation.pagination .prev.page-numbers { margin-bottom: 10px; }
}

/* ===== CoreGallery: antes de o Splide arrancar ===== */
/* O CSS do Splide esconde a galeria (visibility: hidden) até ao JS — no modo convidado do
   LiteSpeed, só depois de uma interação, e sem JS nunca. Mostra-se já o primeiro ecrã de
   imagens com o tamanho que o Splide lhes vai dar (variáveis postas pelo SplideSlider); as
   setas, o botão e a paginação só aparecem quando funcionam. Substitui o preloader, que
   tapava a imagem até 1,5 s depois de o slider arrancar. */
.core-gallery-splide { position: relative; }
.core-gallery-splide:not(.is-initialized) { visibility: visible; }
.core-gallery-splide:not(.is-initialized) .splide__list { gap: var(--gal-gap, 0px); }
.core-gallery-splide:not(.is-initialized) .splide__slide {
  flex: 0 0 calc((100% - (var(--gal-per-page, 1) - 1) * var(--gal-gap, 0px)) / var(--gal-per-page, 1));
  aspect-ratio: var(--gal-slide-ratio, 16 / 9);
}
.core-gallery-splide:not(.is-initialized) .splide__arrows,
.core-gallery-splide:not(.is-initialized) .core-gallery-lightbox-btn,
.core-gallery-splide:not(.is-initialized) .core-gallery-pag-numeric,
.core-gallery-splide:not(.is-initialized) .core-gallery-pag-progress-track,
.core-gallery-slider:not(.is-ready) .core-gallery-controls {
  visibility: hidden;
}

/* ========================================
   CoreButtons - Global Button System
   ======================================== */

/* Base button styles */
.core-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.625rem 1.25rem;
  font-size: var(--core-btn-font-size, 1rem);
  font-weight: var(--core-btn-font-weight, 500);
  line-height: 1.5;
  text-decoration: none;
  border: var(--core-btn-border-width, 2px) solid transparent;
  border-radius: var(--core-btn-radius, 0.375rem);
  cursor: pointer;
  transition: all 0.2s ease-in-out;
  white-space: nowrap;
  text-transform: var(--core-btn-text-transform, none);
  letter-spacing: var(--core-btn-letter-spacing, normal);
}

.core-button:focus {
  outline: 2px solid #2271b1;
  outline-offset: 2px;
}

/* Button sizes */
.core-button--sm {
  padding: 0.375rem 0.875rem;
  font-size: max(var(--core-font-min, 0px), 0.875rem);
}

.core-button--md {
  padding: 0.625rem 1.25rem;
  font-size: 1rem;
}

.core-button--lg {
  padding: 0.875rem 1.75rem;
  font-size: 1.125rem;
}

/* Full width */
.core-button--full-width {
  width: 100%;
}

/* Icon positioning — a ordem é definida no HTML (build_content), o CSS mantém row */
.core-button--with-icon.core-button--icon-left,
.core-button--with-icon.core-button--icon-right {
  flex-direction: row;
}

/* Tipos: ".core-button.core-button--x" (0,2,0) para ganhar a regras de
   tema sobre <a>/<span> genéricos — ex.: Enfold ".main_color a { color;
   border-color }" (0,1,1) pintava a borda e o texto com as cores do tema. */
/* Primary button */
.core-button.core-button--primary {
  background: var(--core-btn-color, var(--core-color-primary, #2c5f8d));
  color: var(--core-color-white);
  border-color: var(--core-btn-color, var(--core-color-primary, #2c5f8d));
}

.core-button.core-button--primary:hover,
.core-button.core-button--primary:focus {
  background: color-mix(in srgb, var(--core-btn-color, var(--core-color-primary, #2c5f8d)) 85%, black);
  border-color: color-mix(in srgb, var(--core-btn-color, var(--core-color-primary, #2c5f8d)) 85%, black);
  color: var(--core-color-white);
}

/* Secondary button */
.core-button.core-button--secondary {
  background: var(--core-color-secondary);
  color: var(--core-color-white);
  border-color: var(--core-color-secondary);
}

.core-button.core-button--secondary:hover,
.core-button.core-button--secondary:focus {
  background: color-mix(in srgb, var(--core-color-secondary) 85%, black);
  border-color: color-mix(in srgb, var(--core-color-secondary) 85%, black);
  color: var(--core-color-white);
}

/* Outline Dark button */
.core-button.core-button--outline-dark {
  background: transparent;
  color: var(--core-btn-color, var(--core-color-primary, #2c5f8d));
  border-color: var(--core-btn-color, var(--core-color-primary, #2c5f8d));
}

.core-button.core-button--outline-dark:hover,
.core-button.core-button--outline-dark:focus {
  background: var(--core-btn-color, var(--core-color-primary, #2c5f8d));
  color: var(--core-color-white);
}

/* Outline Light button */
.core-button.core-button--outline-light {
  background: transparent;
  color: var(--core-color-white);
  border-color: var(--core-color-white);
}

.core-button.core-button--outline-light:hover,
.core-button.core-button--outline-light:focus {
  background: var(--core-color-white);
  color: var(--core-btn-color, var(--core-color-primary, #2c5f8d));
}

/* ========================================
   Button Hover Styles (Configurable via ACF)
   ======================================== */

/* Hover Style 1: Lift - Move button up with shadow */
.button-hover-lift.core-button:hover,
.button-hover-lift.core-button:focus,
.button-hover-lift[class*="-card--layout-f"]:hover,
.button-hover-lift[class*="-card--layout-f"]:focus-within {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.button-hover-lift.core-button:active {
  transform: translateY(0);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* Hover Style 2: Scale - Increase size slightly */
.button-hover-scale.core-button:hover,
.button-hover-scale.core-button:focus,
.button-hover-scale[class*="-card--layout-f"]:hover,
.button-hover-scale[class*="-card--layout-f"]:focus-within {
  transform: scale(1.05);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}

.button-hover-scale.core-button:active {
  transform: scale(1.02);
}

/* Hover Style 3: Glow - Add glowing effect */
.button-hover-glow.core-button:hover,
.button-hover-glow.core-button:focus {
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.1);
}

.button-hover-glow.core-button--primary:hover,
.button-hover-glow.core-button--primary:focus,
.button-hover-glow[class*="-card--layout-f"]:hover,
.button-hover-glow[class*="-card--layout-f"]:focus-within {
  box-shadow: 0 0 20px color-mix(in srgb, var(--core-color-primary) 40%, transparent),
              0 0 40px color-mix(in srgb, var(--core-color-primary) 20%, transparent);
}

.button-hover-glow.core-button--secondary:hover,
.button-hover-glow.core-button--secondary:focus {
  box-shadow: 0 0 20px color-mix(in srgb, var(--core-color-secondary) 40%, transparent),
              0 0 40px color-mix(in srgb, var(--core-color-secondary) 20%, transparent);
}

/* Hover Style 4: Gradient - Fade consistente em todos os tipos de botão */
.button-hover-gradient.core-button {
  position: relative;
  overflow: hidden;
  /* Não sobrescreve a transição base — apenas o ::before anima */
}

.button-hover-gradient.core-button::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, var(--core-color-primary) 0%, var(--core-color-secondary) 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 0;
  border-radius: inherit;
}

.button-hover-gradient.core-button:hover::before,
.button-hover-gradient.core-button:focus::before,
.button-hover-gradient[class*="-card--layout-f"]:hover::before,
.button-hover-gradient[class*="-card--layout-f"]:focus-within::before {
  opacity: 1;
}

/* Conteúdo do botão fica acima do gradiente */
.button-hover-gradient.core-button .core-button__text,
.button-hover-gradient.core-button .core-button__icon {
  position: relative;
  z-index: 1;
}

/* Cor do texto e bordo no hover — uniforme para todos os tipos */
.button-hover-gradient.core-button:hover,
.button-hover-gradient.core-button:focus,
.button-hover-gradient[class*="-card--layout-f"]:hover,
.button-hover-gradient[class*="-card--layout-f"]:focus-within {
  color: var(--core-color-white);
  border-color: transparent;
}

/* Hover Style 5: Minimal - Just darken color (no transform) */
/* No additional styles needed - color darkening already applied in base button styles */

/* Disabled state */
.core-button:disabled,
.core-button.disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* Accessibility - Reduced Motion */
@media (prefers-reduced-motion: reduce) {
  .core-button,
  [class*="-card--layout-f"] {
    transition: none;
  }
  
  .core-button:hover,
  .core-button:focus,
  [class*="-card--layout-f"]:hover,
  [class*="-card--layout-f"]:focus-within {
    transform: none;
  }
}

/* ========================================
   CoreButtons - Fim
   ======================================== */

/* Screen-reader only utility */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border: 0;
}

/* ========================================
   CLASSES UTILITÁRIAS GLOBAIS
   ======================================== */

/**
 * Classes de layout transversais usadas em vários módulos
 * Centraliza a gestão de espaçamento e layouts comuns
 */

/* Lista vertical com gap global dividido por 2 */
.reunioes-list,
.doc-recent__list,
.glossario-list {
    display: flex;
    flex-direction: column;
    gap: calc(var(--core-gap, 24px) / 2);
}

/* =============================================
   CoreModuleWrapper
   ============================================= */

.core-module {
    background-color: var(--core-module-bg, transparent);
}

.core-module__wrapper {
    max-width: var(--core-module-max-width, none);
    margin-left: auto;
    margin-right: auto;
}

/* Ações (botão, setas) centradas na vertical com o bloco de texto —
   eyebrow + título + subtítulo ficam com o centro perto do título.
   --core-module-header-align: flex-end repõe o alinhamento pela base. */
.core-module__header {
    display: flex;
    align-items: var(--core-module-header-align, center);
    justify-content: space-between;
    gap: var(--core-module-header-gap, 1rem);
    margin-bottom: var(--core-module-header-margin-bottom, var(--core-module-gap, var(--core-gap, 1.5rem)));
}

.core-module__header--center .core-module__header-text { text-align: center; }
.core-module__header--right  .core-module__header-text { text-align: right; }

.core-module__header:not(:has(.core-module__header-actions)) .core-module__header-text {
    width: 100%;
}

.core-module__eyebrow {
    display: block;
    font-size: var(--core-module-eyebrow-size, 0.75rem);
    font-weight: var(--core-module-eyebrow-weight, 600);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--core-module-eyebrow-color, var(--core-color-primary));
    margin-bottom: 0.25rem;
}

.core-module__title {
    margin: 0;
    color: var(--core-module-title-color, inherit);
    font-size: var(--core-module-title-size, 1.5rem);
    font-weight: var(--core-module-title-weight, 700);
    line-height: 1.2;
}

.core-module__subtitle {
    margin: 0.375rem 0 0;
    color: var(--core-module-subtitle-color, inherit);
    font-size: var(--core-module-subtitle-size, 0.9375rem);
    opacity: 0.75;
}

/* Cabeçalho só para leitores de ecrã (title_visibility = sr-only): o texto
   sai do fluxo; sem ações, o header deixa de ocupar espaço. */
.core-module__header .core-module__header-text--sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.core-module__header--sr-only:not(:has(.core-module__header-actions)) {
    margin-bottom: 0;
}

.core-module__header-actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

.core-module__footer {
    margin-top: var(--core-module-footer-margin-top, var(--core-module-gap, var(--core-gap, 1.5rem)));
}

/* Espaço entre cabeçalho, corpo e rodapé = só --core-module-gap (Apresentação →
   Layout; vazio = --core-gap). Margens dos elementos das pontas somavam-se a ele:
   o subtítulo é um <p> e o tema dá-lhe margem (Astra: .entry-content p
   {margin-bottom:1.5em}, 0,1,1), .destaques-carousel tem margin 2rem 0, os
   controlos do rodapé (eventos/avisos/agenda) margin-top 1.5rem. .core-module à
   frente (0,2,0+) para ganhar a essas regras; o <style> que alguns módulos põem no
   início do corpo não conta como primeiro elemento. Sem título não há wrapper — os
   módulos mantêm as suas margens. */
.core-module .core-module__header-text > :last-child {
    margin-bottom: 0;
}
.core-module .core-module__body > :first-child,
.core-module .core-module__body > :is(style, script):first-child + * {
    margin-top: 0;
}
.core-module .core-module__body > :last-child {
    margin-bottom: 0;
}
.core-module .core-module__footer > * {
    margin-top: 0;
}

/* ---- Leaflet Map ---- */
.core-leaflet-map-outside {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    isolation: isolate;
    margin-block: var(--core-block-margin);
}

.core-leaflet-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.core-leaflet-actions .core-button {
    text-transform: none;
    letter-spacing: normal;
}

/* Dropdown Navegar */
.core-leaflet-navigate {
    position: relative;
}

.core-leaflet-navigate-caret {
    font-size: 0.65em;
    margin-left: 0.2em;
}

.core-leaflet-navigate-menu {
    position: absolute;
    right: 0;
    top: calc(100% + 4px);
    min-width: 160px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: var(--core-radius-sm, 4px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.12);
    list-style: none;
    margin: 0;
    padding: 0.25rem 0;
    z-index: 100;
}

.core-leaflet-navigate-menu li a {
    display: block;
    padding: 0.5em 1em;
    font-size: max(var(--core-font-min, 0px), 0.85rem);
    color: #333;
    text-decoration: none;
    white-space: nowrap;
    transition: background 0.15s ease;
}

.core-leaflet-navigate-menu li a:hover {
    background: var(--core-color-primary-light, #f0f8eb);
    color: var(--core-color-primary, #63ab43);
}

/* ═══════════════════════════════════════════════════
   Animações de Entrada (IntersectionObserver)
   Ativadas via ACF: Apresentação › Animações
   ═══════════════════════════════════════════════════ */

.animate-on-scroll {
    transition-duration: 0.6s;
    transition-timing-function: ease-out;
    transition-property: opacity, transform;
}

.animate-on-scroll.fade-in {
    opacity: 0;
}
.animate-on-scroll.fade-in.is-visible {
    opacity: 1;
}

.animate-on-scroll.slide-up {
    opacity: 0;
    transform: translateY(32px);
}
.animate-on-scroll.slide-up.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.animate-on-scroll.slide-in {
    opacity: 0;
    transform: translateX(-32px);
}
.animate-on-scroll.slide-in.is-visible {
    opacity: 1;
    transform: translateX(0);
}

.animate-on-scroll.zoom-in {
    opacity: 0;
    transform: scale(0.92);
}
.animate-on-scroll.zoom-in.is-visible {
    opacity: 1;
    transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
    .animate-on-scroll {
        transition: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}

/* ── CoreGallery: dots ──────────────────────────────────────── */
/* Alvo de 44×44px (WCAG 2.5.5 — os do Splide têm 8px) com o ponto no ::before. O estado não
   depende só da cor: os inativos são anéis, o ativo é cheio (nos Dots Modernos, também mais
   largo). Sobre a imagem, brancos numa cápsula escura translúcida (contraste em fotografias
   claras, 1.4.11); no rodapé, cinzento-escuro (7,6:1) e a cor de destaque. */
.core-gallery-splide .splide__pagination__page,
.core-gallery-controls .splide__pagination__page {
    position:        relative;
    display:         inline-flex;
    align-items:     center;
    justify-content: center;
    width:           44px;
    height:          44px;
    margin:          0;
    padding:         0;
    border:          0;
    border-radius:   999px;
    background:      transparent;
    opacity:         1;
    transform:       none;
}
.core-gallery-splide .splide__pagination__page::before,
.core-gallery-controls .splide__pagination__page::before {
    content:       "";
    box-sizing:    border-box;
    width:         10px;
    height:        10px;
    border:        2px solid #fff;
    border-radius: 999px;
    background:    transparent;
    transition:    width 0.3s ease, background-color 0.3s ease;
}
.core-gallery-splide .splide__pagination__page.is-active,
.core-gallery-controls .splide__pagination__page.is-active {
    background: transparent;
    transform:  none;
}
.core-gallery-splide .splide__pagination__page.is-active::before {
    background: #fff;
}
.core-gallery-controls .splide__pagination__page::before {
    border-color: #4b5563;
}
.core-gallery-controls .splide__pagination__page.is-active::before {
    border-color: var(--core-carousel-accent, var(--core-color-primary, #2563eb));
    background:   var(--core-carousel-accent, var(--core-color-primary, #2563eb));
}
.core-gallery-splide--pag-moderno .splide__pagination__page.is-active::before,
.core-gallery-controls .is-pag-moderno .splide__pagination__page.is-active::before {
    width: 26px;
}
.core-gallery-splide > .splide__pagination {
    left:          50%;
    right:         auto;
    bottom:        0.5rem;
    width:         max-content;
    max-width:     calc(100% - 1rem);
    padding:       0 0.25rem;
    border-radius: 999px;
    background:    rgba(0, 0, 0, 0.6);
    transform:     translateX(-50%);
}

/* ── CoreGallery: Paginação Numérica ────────────────────────── */
.core-gallery-pag-numeric {
    position: absolute;
    bottom: 0.5em;
    left: 0;
    right: 0;
    z-index: 1;
    text-align: center;
    padding: 0 1em;
    font-size: max(var(--core-font-min, 0px), 0.875rem);
    color: #fff;
    /* Sem fundo, o contraste depende da fotografia: halo escuro à volta das letras. A pill
       (gal_pag_numerica_estilo) garante o contraste em qualquer imagem. */
    text-shadow: 0 0 2px #000, 0 0 4px #000, 0 1px 3px rgba(0, 0, 0, 0.9);
    pointer-events: none;
}
.core-gallery-pag-numeric__current {
    font-weight: 600;
    color: #fff;
}
.core-gallery-pag-numeric__sep { margin: 0 4px; }

/* ── CoreGallery: Barra de Progresso ───────────────────────── */
.core-gallery-pag-progress-track {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: rgba(255, 255, 255, 0.3);
    z-index: 2;
}
.core-gallery-pag-progress-fill {
    height: 100%;
    width: 0%;
    background: var(--core-carousel-accent, var(--core-color-primary, #2563eb));
    transition: width 0.35s ease;
}

/* ── CoreGallery: máximo de dots visíveis (splide-init.js limitDots) ── */
.core-gallery-splide .splide__pagination.is-limited,
.core-gallery-controls .splide__pagination.is-limited {
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: hidden;
    margin-inline: auto;
    pointer-events: auto;
    scrollbar-width: none;
}
.core-gallery-splide .splide__pagination.is-limited::-webkit-scrollbar,
.core-gallery-controls .splide__pagination.is-limited::-webkit-scrollbar { display: none; }
.core-gallery-splide .splide__pagination.is-limited > li,
.core-gallery-controls .splide__pagination.is-limited > li { flex: 0 0 auto; }
.splide__pagination.is-limited.is-more-start {
    -webkit-mask-image: linear-gradient(to right, transparent, #000 24px);
            mask-image: linear-gradient(to right, transparent, #000 24px);
}
.splide__pagination.is-limited.is-more-end {
    -webkit-mask-image: linear-gradient(to left, transparent, #000 24px);
            mask-image: linear-gradient(to left, transparent, #000 24px);
}
.splide__pagination.is-limited.is-more-start.is-more-end {
    -webkit-mask-image: linear-gradient(to right, transparent, #000 24px, #000 calc(100% - 24px), transparent);
            mask-image: linear-gradient(to right, transparent, #000 24px, #000 calc(100% - 24px), transparent);
}

/* ── CoreGallery: rodapé de 3 zonas (setas/paginação fora do slider, como nos Destaques) ── */
.core-gallery-slider { margin-bottom: 30px; }
.core-gallery-slider > .core-gallery-splide { margin-bottom: 0; }
.core-gallery-controls {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 1rem;
    margin-top: 0.75rem;
}
.core-gallery-controls__zone {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}
.core-gallery-controls__left   { justify-content: flex-start; }
.core-gallery-controls__center { justify-content: center; }
.core-gallery-controls__right  { justify-content: flex-end; }
.core-gallery-controls .splide__pagination {
    position: relative; /* referência do offsetLeft no limitDots */
    inset: auto;
    margin: 0;
    padding: 0;
}
.core-gallery-controls .core-gallery-pag-numeric {
    position: static;
    padding: 0;
    font-size: 1rem;
    color: #374151;
    text-shadow: none;
}
.core-gallery-controls .core-gallery-pag-numeric__current { color: #111827; }
.core-gallery-controls .core-gallery-pag-progress-track {
    position: relative;
    width: 10rem;
    height: 4px;
    border-radius: 999px;
    overflow: hidden;
    background: #d1d5db;
}
/* .core-gallery-arrow: ver "Setas da galeria" junto às setas sobre o slider */

/* Botão da lightbox (gal_lightbox_abrir = botao): mesmo aspeto das setas; sobre a imagem
   fica no canto superior direito. */
.core-gallery-lightbox-btn--overlay {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
    z-index: 1;
}

/* Paginação numérica em pill (gal_pag_numerica_estilo = pill) */
.core-gallery-pag-numeric--pill {
    display: inline-flex;
    align-items: center;
    padding: 0.375rem 0.875rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.72); /* texto branco ≥ 8,6:1 mesmo sobre uma fotografia branca (AAA 7:1) */
    color: #fff;
    text-shadow: none;
    line-height: 1.2;
    white-space: nowrap;
}
.core-gallery-splide > .core-gallery-pag-numeric--pill {
    left: 50%;
    right: auto;
    bottom: 0.75rem;
    transform: translateX(-50%);
    padding: 0.375rem 0.875rem;
}
.core-gallery-controls .core-gallery-pag-numeric--pill {
    background: #f3f4f6;
    color: #374151;
    padding: 0.5rem 1rem;
    min-height: 44px;
    box-sizing: border-box;
}
@media (max-width: 480px) {
    .core-gallery-controls { gap: 0.5rem; }
}

/* Rodapé sobre a imagem (gal_controlos_posicao = sobre-baixo | sobre-cima). Faixa escura em
   degradê por baixo dos controlos; os que no rodapé eram escuros sobre branco passam a ter o
   desenho de "sobre a imagem": dots brancos numa cápsula, número branco, pill escura. */
.core-gallery-slider--controls-sobre-baixo,
.core-gallery-slider--controls-sobre-cima { position: relative; }
.core-gallery-slider--controls-sobre-baixo > .core-gallery-controls,
.core-gallery-slider--controls-sobre-cima > .core-gallery-controls {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 2;
    margin: 0;
    padding: 0.75rem;
    pointer-events: none;
}
.core-gallery-slider--controls-sobre-baixo > .core-gallery-controls {
    bottom: 0;
    padding-top: 2rem;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0));
}
.core-gallery-slider--controls-sobre-cima > .core-gallery-controls {
    top: 0;
    padding-bottom: 2rem;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0));
}
[class*="core-gallery-slider--controls-sobre"] .core-gallery-controls__zone > * { pointer-events: auto; }
[class*="core-gallery-slider--controls-sobre"] .core-gallery-controls .splide__pagination {
    padding: 0 0.25rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.6);
}
[class*="core-gallery-slider--controls-sobre"] .core-gallery-controls .splide__pagination__page::before {
    border-color: #fff;
}
#top [class*="core-gallery-slider--controls-sobre"] .core-gallery-controls .splide__pagination__page.is-active::before,
[class*="core-gallery-slider--controls-sobre"] .core-gallery-controls .splide__pagination__page.is-active::before {
    border-color: #fff;
    background: #fff;
}
[class*="core-gallery-slider--controls-sobre"] .core-gallery-controls .core-gallery-pag-numeric,
[class*="core-gallery-slider--controls-sobre"] .core-gallery-controls .core-gallery-pag-numeric__current {
    color: #fff;
    text-shadow: 0 0 2px #000, 0 1px 3px rgba(0, 0, 0, 0.9);
}
[class*="core-gallery-slider--controls-sobre"] .core-gallery-controls .core-gallery-pag-numeric--pill {
    background: rgba(0, 0, 0, 0.72);
    text-shadow: none;
}
[class*="core-gallery-slider--controls-sobre"] .core-gallery-controls .core-gallery-pag-progress-track {
    background: rgba(255, 255, 255, 0.35);
}
/* O botão da lightbox "sobre a imagem" fica no canto de baixo quando os controlos vão para cima */
.core-gallery-slider--controls-sobre-cima .core-gallery-lightbox-btn--overlay {
    top: auto;
    bottom: 0.75rem;
}

@media (prefers-reduced-motion: reduce) {
    .core-gallery-splide .splide__pagination__page::before,
    .core-gallery-controls .splide__pagination__page::before,
    .core-gallery-pag-progress-fill {
        transition: none;
    }
    .core-gallery-splide .splide__spinner {
        animation: none;
    }
}

/* ── GLightbox (todas as lightboxes do plugin) ──────────────── */
/* Botões com 44×44px (WCAG 2.5.5: o "fechar" tinha 35×35 e as setas 40×50), foco com anel
   duplo (o da GLightbox era azul-escuro sobre preto), legendas a 1rem na letra do site
   (eram 0,86em em Arial). A janela recebe o foco ao abrir (core-lightbox.js) mas não é um
   controlo: sem contorno. Com "reduzir movimento" o JS troca o zoom/deslize por fade. */
body .glightbox-clean .gclose {
    width:  44px;
    height: 44px;
}
body .glightbox-clean .gnext,
body .glightbox-clean .gprev {
    width:  44px;
    height: 50px;
}
body .glightbox-container .gbtn:focus-visible,
body .glightbox-container .gbtn.focused {
    outline:        3px solid #fff;
    outline-offset: 2px;
    box-shadow:     0 0 0 5px #111827;
}
body .glightbox-container:focus {
    outline: none;
}
body .glightbox-clean .gslide-title,
body .glightbox-clean .gslide-desc {
    font-family: inherit;
    font-size:   1rem;
    line-height: 1.5;
}

/* ========================================
   Paginação (adsi_archive_pagination / adsi_pagination_markup, CoreHelpers)
   Uma só paginação em todas as listagens: <nav class="navigation
   core-pagination" aria-label> com <h2> e "Página N" para leitores de ecrã.
   Cada número / Anterior / Seguinte é um CoreButton (tipo, tamanho, cores,
   raio, peso, borda e hover de Componentes → Botões — ver
   adsi_pagination_as_buttons()); aqui só a disposição, o alvo mínimo de
   44px e a cor do texto (o tema pinta os <a> com 0,1,1, mais do que as
   classes .core-button--*).
   ======================================== */
.core-pagination {
    clear: both;
    margin: 3rem 0 1rem;
}
.core-pagination .nav-links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}
/* .page-numbers do tema pode impor display, altura, largura e line-height
   fixos. Com o padding dos CoreButtons, deslocava os números para baixo. */
.core-pagination .page-numbers.core-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    flex: 0 0 auto;
    float: none;
    width: auto;
    height: auto;
    min-width: 44px;
    min-height: 44px;
    margin: 0;
    line-height: 1.5;
    text-align: center;
    text-decoration: none;
}
.core-pagination a.core-button--primary,
.core-pagination a.core-button--secondary,
.core-pagination .core-button--primary.current,
.core-pagination a.core-button--outline-dark:is(:hover, :focus),
.core-pagination a.core-button--outline-light:is(:hover, :focus) {
    color: var(--core-color-white, #fff);
}
.core-pagination .core-button--outline-dark:not(:hover):not(:focus),
.core-pagination .core-button--outline-dark.current {
    color: var(--core-btn-color, var(--core-color-primary, #2c5f8d));
}
/* página atual: não é link — sem efeito de hover */
.core-pagination .core-button.current {
    cursor: default;
    transform: none;
    box-shadow: none;
}
/* A página atual em contorno não herda o fundo preenchido do tema. */
.core-pagination .core-button--outline-dark.current,
.core-pagination .core-button--outline-dark.current:hover {
    background: transparent;
    border-color: var(--core-btn-color, var(--core-color-primary, #2c5f8d));
}
/* "…" */
.core-pagination .page-numbers.dots {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    height: auto;
    min-height: 44px;
    margin: 0;
    padding-inline: 0.25rem;
    line-height: 1.5;
}
.core-pagination .screen-reader-text {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ========================================
   Rodapé dos carrosséis — botão em espaços estreitos
   (CoreCarouselNav::build_layout, Componentes → Botões, "Botão em Espaços
   Estreitos"). Só quando o botão partilha o rodapé com setas/paginação: a
   grelha de 3 zonas não encolhe abaixo do conteúdo e, num ecrã estreito, o
   botão empurrava as setas para fora. Container query (largura do rodapé,
   não do ecrã): também vale numa coluna estreita em desktop.
   ======================================== */
.core-carousel-controls {
    container: core-carousel-controls / inline-size;
}
/* .core-button à frente (0,2,0): o Font Awesome define display em .fa-solid (0,1,0)
   e uma segunda folha dele (font-awesome-6) carrega depois desta — com a mesma
   especificidade, o ícone compacto aparecia sempre ao lado do texto. */
.core-button .core-button__icon--compact {
    display: none;
}

@container core-carousel-controls (max-width: 30rem) {
    /* Só ícone: a altura das setas (48px) e o dobro da largura, sem passar
       a zona onde está (encolhe até 48px se faltar espaço). O texto sai só
       da vista — continua a ser o nome acessível do link. */
    .core-carousel-controls--narrow-compact .core-button.core-button--compact {
        position: relative;
        flex-shrink: 1;
        width: calc(var(--splide-arrow-size, 3rem) * 2);
        max-width: 100%;
        min-width: 48px;
        height: var(--splide-arrow-size, 3rem);
        min-height: 48px;
        padding: 0;
        gap: 0;
    }
    /* a zona do botão pode ficar mais estreita do que os 96px (a coluna 1fr
       não desce do conteúdo sem isto): as setas têm prioridade */
    .core-carousel-controls--narrow-compact > .core-carousel-controls__btn-zone {
        min-width: 0;
    }
    .core-carousel-controls--narrow-compact .core-button--compact .core-button__text {
        position: absolute !important;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
    }
    .core-carousel-controls--narrow-compact .core-button--compact .core-button__icon {
        display: none;
    }
    .core-carousel-controls--narrow-compact .core-button--compact .core-button__icon--compact {
        display: inline-block;
    }

    /* Em linha própria: cada zona ocupa a linha toda, setas/paginação em
       cima e o botão por baixo, a toda a largura. Zonas vazias não contam
       (senão o gap da grelha somava-se). */
    .core-carousel-controls--narrow-stack > * {
        grid-column: 1 / -1;
    }
    .core-carousel-controls--narrow-stack > :empty {
        display: none;
    }
    .core-carousel-controls--narrow-stack > .core-carousel-controls__btn-zone {
        order: 1;
        flex-wrap: wrap;
    }
    /* botão e setas na mesma zona: o botão desce para uma linha sua */
    .core-carousel-controls--narrow-stack .core-carousel-controls__btn-zone > .core-button {
        order: 1;
        flex: 1 1 100%;
    }
}

/* ==========================================================================
   CoreFilterField — filtro imediato partilhado (inc/CoreFilterField.php)
   Rótulo visível · campo com ícone e "Limpar" · contagem anunciada.
   Texto 16px; texto/placeholder ≥ 7:1; borda #6b7280 (4.8:1, ≥ 3:1); campo
   48px; "Limpar" 44×44px; foco 3px. A borda está no próprio <input> (e não
   num contentor à volta) para não ficar dupla com regras globais de inputs.
   ========================================================================== */
.core-filter {
    --core-filter-border: #6b7280;
    --core-filter-text: #1f2937;
    --core-filter-muted: #4b5563;
    --core-filter-focus: #111827;
    margin: 0 0 var(--core-filter-gap, 24px);
}
.core-filter[hidden] { display: none !important; }
.core-filter__label {
    display: block;
    margin: 0 0 8px;
    font-size: max(16px, var(--core-font-min, 1rem), 1rem);
    font-weight: 600;
    line-height: 1.4;
    color: var(--core-filter-text);
}
/* Título só para leitores de ecrã: o <label> continua associado ao campo. */
.core-filter .core-filter__label--sr-only {
    position: absolute !important;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}
.core-filter--lg .core-filter__label {
    font-size: max(16px, var(--core-font-min, 1rem), 1.25rem);
    font-weight: 700;
}
.core-filter__row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
}
.core-filter__field {
    position: relative;
    flex: 1 1 18rem;
    min-width: 0;
}
.core-filter__icon {
    position: absolute;
    top: 50%;
    left: 16px;
    transform: translateY(-50%);
    color: var(--core-filter-muted);
    pointer-events: none;
}
.core-filter .core-filter__input,
#top .core-filter .core-filter__input {
    display: block;
    width: 100%;
    min-height: 48px;
    margin: 0;
    padding: 0 16px 0 44px;
    box-sizing: border-box;
    font: inherit;
    font-size: max(16px, var(--core-font-min, 1rem), 1rem);
    line-height: 1.4;
    color: var(--core-filter-text);
    background: #fff;
    border: 2px solid var(--core-filter-border);
    border-radius: var(--usearch-radius, var(--core-radius, 6px));
    box-shadow: none;
    -webkit-appearance: none;
    appearance: none;
}
/* Com texto, o botão "Limpar" ocupa o lado direito do campo. */
.core-filter__field:has(.core-filter__clear:not([hidden])) .core-filter__input { padding-right: 96px; }
.core-filter .core-filter__input::placeholder { color: var(--core-filter-muted); opacity: 1; }
/* O "x" nativo do type=search duplicaria o botão "Limpar". */
.core-filter .core-filter__input::-webkit-search-cancel-button,
.core-filter .core-filter__input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; }
.core-filter .core-filter__input:focus { border-color: var(--core-filter-focus); }
.core-filter .core-filter__input:focus-visible,
#top .core-filter .core-filter__input:focus-visible {
    outline: 3px solid var(--core-filter-focus);
    outline-offset: 2px;
    box-shadow: 0 0 0 2px #fff;
}
.core-filter .core-filter__clear,
#top .core-filter .core-filter__clear {
    position: absolute;
    top: 50%;
    right: 4px;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    margin: 0;
    padding: 0 12px;
    font: inherit;
    font-size: max(16px, var(--core-font-min, 1rem), 1rem);
    font-weight: 600;
    line-height: 1;
    color: var(--core-filter-text);
    background: transparent;
    border: 0;
    border-radius: var(--core-btn-radius, var(--usearch-radius, 6px));
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}
.core-filter .core-filter__clear[hidden] { display: none; }
.core-filter .core-filter__clear:hover { background: #f3f4f6; }
.core-filter .core-filter__clear:focus-visible {
    outline: 3px solid var(--core-filter-focus);
    outline-offset: 0;
}
.core-filter__count {
    flex: 0 0 auto;
    margin: 0;
    font-size: max(16px, var(--core-font-min, 1rem), 1rem);
    line-height: 1.4;
    color: var(--core-filter-muted);
    white-space: nowrap;
}
@media (forced-colors: active) {
    .core-filter .core-filter__input { border-color: CanvasText; }
}

/* CoreVideoEmbed (inc/CoreVideoEmbed.php) — leitor 16:9 responsivo */
.core-video { margin: 0; }
.core-video--embed,
.core-video--file {
    position: relative;
    aspect-ratio: 16 / 9;
    width: 100%;
    background: #000;
    border-radius: var(--core-radius, 0px);
    overflow: hidden;
}
.core-video--embed iframe,
.core-video--file video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}
.core-video--link a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 600; }
