/*
Theme Name: Abylise
Description: Child theme do Enfold 8.1 (stock, nativo). Substitui o fork independente "Abilyx" — preserva as customizações genuínas do ADSI (integração com o plugin adsi-core, correções WCAG 2 AA, tipografia dinâmica) sobre hooks nativos do Enfold, permitindo voltar a receber atualizações oficiais do tema. Ver CLAUDE.md para o histórico da migração.
Author: ADSI
Template: enfold
Version: 0.2.1
Text Domain: abylise
*/

/* ==========================================================================
   Fase 3 do plano de migração — correções WCAG 2 AA + tipografia dinâmica
   Portado de wp-content/themes/abilyx (fork), reaplicado sobre o Enfold 8.1
   nativo. Carregado via o handle 'avia-style' que o próprio Enfold já
   enfileira depois de avia-base/avia-layout (includes/config-enfold/
   functions-enqueue.php:74,234-237) — a ordem de carregamento garante que
   estas regras vencem por ordem de cascata, com a mesma especificidade das
   regras originais que substituem.
   ========================================================================== */

/* WCAG 2.4.7 (Focus Visible): a:hover/a:focus/a:visited do Enfold só troca
   para sublinhado, invisível em links compostos só por uma imagem, sem texto
   próprio (ex: a foto de um membro numa listagem). :focus-visible só ativa
   para navegação por teclado — nunca num clique de rato — por isso isto
   nunca altera o aspeto para quem usa o rato, só repõe feedback visível para
   quem usa o teclado. */
a:focus-visible {
	outline: 2px solid #2271b1;
	outline-offset: 2px;
}

/* Tipografia: os headings do tema leem as variáveis --core-h1-size..
   --core-h6-size injetadas site-wide pelo plugin adsi-core (CoreGlobaisCss,
   Apresentação → Tipografia). O fallback é sempre o valor original do
   Enfold 8.1 nativo (confirmado igual ao da base 7.1.6 do fork, exceto h6 —
   ver nota abaixo) — um site sem adsi-core ativo, ou sem estes campos ACF
   definidos, renderiza exatamente como o Enfold stock, sem dependência
   obrigatória do plugin. */
h1 {
	font-size: var(--core-h1-size, 34px);
}
h2 {
	font-size: var(--core-h2-size, 28px);
}
h3 {
	font-size: var(--core-h3-size, 20px);
}
h4 {
	font-size: var(--core-h4-size, 18px);
}
h5 {
	font-size: var(--core-h5-size, 16px);
}
h6 {
	/* Fallback 1rem (não os 14px nativos do Enfold) — desvio deliberado do
	   fork, preservado tal e qual. Antes da correção de tamanhos de fonte
	   abaixo, isto mantinha h6 acima do corpo de texto (13px nativo do
	   Enfold); agora que o corpo também está a 16px (ver secção "Tamanhos
	   de fonte mínimos"), h6 fica do mesmo tamanho que o corpo — decisão
	   aceite deliberadamente (mais simples do que subir h6 só para
	   preservar uma hierarquia visual ligeira; acessibilidade > estética
	   aqui). */
	font-size: var(--core-h6-size, 1rem);
}

/* .title_container .main-title precisa da sua própria declaração (a regra
   "h1" acima nunca a alcançaria aqui, nem com a mesma especificidade — ver
   nota do #top abaixo). Fallback 16px: o valor nativo real do Enfold para
   este elemento específico (css/layout.css, min-height+line-height:2.3em
   fazem o resto da altura da barra) — não o mesmo fallback do h1 genérico
   (34px), que é um elemento diferente, com line-height normal.
   "#top" (0,2,0 → 1,2,0): sem isto, perde para a regra nativa do Enfold em
   css/layout.css (mesma especificidade, 0,2,0) sempre que avia-style for
   enfileirado antes de avia-layout — confirmado ser o caso real neste
   Enfold 8.1 (avia-style regista sem depender de avia-base/avia-layout,
   ao contrário do que a Fase 3 deste CLAUDE.md assumia): sem o "#top", a
   variável --core-h1-size nunca tinha efeito nenhum aqui, configurada ou
   não. */
#top .title_container .main-title {
	font-size: var(--core-h1-size, 16px);
}

/* Texto secundário (.minor-meta — data, categorias, autor, contagem de
   comentários) nunca abaixo de 1rem. O Enfold usa 0.9em (css/layout.css,
   ".container .minor-meta") — relativo ao pai, por isso encolhe em cascata
   quando aninhado: na barra de título, o <span class="blog-categories
   minor-meta"> dentro do <p class="adsi-updated-date minor-meta"> ficava a
   0.81em. max() mantém os 0.9em onde o texto à volta for maior (0.9em >
   1rem) e trava o mínimo nos restantes casos. "#top" pelo mesmo motivo da
   regra anterior (layout.css carrega depois deste ficheiro). */
#top .container .minor-meta {
	font-size: max(1rem, 0.9em);
}

/* ==========================================================================
   Breadcrumb separado numa faixa própria (abylise_separate_breadcrumb,
   inc/accessibility-fixes.php) — fora do title_container, por isso não
   herda nenhum espaçamento vertical próprio: o .container_wrap genérico
   do Enfold (css/grid.css) não define padding, só a borda superior.
   ========================================================================== */
.adsi-breadcrumb-container {
	padding-top: 12px;
	padding-bottom: 12px;
}

/* .trail-before ("Está aqui:") tem padding-left 3px vindo da regra
   genérica .breadcrumb-trail .trail-before/.trail-end/.sep/a (Enfold,
   css/layout.css) — pensada para o breadcrumb embutido na barra de
   título, onde esse espaço inicial nunca é o primeiro elemento visível
   da linha. Aqui é, e deixa o "Está aqui:" desalinhado com a margem do
   .container. */
.adsi-breadcrumb-container .breadcrumb-trail .trail-before {
	padding-left: 0;
	margin-left: 0;
}

/* Breadcrumb sempre numa linha, com scroll horizontal quando não cabe.
   Os itens do Enfold (css/layout.css) são float:left e quebram de linha;
   em flex sem wrap ficam lado a lado. O fim do trilho fica à vista ao
   carregar (abylise_breadcrumb_scroll_to_end, accessibility-fixes.php).
   Opção abylise_breadcrumb_single_line (tab Abylise). */
#top.abylise-breadcrumb-single-line .breadcrumb .breadcrumb-trail {
	position: relative;
	display: flex;
	flex-wrap: nowrap;
	align-items: baseline;
	max-width: 100%;
	overflow-x: auto;
	white-space: nowrap;
	scrollbar-width: thin;
}

#top.abylise-breadcrumb-single-line .breadcrumb .breadcrumb-trail > * {
	flex: none;
}

/* O <a> está dentro de dois <span> (schema.org) e vem block + float:left
   do Enfold — um float dentro de um elemento inline sai da linha de base
   e fica mais acima do que o texto. Todos inline, na mesma linha. */
#top.abylise-breadcrumb-single-line .breadcrumb .breadcrumb-trail .trail-before,
#top.abylise-breadcrumb-single-line .breadcrumb .breadcrumb-trail .trail-end,
#top.abylise-breadcrumb-single-line .breadcrumb .breadcrumb-trail .sep,
#top.abylise-breadcrumb-single-line .breadcrumb .breadcrumb-trail a {
	display: inline;
	float: none;
}

#top.abylise-breadcrumb-single-line .breadcrumb .breadcrumb-trail .sep {
	width: auto;
}

/* Item atual: só para leitores de ecrã (aria-current="page") — opção
   abylise_breadcrumb_hide_current. */
#top.abylise-breadcrumb-hide-current .breadcrumb .breadcrumb-trail .trail-end {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Links do breadcrumb na "Cor dos Links" do adsi-core (--core-color-link,
   Apresentação → Cores) — opção abylise_breadcrumb_link_color. O nome do
   link vem num <span> que a regra do Advanced Styling do Enfold
   (.breadcrumb-trail span) pinta com a cor do texto; daí o "a span".
   Sem o plugin, a variável não existe e mantém-se a cor herdada. */
#top.abylise-breadcrumb-link-color .breadcrumb .breadcrumb-trail a,
#top.abylise-breadcrumb-link-color .breadcrumb .breadcrumb-trail a span {
	color: var(--core-color-link, inherit);
}

#top.abylise-breadcrumb-link-color .breadcrumb .breadcrumb-trail a:hover,
#top.abylise-breadcrumb-link-color .breadcrumb .breadcrumb-trail a:hover span,
#top.abylise-breadcrumb-link-color .breadcrumb .breadcrumb-trail a:focus-visible,
#top.abylise-breadcrumb-link-color .breadcrumb .breadcrumb-trail a:focus-visible span {
	color: var(--core-color-link-hover, inherit);
}

/* Estado e local do evento (adsi-core, .event-status / .event-location):
   1rem (16px) e peso normal — mínimo legível. O plugin já o define;
   "#top" garante-o contra regras do tema/plugins com mais peso. */
#top .event-status,
#top .event-location {
	font-size: 1rem;
	font-weight: 400;
}

/* Títulos H1/H2 das páginas: o Enfold (layout.css, "#Page Styles") põe-os
   em maiúsculas com letter-spacing 1px — pior legibilidade. Aqui ficam como
   foram escritos e sem espaçamento extra (o Enfold já faz o mesmo dentro de
   .template-blog). "#top" porque o avia-layout carrega depois do avia-style.
   Por site: --abylise-page-heading-transform / -letter-spacing (ex.:
   adsi-core-variables.css ou mu-plugin) para repor uppercase/1px. */
#top .template-page .entry-content-wrapper h1,
#top .template-page .entry-content-wrapper h2 {
	text-transform: var(--abylise-page-heading-transform, none);
	letter-spacing: var(--abylise-page-heading-letter-spacing, 0);
}

/* Slides do Splide (carrosséis do adsi-core: destaques, eventos, agenda,
   quicklinks, galerias...): o Enfold (base.css) aplica a todos os <li> do
   conteúdo ".entry-content-wrapper li { margin-left: 1em; padding: 3px 0 }",
   pensado para listas de texto. Nos slides essa margem soma-se à largura
   calculada pelo Splide e desalinha o carrossel. "li.splide__slide" porque
   o avia-base carrega depois do avia-style — com a mesma especificidade
   o Enfold ganhava. A margin-right (espaço entre slides) é inline, do
   Splide, e não é tocada. */
.entry-content-wrapper li.splide__slide {
	margin-left: 0;
	padding-top: 0;
	padding-bottom: 0;
}

/* ==========================================================================
   Rodapé — socket padrão e faixa de selos (inc/footer-socket.php)
   ========================================================================== */

/* Crédito "adsi.pt" à direita do copyright; por baixo em ecrãs pequenos. */
#socket .abylise-socket-credit {
    float: right;
}

@media only screen and (max-width: 767px) {
    .responsive #socket .abylise-socket-credit {
        display: block;
        float: none;
        clear: both;
        width: 100%;
        margin: 8px 0 0 0;
    }
}

/* Faixa de selos/financiamento: secção própria a toda a largura (como o
   #footer e o #socket), antes ou depois do socket. O filete de cima é o
   border-top nativo do .container_wrap do Enfold. */
.abylise-footer-badges-section .container {
    padding-top: 25px;
    padding-bottom: 25px;
}

.abylise-footer-badges__list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 24px 48px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.abylise-footer-badges__list .abylise-footer-badge {
    margin: 0;
    padding: 0;
    list-style: none;
    max-width: 100%;
}

/* Selo à esquerda, barra de financiamento à direita — também quando só
   existe um dos dois. */
.abylise-footer-badges__list .abylise-footer-badge--funding {
    margin-left: auto;
}

.abylise-footer-badge__link {
    display: inline-block;
    max-width: 100%;
}

/* Altura por imagem em Enfold → Abylise (--abylise-badge-height). */
.abylise-footer-badge__img {
    display: block;
    width: auto;
    max-width: 100%;
    height: var(--abylise-badge-height, 80px);
    object-fit: contain;
}

@media only screen and (max-width: 767px) {
    .abylise-footer-badges__list {
        flex-direction: column;
        align-items: flex-start;
        gap: 20px;
    }

    .abylise-footer-badges__list .abylise-footer-badge,
    .abylise-footer-badge__link {
        width: 100%;
    }

    .abylise-footer-badges__list .abylise-footer-badge--funding {
        margin-left: 0;
    }

    /* Em ecrãs estreitos a altura escolhida passa a máximo: uma imagem larga
       (barra de financiamento) encolhe proporcionalmente, sem espaço vazio. */
    .abylise-footer-badge__img {
        width: 100%;
        height: auto;
        max-height: var(--abylise-badge-height, 80px);
        object-position: left center;
    }
}
