/* site.css — estilos do website Ekolelo (marca oficial).
   As cores e fontes vêm das Definições do Site (variáveis --primaria, --accent, --texto, --fundo,
   --fonte-titulos, --fonte-texto, definidas inline em tema_cabecalho.php).
   Regras da marca: botões cheios sempre em teal (--primaria) com texto branco; o cobre (--accent) só em
   detalhes gráficos e texto grande — para texto pequeno usa-se --accent-texto (cobre escurecido, AA).
   Cartões 14px, botões 10px, linhas de 1px, sem sombras pesadas, sem gradientes. */

:root{
  --primaria: #0E5C56;
  --accent: #B5651D;
  --texto: #14161C;
  --fundo: #F7F6F2;
  --fonte-titulos: "Century Schoolbook","New Century Schoolbook","TeX Gyre Schola","C059",Georgia,serif;
  --fonte-texto: Calibri,Carlito,"Segoe UI",system-ui,sans-serif;
  --altura-cabecalho: 76px;

  --primaria-escura: color-mix(in srgb, var(--primaria) 80%, #000);
  --accent-texto: color-mix(in srgb, var(--accent) 75%, #000); /* cobre para texto pequeno: ≥ 4,5:1 também sobre areia */
  --texto-muted: color-mix(in srgb, var(--texto) 76%, var(--fundo));
  --borda: #E5E2D9;
  --borda-campo: color-mix(in srgb, var(--texto) 50%, var(--fundo));
  --areia: #E9E2D2;
  --teal-suave: #E0EEEC;
  --superficie: #FFFFFF;
  --raio-cartao: 14px;
  --raio-botao: 10px;
  --largura: 1200px;
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } *{ animation:none !important; transition:none !important; } }

body{
  font-family:var(--fonte-texto); font-size:1.0625rem; font-weight:400; line-height:1.6;
  color:var(--texto); background:var(--fundo);
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{ font-family:var(--fonte-titulos); font-weight:700; line-height:1.2; color:var(--primaria); }
a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
svg{ max-width:100%; }
main:focus{ outline:none; }

/* Foco visível e alvos de toque */
:focus-visible{ outline:3px solid var(--primaria); outline-offset:3px; border-radius:4px; }
.saltar{ position:absolute; left:-9999px; top:0; z-index:100; background:var(--primaria); color:#fff; padding:0.75rem 1.25rem; border-radius:0 0 var(--raio-botao) 0; font-weight:700; }
.saltar:focus{ left:0; outline-color:var(--texto); }

section{ padding:clamp(2.75rem,6vw,4.5rem) 6vw; }
/* Secções seguidas sem fundo próprio não acumulam espaço */
section:not([style*="background"]) + section:not([style*="background"]){ padding-top:0; }
.wrap{ max-width:var(--largura); margin:0 auto; }

/* ---------- Cabeçalho ---------- */
.cabecalho-site{
  position:sticky; top:0; z-index:50;
  display:flex; align-items:center; gap:1.5rem;
  padding:0 max(6vw, calc((100vw - var(--largura)) / 2));
  min-height:var(--altura-cabecalho);
  background:var(--superficie); color:var(--texto);
  border-bottom:1px solid var(--borda);
}
.ch-logo{ display:inline-flex; align-items:center; font-family:var(--fonte-titulos); font-weight:700; font-size:1.15rem; color:var(--primaria); border-radius:6px; }
.ch-logo img{ height:34px; width:auto; }
.ch-logo svg, .logo-svg{ height:34px; width:auto; display:block; }
.ch-espacador{ flex:1; }
.ch-menu{ display:flex; align-items:center; gap:0.25rem; }
.ch-menu.vertical{ flex-direction:column; align-items:flex-start; gap:0.4rem; }
.ch-menu-item{ position:relative; }
.ch-menu-item > a{ display:inline-flex; align-items:center; min-height:44px; padding:0 0.85rem; font-size:1rem; font-weight:700; border-bottom:2px solid transparent; }
.ch-menu-item > a:hover{ color:var(--primaria); border-bottom-color:var(--borda); }
.ch-menu-item > a[aria-current="page"]{ color:var(--primaria); border-bottom-color:var(--accent); }
.ch-menu-item.tem-submenu > a::after{ content:'\25BE'; font-size:0.65em; margin-left:0.4em; }
.ch-submenu{ display:none; position:absolute; top:100%; left:0; background:var(--superficie); border:1px solid var(--borda); border-radius:var(--raio-botao); padding:0.4rem 0; min-width:200px; z-index:40; }
.ch-menu-item.tem-submenu.aberto .ch-submenu,
.ch-menu-item.tem-submenu:focus-within .ch-submenu{ display:block; }
.ch-submenu a{ display:block; padding:0.6rem 1.1rem; font-size:0.95rem; font-weight:400; white-space:nowrap; }
.ch-submenu a:hover{ background:var(--teal-suave); }
.ch-menu-simbolo{ position:relative; }
.ch-menu-toggle, .ch-menu-toggle-mobile{ background:none; border:1px solid transparent; color:inherit; cursor:pointer; min-width:44px; min-height:44px; display:flex; align-items:center; justify-content:center; border-radius:var(--raio-botao); }
.ch-menu-toggle:hover, .ch-menu-toggle-mobile:hover{ background:var(--teal-suave); }
.ch-menu-toggle-mobile{ display:none; }
.ch-menu-dropdown{ display:none; flex-direction:column; position:absolute; top:100%; right:0; margin-top:0.5rem; background:var(--superficie); border:1px solid var(--borda); border-radius:var(--raio-botao); padding:0.5rem 0; min-width:220px; z-index:40; }
.ch-menu-simbolo.aberto .ch-menu-dropdown{ display:flex; }
.ch-menu-dropdown .ch-menu-item{ width:100%; }
.ch-menu-dropdown .ch-menu-item > a{ display:flex; padding:0 1.2rem; }
.ch-menu-dropdown .ch-submenu{ position:static; border:none; margin-top:0; padding-left:1rem; }
.ch-botao{ display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:0 1.35rem; background:var(--primaria); color:#fff; border-radius:var(--raio-botao); font-weight:700; font-size:1rem; white-space:nowrap; }
.ch-botao:hover{ background:var(--primaria-escura); }
.ch-link{ display:inline-flex; align-items:center; min-height:44px; font-size:1rem; font-weight:700; }

@media (max-width: 900px){
  .cabecalho-site{ gap:0.75rem; }
  .ch-logo{ order:1; }
  .ch-espacador{ order:2; }
  .ch-botao, .ch-link{ order:3; }
  .ch-menu-toggle-mobile{ display:flex; order:4; }
  .ch-menu:not(.vertical){
    display:none; order:5;
    position:absolute; top:100%; left:0; right:0;
    flex-direction:column; align-items:stretch; gap:0;
    background:var(--superficie); border-bottom:1px solid var(--borda);
    padding:0.5rem max(6vw, 1rem) 1rem;
  }
  .cabecalho-site.menu-aberto .ch-menu:not(.vertical){ display:flex; }
  .ch-menu:not(.vertical) .ch-menu-item > a{ display:flex; border-bottom:1px solid var(--borda); }
  .ch-menu:not(.vertical) .ch-submenu{ display:block; position:static; border:none; padding:0 0 0 1rem; }
  .ch-menu-item.tem-submenu > a::after{ content:none; }
}

/* ---------- Botões e elementos partilhados ---------- */
.btn{ display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:0.65rem 1.5rem; border-radius:var(--raio-botao); font-weight:700; font-size:1rem; line-height:1.2; border:1.5px solid transparent; cursor:pointer; font-family:inherit; text-align:center; }
.btn-primario{ background:var(--primaria); color:#fff; border-color:var(--primaria); }
.btn-primario:hover{ background:var(--primaria-escura); border-color:var(--primaria-escura); }
.btn-contorno{ background:transparent; color:var(--primaria); border-color:var(--primaria); }
.btn-contorno:hover{ background:var(--teal-suave); }
.btn-secundario{ border:1px solid var(--borda); color:var(--texto); }
.rotulo{ font-family:var(--fonte-texto); font-size:0.8rem; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; color:var(--accent-texto); margin-bottom:0.75rem; display:block; }

/* ---------- Hero ---------- */
.bloco-hero{ padding:clamp(3.5rem,9vw,7rem) 6vw; position:relative; }
.bloco-hero .wrap{ display:grid; gap:3rem; align-items:center; }
.bloco-hero.tem-imagem .wrap{ grid-template-columns:minmax(0,1.25fr) minmax(0,0.75fr); }
.bloco-hero.hero-simples{ padding:clamp(3rem,7vw,5rem) 6vw clamp(1.5rem,3vw,2.5rem); }
.hero-titulo{ font-size:clamp(2.1rem,5vw,3.5rem); margin-bottom:1.1rem; max-width:20ch; }
.hero-simples .hero-titulo{ font-size:clamp(1.9rem,4.2vw,2.75rem); }
.hero-subtitulo{ font-size:clamp(1.1rem,1.8vw,1.3rem); color:var(--texto-muted); max-width:60ch; margin-bottom:1.75rem; }
.hero-simples .hero-subtitulo{ margin-bottom:0; }
.hero-ctas{ display:flex; flex-wrap:wrap; gap:0.85rem; margin-top:0.5rem; }
.hero-imagem{ display:flex; justify-content:center; }
.hero-imagem img{ width:100%; max-width:380px; height:auto; }
.hero-bracket{ display:none; }
@media (max-width: 800px){
  .bloco-hero.tem-imagem .wrap{ grid-template-columns:1fr; }
  .hero-imagem{ display:none; }
}

/* ---------- Chamada à acção ---------- */
.bloco-chamada .wrap{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:2rem; }
.chamada-texto{ flex:1 1 380px; }
.chamada-texto h2{ font-size:clamp(1.5rem,3vw,2.1rem); margin-bottom:0.75rem; }
.chamada-texto p{ color:var(--texto-muted); max-width:60ch; }
.chamada-botoes{ display:flex; flex-wrap:wrap; gap:0.85rem; }

/* ---------- Texto / Texto+Imagem ---------- */
section h2{ line-height:1.2; }
.texto-rico{ font-size:1.0625rem; max-width:70ch; }
h2 + .texto-rico{ margin-top:1rem; }
.texto-rico p{ margin-bottom:1rem; }
.texto-rico ul, .texto-rico ol{ margin:0 0 1rem 1.4rem; }
.texto-rico li{ margin-bottom:0.4rem; }
.texto-rico a{ color:var(--primaria); text-decoration:underline; text-underline-offset:3px; }
.texto-rico table{ border-collapse:collapse; margin-bottom:1rem; }
.texto-rico th, .texto-rico td{ border:1px solid var(--borda); padding:0.5rem 0.75rem; text-align:left; }
.bloco-texto-imagem{ display:flex; gap:3rem; align-items:center; flex-wrap:wrap; }
.ti-texto, .ti-imagem{ flex:1; min-width:280px; }
.ti-texto h2{ margin-bottom:1rem; }
.ti-imagem img{ border-radius:var(--raio-cartao); width:100%; }

/* ---------- Cartões (serviços) ---------- */
.galeria-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr)); gap:1.5rem; }
.galeria-cartao{ background:var(--superficie); border:1px solid var(--borda); border-radius:var(--raio-cartao); padding:1.75rem; display:flex; flex-direction:column; }
.cartao-icone{ width:36px; height:36px; display:block; margin-bottom:1.1rem; color:var(--accent); }
.cartao-icone svg{ width:100%; height:100%; }
.galeria-cartao h3{ font-size:1.3rem; margin-bottom:0.6rem; }
.galeria-cartao p{ color:var(--texto-muted); margin-bottom:1rem; }
.cartao-link, .coluna-link{ margin-top:auto; font-weight:700; color:var(--primaria); text-decoration:underline; text-underline-offset:3px; }

.colunas-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1px; background:var(--borda); border:1px solid var(--borda); border-radius:var(--raio-cartao); overflow:hidden; }
.coluna-item{ background:var(--superficie); padding:2rem 1.7rem; }
.coluna-num{ font-family:var(--fonte-titulos); font-size:1.25rem; font-weight:700; color:var(--accent); display:block; margin-bottom:1rem; }
.coluna-icone{ width:28px; height:28px; display:block; margin-bottom:1rem; color:var(--accent); }
.coluna-icone svg{ width:100%; height:100%; }
.coluna-item h3{ font-size:1.15rem; margin-bottom:0.6rem; }
.coluna-item p{ color:var(--texto-muted); margin-bottom:1rem; }

/* ---------- Passos ---------- */
.passos-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr)); gap:2rem; }
.passo-item{ border-top:1px solid var(--borda); padding-top:1.25rem; }
.passo-num{ font-family:var(--fonte-titulos); font-size:2.25rem; font-weight:700; color:var(--accent); display:block; line-height:1; margin-bottom:0.75rem; }
.passo-item h3{ font-size:1.15rem; margin-bottom:0.5rem; }
.passo-item p{ color:var(--texto-muted); }

.faixa-marcas-wrap{ overflow:hidden; border-top:1px solid var(--borda); border-bottom:1px solid var(--borda); padding:1.3rem 0; }
.faixa-marcas{ display:flex; gap:3rem; white-space:nowrap; width:max-content; animation:faixa-scroll 28s linear infinite; }
.faixa-marcas span{ font-size:0.9rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--texto-muted); }
@keyframes faixa-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }

/* ---------- Formulário de contacto ---------- */
.form-contacto{ max-width:640px; }
.wrap > .alerta{ max-width:640px; }
.form-contacto .fc-linha{ display:flex; gap:1rem; flex-wrap:wrap; }
.form-contacto .fc-campo{ flex:1 1 240px; margin-bottom:1.1rem; }
.form-contacto label{ display:block; font-size:0.95rem; font-weight:700; margin-bottom:0.4rem; }
.form-contacto input, .form-contacto textarea{ width:100%; min-height:44px; padding:0.65rem 0.9rem; border:1px solid var(--borda-campo); border-radius:var(--raio-botao); font-family:inherit; font-size:1rem; background:var(--superficie); color:var(--texto); }
.form-contacto textarea{ min-height:150px; resize:vertical; }
.form-contacto input:focus-visible, .form-contacto textarea:focus-visible{ outline:3px solid var(--primaria); outline-offset:1px; }
.alerta{ padding:0.9rem 1.1rem; border-radius:var(--raio-botao); font-size:1rem; margin-bottom:1.3rem; }
.alerta-sucesso{ background:var(--teal-suave); color:var(--primaria); }
.alerta-erro{ background:#F6E1E1; color:#9B2C2C; }
.fc-honeypot{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* ---------- Mapa e contactos ---------- */
.bloco-mapa-grid{ display:flex; min-height:380px; flex-wrap:wrap; border-top:1px solid var(--borda); }
.mapa-texto{ flex:1; min-width:280px; padding:3rem 6vw; display:flex; flex-direction:column; justify-content:center; }
.mapa-texto h2{ font-size:clamp(1.5rem,3vw,2rem); margin-bottom:1rem; }
.mapa-linha{ margin-bottom:0.5rem; }
.mapa-imagem{ flex:1; min-width:280px; background:var(--areia); }
.mapa-imagem iframe{ border:0; width:100%; height:100%; min-height:320px; display:block; }

/* ---------- Carrossel ---------- */
.carrossel-auto{ position:relative; overflow:hidden; }
.ca-slide{ display:none; }
.ca-slide.activo{ display:block; }
.ca-slide img{ width:100%; max-height:70vh; object-fit:cover; }
.ca-legenda{ position:absolute; bottom:1.5rem; left:6vw; color:#fff; font-size:0.95rem; background:rgba(20,22,28,0.75); padding:0.4rem 0.8rem; border-radius:var(--raio-botao); }
.ca-pontos{ position:absolute; bottom:1rem; left:0; right:0; display:flex; justify-content:center; gap:0.5rem; }
.ca-ponto{ width:10px; height:10px; border-radius:50%; background:rgba(255,255,255,0.6); cursor:pointer; }
.ca-ponto.activo{ background:#fff; }
.carrossel-miniaturas{ display:flex; gap:1rem; }
.carrossel-miniaturas.lado-esquerda{ flex-direction:row-reverse; }
.carrossel-principal{ flex:1; }
.cm-imagem-grande{ display:none; width:100%; border-radius:var(--raio-cartao); }
.cm-imagem-grande.activa{ display:block; }
.carrossel-lista-miniaturas{ display:flex; flex-direction:column; gap:0.6rem; width:90px; }
.cm-miniatura{ width:100%; border-radius:var(--raio-botao); cursor:pointer; opacity:0.6; }
.cm-miniatura.activa{ opacity:1; outline:2px solid var(--primaria); }

/* ---------- Imagens (1 grande + 3 pequenas) ---------- */
.bloco-imagens{ display:flex; gap:1rem; }
.bloco-imagens.posicao-esquerda{ flex-direction:row-reverse; }
.bloco-imagens.posicao-cima{ flex-direction:column-reverse; }
.bloco-imagens.posicao-baixo{ flex-direction:column; }
.img-grande{ flex:2; }
.img-grande img{ width:100%; border-radius:var(--raio-cartao); height:100%; object-fit:cover; }
.img-pequenas{ flex:1; display:flex; gap:0.8rem; }
.bloco-imagens.posicao-esquerda .img-pequenas, .bloco-imagens.posicao-direita .img-pequenas{ flex-direction:column; }
.img-pequena{ flex:1; }
.img-pequena img{ width:100%; height:100%; object-fit:cover; border-radius:var(--raio-botao); }

/* ---------- Publicações ---------- */
.publicacoes-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr)); gap:1.5rem; }
.publicacao-cartao{ background:var(--superficie); border:1px solid var(--borda); border-radius:var(--raio-cartao); overflow:hidden; display:block; }
.publicacao-cartao:hover{ border-color:var(--primaria); }
.pub-imagem{ height:150px; background:var(--areia); }
.pub-imagem img{ width:100%; height:100%; object-fit:cover; }
.pub-corpo{ padding:1.25rem 1.4rem; }
.pub-meta{ font-size:0.8rem; font-weight:700; text-transform:uppercase; letter-spacing:0.06em; color:var(--accent-texto); margin-bottom:0.5rem; }
.publicacao-cartao h3{ font-size:1.15rem; margin-bottom:0.5rem; }
.pub-resumo{ color:var(--texto-muted); }
.pub-vazio{ color:var(--texto-muted); padding:1.5rem; border:1px dashed var(--borda-campo); border-radius:var(--raio-cartao); background:var(--superficie); }
.pub-filtros{ display:flex; flex-wrap:wrap; gap:0.6rem; margin-bottom:1.5rem; }
.pub-filtro{ display:inline-flex; align-items:center; min-height:44px; padding:0 1.1rem; border-radius:999px; border:1px solid var(--borda-campo); font-size:0.95rem; color:var(--texto); }
.pub-filtro:hover{ background:var(--teal-suave); }
.pub-filtro.activo{ background:var(--primaria); color:#fff; border-color:var(--primaria); font-weight:700; }
.pub-paginacao{ display:flex; justify-content:center; align-items:center; gap:1.5rem; margin-top:2rem; }
.pub-paginacao a{ color:var(--primaria); font-weight:700; text-decoration:underline; text-underline-offset:3px; }

/* ---------- Publicação (artigo) ---------- */
.artigo{ max-width:720px; margin:0 auto; padding:3rem 6vw 5rem; }
.artigo .voltar{ color:var(--primaria); font-weight:700; text-decoration:underline; text-underline-offset:3px; margin-bottom:1.5rem; display:inline-block; }
.artigo .pub-tipo{ font-size:0.8rem; font-weight:700; text-transform:uppercase; letter-spacing:0.1em; color:var(--accent-texto); margin-bottom:0.8rem; display:block; }
.artigo h1{ font-size:clamp(1.8rem,4vw,2.4rem); margin-bottom:1rem; }
.artigo .meta{ color:var(--texto-muted); margin-bottom:2rem; padding-bottom:1.5rem; border-bottom:1px solid var(--borda); }
.artigo .meta a{ color:var(--primaria); text-decoration:underline; }
.artigo .imagem-principal{ width:100%; border-radius:var(--raio-cartao); margin-bottom:0.6rem; }
.artigo .legenda{ font-size:0.9rem; color:var(--texto-muted); margin-bottom:2rem; font-style:italic; }
.artigo .corpo p{ margin-bottom:1.2rem; }
.artigo .corpo ul, .artigo .corpo ol{ margin:0 0 1.2rem 1.4rem; }
.artigo .corpo li{ margin-bottom:0.4rem; }
.artigo .fonte-final{ margin-top:2.5rem; padding-top:1.5rem; border-top:1px solid var(--borda); color:var(--texto-muted); }
.artigo .fonte-final a{ color:var(--primaria); text-decoration:underline; }

/* ---------- Rodapé ---------- */
footer{ margin-top:0; background:var(--primaria); color:#fff; font-size:1rem; }
footer a{ text-decoration:underline; text-underline-offset:3px; }
footer a:hover{ text-decoration-thickness:2px; }
footer :focus-visible{ outline-color:#fff; }
.rd-faixa{ display:flex; align-items:center; padding:1.75rem max(6vw, calc((100vw - var(--largura)) / 2)); flex-wrap:wrap; gap:1rem 1.5rem; }
.rd-faixa + .rd-faixa{ border-top:1px solid color-mix(in srgb, #fff 25%, transparent); padding-top:1.25rem; padding-bottom:1.25rem; font-size:0.95rem; }
.rd-faixa.colunas{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:2rem 3rem; align-items:start; padding-top:3rem; padding-bottom:2.5rem; }
.rd-espacador{ flex:1; }
.rd-coluna-titulo{ font-family:var(--fonte-texto); font-size:0.8rem; font-weight:700; text-transform:uppercase; letter-spacing:0.1em; color:color-mix(in srgb, #fff 80%, transparent); margin-bottom:0.9rem; line-height:1.3; }
.rd-logo svg, .rd-logo img{ height:34px; width:auto; }
.rd-logo{ display:inline-block; margin-bottom:1rem; }
.rd-texto{ display:block; max-width:44ch; }
.rd-menu{ display:flex; align-items:center; flex-wrap:wrap; }
.rd-menu.vertical{ flex-direction:column; align-items:flex-start; gap:0.6rem; }
.rd-menu a{ margin-right:1.4rem; }
.rd-menu.vertical a{ margin-right:0; }
.rd-redes{ display:flex; gap:1rem; }
.rd-contacto.vertical{ display:flex; flex-direction:column; gap:0.4rem; }
.rd-link{ font-weight:700; }

/* Marcador editorial (conteúdo por preencher) — visível para não passar despercebido */
.por-preencher{ background:#F6E7D6; color:#7A430F; border-radius:4px; padding:0 0.3em; }
footer .por-preencher{ background:#F6E7D6; }
