/*
Theme Name: Cais
Theme URI: https://sovagas.co.mz
Author: Luis Biza
Author URI: https://sovagas.co.mz
Description: Tema WordPress premium e minimalista para job boards, construído sobre o ecossistema do plugin WP Job Manager.
Version: 2.0.1
Requires at least: 6.0
Requires PHP: 7.4
Tested up to: 6.6
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: cais
*/

/* ==========================================================================
   Reset básico
   ========================================================================== */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	line-height: 1.15;
}

body {
	margin: 0;
	padding: 0;
}

h1,
h2,
h3,
h4,
h5,
h6,
p,
figure,
blockquote,
dl,
dd {
	margin: 0;
}

ul,
ol {
	margin: 0;
	padding: 0;
	list-style: none;
}

img,
picture,
svg {
	display: block;
	max-width: 100%;
	height: auto;
}

a {
	color: inherit;
	text-decoration: none;
}

button,
input,
select,
textarea {
	font: inherit;
	color: inherit;
}

table {
	border-collapse: collapse;
	border-spacing: 0;
}

/* ==========================================================================
   Tipografia (Customizer → Tipografia, v1.81.0/v1.81.1).

   v1.81.1 — a baseline "aditiva" da v1.81.0 (especificidade baixíssima,
   nunca !important) confirmada, por auditoria real a todo o assets/css/*,
   como INSUFICIENTE para o efeito visível pedido: praticamente todo H1-H6
   realmente visível no site vive dentro de um wrapper de contexto
   (.page-hero h1, .job-header-info h1, .dash-header h1, .page-head h1,
   .auth-header h1, .company-title-block h1, .cv-header h1, .modal h2,
   etc. — confirmado por grep a TODOS os ficheiros CSS do tema, nunca
   assumido) — cada um com a SUA PRÓPRIA declaração de font-size (quase
   sempre var(--text-2xl)/var(--text-3xl), a escala tipográfica antiga,
   nunca as novas --cais-h*-size) e font-weight (quase sempre um literal
   700/800, nunca var(--cais-heading-font-weight)) — ambos com
   especificidade maior do que um "h1" nu, por isso o slider/select nunca
   tinha qualquer efeito visível nesses elementos, apesar da variável CSS
   em si mudar corretamente (confirmado via CDP na v1.81.0 — o binding
   JS/postMessage sempre funcionou; só a variável nunca chegava a ser
   CONSUMIDA pelos elementos reais). font-family já era a exceção segura
   (confirmado que TODOS os h1-h6 do tema já usam var(--font-heading), a
   MESMA variável nova — daí nunca ter sido preciso !important nessa
   propriedade, só nas outras duas).

   !important justificado aqui pela mesma razão já documentada no projeto
   para .job-manager-info (sobrepor CSS que já compete por especificidade,
   nunca um atalho evitável) — é precisamente o propósito de uma secção de
   Tipografia global no Customizer (padrão já usado por temas comerciais
   como Astra/Kadence): o controlo do admin tem de vencer qualquer
   componente individual. Confirmado por grep que nenhum h1-h6 do tema é
   usado para badges/botões/pills (0 ocorrências) — o !important nunca
   atinge elementos não-heading.

   "p { margin-bottom: ... }"/"body { font-size: ... }" continuam SEM
   !important — confirmado por grep que não existe nenhuma outra regra
   "body{font-size}" nem "p"/".entry-content p" a competir, por isso a
   baseline aditiva já era suficiente para body/parágrafo (validado ao
   vivo em /termos-de-uso/ na v1.81.0). "p { margin-bottom: ... }" tem a
   MESMA especificidade que o "p" já presente no bloco de reset acima
   ("margin: 0") — por vir DEPOIS na folha de estilo, a propriedade
   longhand "margin-bottom" aqui vence sempre a shorthand "margin" de lá,
   sem !important nenhum (cascade normal do CSS, nunca uma sobreposição
   frágil).
   ========================================================================== */

body {
	font-family: var(--font-body);
	font-size: var(--cais-body-font-size, 15px);
}

/*
 * v1.85.0 — "color: var(--color-heading, inherit) !important" acrescentado
 * aditivamente às 6 regras abaixo (Paleta Global, Achado 3 da auditoria,
 * autorizado explicitamente). Fallback "inherit" (nunca um hex fixo) de
 * propósito: enquanto --color-heading não for emitida (Customizer nunca
 * tocado), o comportamento é byte a byte o mesmo de antes desta versão
 * (cada heading continua a herdar a cor do seu próprio contexto, exatamente
 * como sempre) — só produz um efeito visível quando o admin escolhe
 * mesmo uma cor. Mesma técnica !important já estabelecida para
 * font-family/weight/size (v1.81.1) — necessária pela mesma razão:
 * dezenas de seletores mais específicos (.article-title, .job-header-info h1,
 * etc.) já competem por esta propriedade.
 */
h1 {
	font-family: var(--font-heading) !important;
	font-weight: var(--cais-heading-font-weight, 600) !important;
	font-size: var(--cais-h1-size, 36px) !important;
	color: var(--color-heading, inherit) !important;
}

h2 {
	font-family: var(--font-heading) !important;
	font-weight: var(--cais-heading-font-weight, 600) !important;
	font-size: var(--cais-h2-size, 28px) !important;
	color: var(--color-heading, inherit) !important;
}

h3 {
	font-family: var(--font-heading) !important;
	font-weight: var(--cais-heading-font-weight, 600) !important;
	font-size: var(--cais-h3-size, 24px) !important;
	color: var(--color-heading, inherit) !important;
}

h4 {
	font-family: var(--font-heading) !important;
	font-weight: var(--cais-heading-font-weight, 600) !important;
	font-size: var(--cais-h4-size, 20px) !important;
	color: var(--color-heading, inherit) !important;
}

h5 {
	font-family: var(--font-heading) !important;
	font-weight: var(--cais-heading-font-weight, 600) !important;
	font-size: var(--cais-h5-size, 18px) !important;
	color: var(--color-heading, inherit) !important;
}

h6 {
	font-family: var(--font-heading) !important;
	font-weight: var(--cais-heading-font-weight, 600) !important;
	font-size: var(--cais-h6-size, 16px) !important;
	color: var(--color-heading, inherit) !important;
}

p {
	margin-bottom: var(--cais-paragraph-mb, 1.2em);
}

/* Sublinhado de links exclusivo de conteúdo editorial, nunca botões/menus/
   cartões — só dentro dos 3 wrappers reais confirmados por auditoria
   (nunca ".job-description"/".single-job-content", hipotéticos e
   inexistentes no código: os wrappers reais são .entry-content, páginas
   simples; .job-content, descrição da vaga; .single-body-card, corpo do
   artigo do blog). */
.cais-underline-links .entry-content a,
.cais-underline-links .job-content a,
.cais-underline-links .single-body-card a {
	text-decoration: underline;
}

/*
 * Cor de Links (Paleta Global, v1.85.0) — MESMO escopo de 3 seletores já
 * confirmado acima para o sublinhado (Achado 2 da auditoria): o reset do
 * tema já define "a { color: inherit }" (base deste ficheiro) — dezenas
 * de botões/menus/badges são <a> e dependem disto. Nunca um "a" nu aqui,
 * só dentro de conteúdo editorial real. Especificidade (classe + elemento)
 * já basta para vencer o reset "a{color:inherit}" sem !important.
 */
.entry-content a,
.job-content a,
.single-body-card a {
	color: var(--color-links, #005943);
}

/*
 * Fundo do Site (Paleta Global, v1.85.0) — nunca define nenhum fundo por
 * omissão explícito no <body> antes desta versão (confirmado por
 * auditoria — o branco visto até aqui era sempre o branco nativo do
 * browser). Especificidade baixíssima de propósito: o Modo "Em Caixa"
 * (.cais-container-boxed, Sistema de Contentor v1.84.1) já usa um
 * seletor de classe, mais específico do que um "body" nu — continua a
 * vencer sempre que ativo, sem qualquer alteração ali.
 */
body {
	background-color: var(--cais-color-site-bg, #f8fafc);
}

/* ==========================================================================
   Sistema de Contentor (Customizer → Layout e Contêiner, v1.84.0).

   Largura Estreita — aplicada diretamente a .entry-content (páginas
   simples, content-blog-loop.php) e .single-body (corpo do artigo,
   blog.css) — nunca a ".single-job-content", que não existe no código
   (confirmado por auditoria). .entry-content nunca teve nenhuma regra de
   largura própria antes desta versão — herdava sempre do wrapper que a
   envolvesse; esta é a primeira vez que ganha uma largura de leitura
   dedicada. Especificidade baixíssima de propósito (seletor de elemento
   nu) — uma página com um wrapper mais específico já a sobrepõe sem
   qualquer alteração (ex: body.cais-submit-job-page .entry-content,
   submit-job.css, continua a vencer para a largura total do formulário). */
.entry-content {
	max-width: var(--cais-container-narrow-width, 750px);
	margin-left: auto;
	margin-right: auto;
}

/*
 * Modo "Em Caixa" (v1.84.0, refatorado v1.84.1 para "Content Boxed") —
 * aplicado via classe em <body> (cais_add_layout_body_classes(),
 * functions.php, nunca só no preview do Customizer).
 *
 * v1.84.1 — corrigida a fragmentação visual da v1.84.0: aplicar a mesma
 * superfície de cartão a .header-inner/.footer-main/.footer-trust/
 * .footer-bottom-inner ao mesmo tempo produzia várias caixas
 * independentes (o rodapé sozinho já tem 3 irmãos, cada um viraria uma
 * "barra flutuante" separada), e os cartões JÁ EXISTENTES dentro de
 * .page-layout/.job-layout (.job-content, .sidebar-card dos widgets, já
 * brancos com borda própria) ficavam aninhados dentro de outro cartão
 * branco com borda — bordas duplicadas, sem nenhuma respiração real.
 *
 * Corrigido para "Content Boxed": cabeçalho e rodapé NUNCA entram em
 * caixa (ficam sempre de ponta a ponta, com as suas superfícies
 * originais, em qualquer modo) — só as 3 grelhas de conteúdo principais
 * de cada template (.page-layout/.job-layout/.blog-layout) formam UM
 * cartão único, com padding perimetral generoso (nunca só lateral/
 * inferior, como o padding original destas grelhas já tinha) para dar
 * respiração às margens do cabeçalho/rodapé. Os cartões internos que já
 * existiam (.job-content, .sidebar-card) perdem a SUA PRÓPRIA borda/
 * sombra só neste modo — como ambos já usam a mesma cor branca do cartão
 * exterior, o resultado é uma única superfície contínua, com as colunas
 * ainda visualmente distintas só pelo espaçamento (gap) da grelha, nunca
 * por bordas a competir.
 */
.cais-container-boxed {
	background-color: var(--cais-container-boxed-bg, #F1F5F9);
}

.cais-container-boxed .page-layout,
.cais-container-boxed .job-layout,
.cais-container-boxed .blog-layout {
	background: var(--color-background);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-lg, 16px);
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04), 0 4px 12px -4px rgba(0, 0, 0, 0.06);
	padding: var(--space-xl) var(--space-lg);
	margin-top: var(--space-xl);
	margin-bottom: var(--space-xl);
}

.cais-container-boxed .job-content,
.cais-container-boxed .sidebar-card {
	border: none;
	box-shadow: none;
	background: transparent;
}
