/* =========================================================================
   CEPRONE — camada de identidade (v2)
   Carregada DEPOIS de styles.css. Só redefine fichas de cor e acrescenta
   componentes novos; não altera nenhuma regra antiga, por isso é reversível:
   basta tirar o <link> do base.html.

   As quatro cores vêm do logótipo (static/img/logo.svg):
     amarelo #FFD400 · índigo #3B2FA0 · verde #00A551 · vermelho #EE3124
   ========================================================================= */

:root{
  --amarelo:#FFD400; --indigo:#3B2FA0; --verde:#00A551; --vermelho:#EE3124;
  /* A mono não é decoração: é ela que escreve as linhas curtas em maiúsculas
     — "NAMPULA, MOÇAMBIQUE · DESDE 2021", os rótulos dos números, as
     numerações das secções. Com a mono do sistema cada visitante via uma letra
     diferente e lia-se como acaso; com uma só, lê-se como escolha. */
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
}

/* --- tema escuro: cores aclaradas para contraste sobre fundo escuro --- */
html[data-theme="dark"]{
  --amarelo-c:#FFD400; --indigo-c:#7566ff; --verde-c:#16c46a; --vermelho-c:#ff5546;
  --bg:#070617; --panel:#0e0c24; --panel2:#141130; --line:#241f4f;
  --txt:#edebf7; --muted:#9c97bd;
  --accent:#16c46a; --accent2:#7566ff; --gold:#FFD400; --red:#ff5546;
  --topbar:rgba(7,6,23,.86); --topbar-solid:#070617;
  --hero:linear-gradient(135deg,#0d0a28,#070617 62%);
  --cep-lede-cor:#cdcadf;
  --cep-cell:#17133a; --cep-net:160,155,210; --cep-net-op:.22; --cep-ring-op:.17;
}
/* --- tema claro --- */
html[data-theme="light"]{
  /* #9a7a00 dava 4,07:1 sobre branco e o mínimo para texto é 4,5. Este dá 4,92.
     É o amarelo que ESCREVE; quem pinta fundos continua a ser o --amarelo. */
  --amarelo-c:#8a6d00; --indigo-c:#3B2FA0; --verde-c:#00843f; --vermelho-c:#cf2417;
  --bg:#ffffff; --panel:#ffffff; --panel2:#f5f5fa; --line:#e4e3ef;
  --txt:#13112b; --muted:#5a5775;
  --accent:#00843f; --accent2:#3B2FA0; --gold:#9a7a00; --red:#cf2417;
  --topbar:rgba(255,255,255,.9); --topbar-solid:#ffffff;
  --hero:linear-gradient(135deg,#f6f5ff,#ffffff 62%);
  --cep-lede-cor:#3f3d55;
  --cep-cell:#e8e7f1; --cep-net:60,50,120; --cep-net-op:.26; --cep-ring-op:.14;
}

/* ---------- assinatura: a barra das quatro cores ---------- */
.cep-brandbar{height:3px;display:flex;width:100%}
.cep-brandbar i{flex:1}
.cep-brandbar i:nth-child(1){background:var(--amarelo)}
.cep-brandbar i:nth-child(2){background:var(--indigo)}
.cep-brandbar i:nth-child(3){background:var(--verde)}
.cep-brandbar i:nth-child(4){background:var(--vermelho)}
.topbar{flex-wrap:wrap}
/* O flex:0 0 100% não é decoração: sem ele a barra entra na partilha de espaço
   com o logótipo e, no telemóvel, ficava com 218px dos 390 do ecrã — metade da
   linha às cores e o nome CEPRONE empurrado para o canto, encostado ao botão
   do menu. Com a base fixa em 100% a barra toma a linha inteira e o logótipo
   desce para a sua. */
/* As margens negativas anulam o padding do cabeçalho: sem elas a barra parava
   a 14px de cada lado no telemóvel e ficava uma faixa a meio, em vez da linha
   de ponta a ponta que fecha o topo da página. */
.topbar .cep-brandbar{order:-1;flex:0 0 100%}
/* Só no telemóvel: lá o cabeçalho tem 14px de padding e a barra parava a meio
   caminho das bordas. A largura extra tem de entrar na base do flex — com a
   base em 100% a margem negativa desloca a barra mas não a alarga. No
   computador o padding é outro, e alargar aqui faria a página rolar de lado. */
@media(max-width:820px){
  .topbar .cep-brandbar{flex-basis:calc(100% + 28px);margin:-10px -14px 10px}
}

/* logótipo real em vez da fotografia */
.topbar .brand .logo{background:none!important;padding:0!important;border-radius:0}

/* ---------- escala de tamanhos e de espaço ----------
   Até aqui cada página escolhia os seus números à mão, dentro do HTML:
   clamp(32px,5.4vw,62px) numa, clamp(36px,6.4vw,76px) noutra, 20px de margem
   numa e 22px noutra. Dava páginas que, lado a lado, não pareciam da mesma
   casa — e não havia onde mudar, porque os números viviam espalhados pelos
   templates.
   A escala é geométrica (cada degrau ~1,25x do anterior) e toda ela em clamp,
   para encolher sozinha no telemóvel sem um único media query. */
:root{
  --t-mini:12px;
  --t-pequeno:13.5px;
  --t-base:16px;
  --t-lede:clamp(16px,1.25vw,19px);
  --t-h3:clamp(17px,1.5vw,21px);
  --t-h2:clamp(25px,3.6vw,40px);
  --t-h1:clamp(30px,4.6vw,54px);
  /* O héroi da entrada é o único que passa daqui: é a capa do sítio. */
  --t-heroi:clamp(36px,6.4vw,76px);

  --e-1:8px;  --e-2:14px; --e-3:22px;
  --e-4:34px; --e-5:52px; --e-6:80px;
  /* Ar à volta de uma secção: grande no monitor, contido no telemóvel. */
  --e-abertura:clamp(26px,3vw,46px);
  --e-seccao:clamp(52px,7.5vw,104px);
}

/* ---------- topo de uma página interior ----------
   O mesmo bloco em todas: uma linha curta em maiúsculas a dizer onde se está,
   o título, e uma frase a explicar. As páginas Software e Programas já faziam
   isto bem, mas com os números escritos dentro do HTML de cada uma; as outras
   — Projectos, Publicações, Cupões, Ideias — abriam com um título solto e
   pareciam sobras. Agora é um componente só. */
.pagina-topo{padding:var(--e-5) 0 var(--e-4)}
.pagina-topo .olho{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--muted);margin:0 0 var(--e-2)}
.pagina-topo h1{font-size:var(--t-h1);line-height:1.05;letter-spacing:-.035em;
  max-width:19ch;margin:0;font-weight:800}
.pagina-topo .lede{margin:var(--e-3) 0 0;font-size:var(--t-lede);color:var(--muted);max-width:58ch}
.pagina-topo .accoes{display:flex;flex-wrap:wrap;gap:11px;margin-top:var(--e-4)}
/* As páginas Software e Programas abrem com um héroi próprio, não com o
   componente — mas o título é o mesmo tamanho de todos os outros, em vez de
   trazer o seu clamp escrito à mão dentro do HTML. */
/* ---------- quando não há nada para mostrar ----------
   Uma linha cinzenta a meio de uma página em branco não é um estado vazio: é
   uma página que parece partida. O directório já tinha um bloco bem feito —
   diz o que não há, porquê, e dá um caminho. Aqui fica para as outras. */
.vazio{border:1px dashed var(--line);border-radius:var(--radius);padding:var(--e-5) var(--e-4);
  text-align:center;background:var(--panel)}
.vazio .cic{color:var(--muted);opacity:.6;margin-bottom:var(--e-2)}
.vazio h3{margin:0 0 var(--e-1);font-size:var(--t-h3)}
.vazio p{margin:0 auto;max-width:46ch;color:var(--muted);font-size:var(--t-pequeno)}
.vazio .btn{margin-top:var(--e-3)}
/* Dentro de uma grelha de cartões o bloco ocupava uma célula e ficava uma
   caixa estreita encostada à esquerda, como se fosse o primeiro de muitos. */
.cards>.vazio,.ycards>.vazio,.yresultados>.vazio{grid-column:1/-1}

.titulo-pagina{font-size:var(--t-h1);line-height:1.05;letter-spacing:-.035em;
  max-width:19ch;margin:0;font-weight:800}
/* Um traço com as quatro cores por baixo do título: a mesma assinatura do topo
   da página e do rodapé, a fechar o cabeçalho de cada página interior. */
.pagina-topo::after{content:"";display:block;height:3px;width:120px;margin-top:var(--e-4);
  background:linear-gradient(90deg,var(--verde) 0 25%,var(--amarelo) 25% 50%,
    var(--indigo) 50% 75%,var(--vermelho) 75% 100%);border-radius:2px}

/* ---------- blocos largos ---------- */
/* A MESMA medida do <main> do sítio (1240/22). Eram 1180/20, e bastava uma
   página misturar um bloco .cep-wrap com conteúdo normal para o título começar
   à direita do que vinha por baixo. Sem padding próprio: o <main> já afasta o
   conteúdo das bordas, e repetir esse afastamento aqui dentro era o que fazia
   os títulos entrarem mais do que o resto. */
.cep-wrap{max-width:1240px;margin:0 auto;padding:0}
/* ---------- o intervalo entre duas secções ----------
   Eram 112px em cima e 112px em baixo: entre duas secções seguidas davam 224px
   de nada, mais de um quarto do ecrã num portátil. Entre o fim de «Execução e
   acompanhamento» e o título «Perguntas que nos fazem» havia um ecrã quase
   vazio — nota dada a 9/11/2026, com fotografia.
   Agora 66px de cada lado, o que dá 132px entre duas secções sem fundo: chega
   para se ler como mudança de assunto e não obriga a rolar à procura do que
   vem a seguir. As faixas com cor são outro caso e estão mais abaixo — nelas
   o espaço está DENTRO da cor, por isso pode (e deve) ser maior. */
.cep-sec{padding:clamp(40px,4.6vw,66px) 0;position:relative;scroll-margin-top:92px}
/* ---------- a abertura de QUALQUER página ----------
   O espaço entre o menu e a primeira palavra era decidido por quem calhasse
   abrir a página: 112px nas que abrem com .cep-sec (Software, Programas,
   Sobre), 52px nas que abrem com .pagina-topo, 54px no directório. A mesma
   marca com três aberturas, e a maior delas — 160px de nada — era a primeira
   coisa que se via em três páginas.
   O primeiro bloco de uma página não é um bloco a meio dela: não tem de se
   afastar do que vem antes, porque antes dele só está o menu. Uma medida só,
   aplicada por POSIÇÃO e não por classe, arruma o sítio inteiro de uma vez,
   incluindo as páginas que ainda não existem. O `style:first-child +` está cá
   porque algumas páginas abrem com um <style> próprio antes do conteúdo. */
main>.cep-sec:first-child,
main>style:first-child+.cep-sec,
main>.pagina-topo:first-child,
main>style:first-child+.pagina-topo,
main>.faixa:first-child,
main>style:first-child+.faixa{padding-top:var(--e-abertura)}
/* A faixa clara também sangra.
   Dentro da coluna de 1240px ficava uma mancha de cor com 122px de branco de
   cada lado — «cor no centro, laterais brancas». Uma faixa que muda de cor tem
   de ir de borda a borda, senão não se lê como mudança de capítulo: lê-se como
   um rectângulo cinzento a meio da página.
   Afecta a entrada, o Sobre, o Software e os Programas, que é onde o ritmo
   claro / tingido / claro faz o trabalho. */
/* Mais folga por dentro do que uma secção comum: aqui o espaço tem cor, não é
   buraco. O que o visitante vê como vazio é só o que fica DE FORA da faixa. */
.cep-sec.alt{padding:clamp(52px,6.2vw,88px) 0;background:var(--panel2);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  width:100vw;margin-left:calc(50% - 50vw)}
/* Com a secção a sangrar, é o invólucro que traz o conteúdo de volta à coluna. */
.cep-sec.alt>.cep-wrap{padding:0 22px}
@media(max-width:820px){.cep-sec.alt>.cep-wrap{padding:0 14px}}

/* ---------- secção escura ----------
   Uma página de 5700px toda da mesma cor lê-se como um documento. Uma faixa
   escura a meio dá-lhe um centro: é onde o olho pára, e por isso é onde fica a
   meta de 2036 — o número que a casa quer que fique na cabeça de quem passa.
   Os tokens são redefinidos aqui dentro em vez de cada elemento levar a sua
   cor: tudo o que entra na secção adapta-se sozinho, incluindo os quadrados da
   grelha das 200 e as linhas de separação. */
.cep-sec.escura{padding:clamp(52px,6.2vw,88px) 0;
  --txt:#edecf7; --muted:#a9a3c6; --line:rgba(255,255,255,.15);
  --panel:#1b1640; --panel2:#241e52; --cep-cell:#312a6b;
  background:
    radial-gradient(85% 120% at 85% 0%, rgba(59,47,160,.55), transparent 62%),
    #141029;
  color:var(--txt);border:0;
  /* De ponta a ponta. Dentro da coluna de 1240px a faixa lia-se como um cartão
     grande de cantos rectos, com duas golas brancas dos lados; a sangrar,
     lê-se como o que é — uma mudança de capítulo na página. */
  width:100vw;margin-left:calc(50% - 50vw)}
/* Com a secção a sangrar, é o invólucro que volta a trazer o conteúdo para a
   coluna — senão o texto encostava à borda do ecrã. */
.cep-sec.escura>.cep-wrap{padding:0 22px}
@media(max-width:820px){.cep-sec.escura>.cep-wrap{padding:0 14px}}
.cep-sec.escura h2,.cep-sec.escura h3{color:var(--txt)}
.cep-sec.escura .cep-lead{color:var(--muted)}

/* Barra de progresso da meta. O número sozinho («11 de 200») não diz o
   tamanho do caminho; a barra diz. */
.cep-meta{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,360px);
  gap:var(--e-5);align-items:center;margin-top:var(--e-4)}
@media(max-width:900px){.cep-meta{grid-template-columns:1fr;gap:var(--e-4)}}
.cep-meta-caixa{background:rgba(255,255,255,.055);border:1px solid var(--line);
  border-radius:var(--radius);padding:var(--e-4)}
.cep-meta-rot{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);margin:0 0 var(--e-2)}
.cep-meta-num{display:flex;align-items:baseline;gap:6px;font-weight:800;letter-spacing:-.04em}
.cep-meta-num b{font-size:clamp(40px,5vw,58px);line-height:1}
.cep-meta-num span{font-size:clamp(20px,2.4vw,28px);color:var(--muted)}
.cep-meta-barra{height:8px;border-radius:5px;background:rgba(255,255,255,.12);
  overflow:hidden;margin-top:var(--e-3)}
.cep-meta-barra i{display:block;height:100%;border-radius:5px;
  background:linear-gradient(90deg,var(--verde),var(--amarelo))}
.cep-meta-nota{margin:var(--e-2) 0 0;font-size:var(--t-pequeno);color:var(--muted)}
.cep-h{display:flex;align-items:baseline;gap:16px;margin-bottom:12px}
.cep-num{font-family:var(--mono);font-size:12px;letter-spacing:.1em;font-weight:700}
.cep-sec h2{font-size:clamp(26px,4vw,43px);letter-spacing:-.035em;line-height:1.08;max-width:21ch;margin:0}
.cep-lead{color:var(--muted);max-width:58ch;margin-top:14px;font-size:17px}

/* ---------- héroi ---------- */
/* O heroi tem de caber no primeiro ecra ATE AOS NUMEROS: eles sao a prova do
   que a frase de cima promete, e ficavam abaixo da dobra num portatil comum
   (1536x688 depois da barra de favoritos). O enchimento de 96px em cima era a
   maior parte do problema — somado aos 83px do cabecalho, abria um buraco de
   132px antes de "NAMPULA".
   As medidas em svh ligam o heroi a altura REAL da janela: num ecra alto
   respira, num baixo encolhe, em vez de ter sempre o mesmo enchimento. */
/* 100svh menos o cabeçalho, e não uma percentagem à sorte: o héroi começa por
   baixo de uma barra de ~84px, por isso «encher o primeiro ecrã» é o que sobra
   depois dela. Com 88svh o bloco ficava mais alto do que o espaço livre e os
   números caíam para fora por uma dúzia de píxeis. */
.cep-hero{position:relative;min-height:min(calc(100svh - 88px),760px);display:flex;align-items:center;
  padding:clamp(28px,5.5svh,72px) 0 clamp(20px,4.5svh,56px);overflow:hidden}
/* Num ecrã estreito o título encolhe para 26px e o héroi fica muito mais curto
   do que o min-height: o centrar deixava duzentos píxeis de nada por cima do
   "NAMPULA". Sem altura mínima, o bloco passa a medir o que o conteúdo mede. */
@media(max-width:820px){.cep-hero{min-height:0}}
/* A rede cobre o héroi todo, de ponta a ponta: apagá-la do lado esquerdo
   resolvia o contraste mas deixava metade do héroi seca. A correcção está no
   desenho — ver o módulo da rede em ceprone-v2.js. */
#cep-net{position:absolute;inset:0;width:100%;height:100%}
/* O logótipo da direita é a marca de água do héroi.
   O problema original nunca foi o movimento: era o logótipo sair 16vw fora do
   ecrã e rodar meio cortado — de relance não se lia como a marca, lia-se como
   um risco a passar. Inteiro dentro da janela, a rotação volta a fazer sentido
   e é ela que dá vida ao fundo.
   A altura entra na conta (70svh) porque num portátil baixo um círculo medido
   só pela largura saía pelo fundo do héroi e voltava a aparecer cortado.
   90s por volta: devagar o suficiente para não competir com o título — quem
   está a ler não vê nada a mexer, quem olha para o fundo percebe que roda. */
.cep-ring{position:absolute;right:clamp(10px,3vw,64px);top:50%;translate:0 -50%;
  width:min(52vw,70svh,680px);height:min(52vw,70svh,680px);
  opacity:var(--cep-ring-op);pointer-events:none;
  animation:cep-spin 90s linear infinite}
@keyframes cep-spin{to{rotate:360deg}}
.cep-hero .cep-wrap{position:relative;z-index:2}
/* Um traço curto antes da linha de secção. É o detalhe que faz a linha parecer
   um rótulo posto de propósito e não texto pequeno à solta. */
.cep-eyebrow{display:flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--muted);margin-bottom:clamp(12px,2.4svh,24px)}
/* No héroi a linha de cima está sobre o mesmo fundo desenhado que a frase de
   entrada, por isso segue o mesmo tom e não o cinzento do resto do sítio. */
.cep-hero .cep-eyebrow{color:var(--cep-lede-cor)}
.cep-eyebrow::before{content:"";flex:none;width:22px;height:2px;border-radius:2px;
  background:var(--verde);opacity:.9}
/* O min() com svh e o que trava o titulo num ecra baixo: so com vw, um
   portatil largo mas baixo levava tres linhas de 76px e empurrava os numeros
   para fora. */
.cep-hero h1{font-size:min(clamp(36px,6.4vw,76px),8.2svh);line-height:1.03;letter-spacing:-.04em;
  font-weight:800;max-width:15ch;margin:0}
.cep-hero h1 em{font-style:normal;color:var(--verde-c)}
/* A frase de entrada assenta sobre um fundo com desenho — rede de pontos e
   anel — e não sobre branco liso como o resto do texto secundário do sítio.
   Com o cinzento comum media 4,1:1 onde o mínimo é 4,5:1; um tom mais firme
   resolve-o em todo o héroi de uma vez, sem apagar o fundo. */
.cep-hero .cep-lede{margin-top:clamp(14px,2.4svh,24px);font-size:clamp(16px,1.9vw,19px);
  color:var(--cep-lede-cor);max-width:56ch}
.cep-hero .cep-lede b{color:var(--txt);font-weight:600}
.cep-cta{display:flex;flex-wrap:wrap;gap:11px;margin-top:clamp(20px,3.4svh,34px)}

/* números do héroi */
.cep-stats{display:flex;flex-wrap:wrap;margin-top:clamp(20px,4.2svh,56px);border-top:1px solid var(--line)}
.cep-stat{padding:20px 32px 0 0;border-top:3px solid transparent;margin-top:-1px}
.cep-stat:nth-child(1){border-top-color:var(--verde)}
.cep-stat:nth-child(2){border-top-color:var(--amarelo)}
.cep-stat:nth-child(3){border-top-color:var(--indigo)}
.cep-stat:nth-child(4){border-top-color:var(--vermelho)}
.cep-stat b{display:block;font-size:clamp(23px,3vw,32px);font-weight:800;letter-spacing:-.03em;
  font-variant-numeric:tabular-nums}
.cep-stat span{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}

/* ---------- cartões com cor da marca ---------- */
.cep-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(244px,1fr));gap:16px;margin-top:48px}
.cep-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:28px 24px 32px;position:relative;overflow:hidden;transition:transform .3s,border-color .3s}
.cep-card::before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--cor,var(--verde))}
.cep-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--cor,var(--verde)) 45%,var(--line))}
/* A seta no fim do cartão: diz que o cartão leva a algum lado. Sem ela um
   cartão clicável e um cartão de leitura são indistinguíveis. */
a.cep-card{text-decoration:none;color:inherit;display:flex;flex-direction:column}
a.cep-card .seta{margin-top:auto;padding-top:var(--e-3);display:inline-flex;align-items:center;
  gap:7px;font-weight:700;font-size:14px;color:var(--cor,var(--verde-c))}
a.cep-card:hover .seta{gap:11px}
a.cep-card .seta .cic{transition:transform .18s ease}
a.cep-card:hover .seta .cic{transform:translateX(2px)}
.cep-card .k{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.16em;display:block;margin-bottom:16px}
.cep-card svg.ic{width:30px;height:30px;color:var(--cor,var(--verde));margin-bottom:16px}
.cep-card h3{font-size:18.5px;letter-spacing:-.02em;margin:0 0 9px}
.cep-card p{color:var(--muted);font-size:14.5px;margin:0}

/* ---------- grelha das 200 ---------- */
.cep-g200{display:grid;grid-template-columns:repeat(25,1fr);gap:5px;margin-top:40px}
/* Os quadrados deixaram de ser todos <div>: os vivos são <a> quando têm para
   onde levar e <i> quando não têm. O selector tem de apanhar os três. */
.cep-g200>*{aspect-ratio:1;border-radius:3px;background:var(--cep-cell);
  transition:background .5s,box-shadow .5s,transform .18s ease;min-width:0}
/* Cada quadrado vivo é uma âncora para a empresa na lista de baixo: um
   quadrado de doze píxeis não cabe um nome. Ver o bloco .viva mais abaixo. */
.cep-legend{display:flex;flex-wrap:wrap;gap:22px;margin-top:24px;font-family:var(--mono);
  font-size:11.5px;color:var(--muted);letter-spacing:.09em;text-transform:uppercase}
.cep-legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px;vertical-align:middle}

/* ---------- terminal ---------- */
.cep-term{margin-top:44px;border:1px solid var(--line);border-radius:12px;overflow:hidden;
  background:#0a0820}
.cep-term-bar{display:flex;align-items:center;gap:8px;padding:11px 15px;border-bottom:1px solid #241f4f;background:#13102e}
.cep-term-bar i{width:10px;height:10px;border-radius:50%;display:block}
.cep-term-bar i:nth-child(1){background:var(--vermelho)}
.cep-term-bar i:nth-child(2){background:var(--amarelo)}
.cep-term-bar i:nth-child(3){background:var(--verde)}
.cep-term-bar span{font-family:var(--mono);font-size:11.5px;color:#8d88ad;margin-left:8px}
.cep-term-body{padding:20px 18px;font-family:var(--mono);font-size:13px;line-height:2;
  color:#b9b4d6;overflow-x:auto;white-space:pre}
.cep-term-body .g{color:#16c46a}.cep-term-body .m{color:#8d88ad}.cep-term-body .y{color:#FFD400}
.cep-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.cep-chip{font-family:var(--mono);font-size:12px;color:var(--muted);border:1px solid var(--line);
  padding:6px 13px;border-radius:7px}

/* ---------- lista de programas ---------- */
.cep-progs{display:grid;gap:11px;margin-top:44px}
.cep-prog{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--cor,var(--verde));
  border-radius:10px;display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:18px;align-items:center;
  padding:22px 24px;transition:background .25s;color:inherit;text-decoration:none}
.cep-prog:hover{background:var(--panel2)}
.cep-prog .pn{font-family:var(--mono);font-size:12px;color:var(--cor,var(--verde));font-weight:700}
.cep-prog h3{font-size:18px;letter-spacing:-.02em;margin:0}
.cep-prog p{color:var(--muted);font-size:14.5px;margin:3px 0 0}
.cep-prog .ar{color:var(--muted);transition:transform .25s,color .25s}
.cep-prog:hover .ar{transform:translateX(5px);color:var(--cor,var(--verde))}

/* ---------- quadrados vivos da grelha das 200 ----------
   Deixaram de ser decoração: cada um é uma empresa e, quando há para onde ir,
   é um link. O nome aparece ao passar o rato num ecrã grande; no telemóvel,
   onde não há rato, quem responde é a lista por baixo. */
.cep-g200 .viva{position:relative;background:var(--cor);border-radius:3px;
  display:block;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}
a.viva:hover,a.viva:focus-visible{transform:scale(1.35);z-index:3;
  box-shadow:0 6px 18px rgba(0,0,0,.45);outline:none}
/* O nome fica escondido mas legível por um leitor de ecrã, e aparece numa
   etiqueta ao passar o rato. Um `display:none` tirava-o também a quem lê com
   leitor de ecrã, e aí o quadrado voltava a não dizer nada a ninguém. */
.cep-g200 .viva span{position:absolute;left:50%;bottom:calc(100% + 8px);translate:-50% 0;
  background:#141029;color:#fff;font-size:12px;font-weight:600;white-space:nowrap;
  padding:5px 9px;border-radius:7px;opacity:0;pointer-events:none;transition:opacity .15s ease;
  box-shadow:0 6px 18px rgba(0,0,0,.4);z-index:4}
.cep-g200 .viva:hover span,.cep-g200 .viva:focus-visible span{opacity:1}
@media(hover:none){.cep-g200 .viva span{display:none}}

/* ---------- lista das participadas ---------- */
.cep-participadas{list-style:none;margin:var(--e-4) 0 0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:var(--e-2)}
.cep-participadas li{border-left:3px solid var(--cor);padding:4px 0 4px var(--e-3);
  border-radius:0 7px 7px 0;scroll-margin-top:96px;transition:background .3s,box-shadow .3s}
/* Vindo de um quadrado da grelha, a empresa tem de se dar a ver: sem isto a
   página saltava para o sítio certo e a pessoa ficava a olhar para uma lista
   sem perceber qual das entradas é que tinha sido escolhida. :target é do
   próprio navegador — não precisa de uma linha de JavaScript. */
.cep-participadas li:target{background:color-mix(in srgb,var(--cor) 11%,transparent);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--cor) 32%,transparent)}
.cep-participadas li:target>a,.cep-participadas li:target>b{color:var(--cor)}
.cep-participadas a,.cep-participadas b{display:inline-flex;align-items:center;gap:7px;
  font-weight:700;font-size:15.5px;color:inherit;letter-spacing:-.01em}
.cep-participadas a:hover{color:var(--cor);text-decoration:none}
.cep-participadas a .cic{opacity:.55;transition:transform .15s ease}
.cep-participadas a:hover .cic{transform:translateX(2px);opacity:1}
.cep-participadas span{display:block;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.cep-participadas p{margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.6}

/* ---------- faixa de garantias ----------
   Quatro promessas curtas logo abaixo do héroi. Não são números — os números
   já estão no héroi — são o que a casa se compromete a fazer. É a primeira
   resposta à pergunta que quem chega tem na cabeça: «e o que é que isto me
   dá?». */
/* Duas camadas: a de fora leva o fundo e as linhas e vai de borda a borda; a
   de dentro mantém os quatro selos alinhados com a coluna do resto da página.
   Com uma só, ou o fundo ficava com golas brancas dos lados, ou os selos
   espalhavam-se para fora do alinhamento de tudo o resto. */
.cep-selos-faixa{width:100vw;margin-left:calc(50% - 50vw);
  background:var(--panel);border-block:1px solid var(--line)}
.cep-selos{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:0;max-width:1240px;margin:0 auto;padding:0 22px}
@media(max-width:820px){.cep-selos{padding:0 14px}}
.cep-selo{display:flex;align-items:flex-start;gap:12px;padding:var(--e-3) var(--e-3)}
.cep-selo+.cep-selo{border-left:1px solid var(--line)}
@media(max-width:820px){.cep-selo+.cep-selo{border-left:0;border-top:1px solid var(--line)}}
.cep-selo .cic{flex:none;margin-top:2px;color:var(--cor,var(--verde-c))}
.cep-selo b{display:block;font-size:14.5px;letter-spacing:-.01em}
.cep-selo span{display:block;color:var(--muted);font-size:var(--t-pequeno);margin-top:3px;line-height:1.5}

/* ---------- como começamos ----------
   Uma coluna de passos numerados. Quem chega a um sítio de serviços quer saber
   o que acontece a seguir, e isso não estava escrito em lado nenhum: a pessoa
   via o que fazemos, mas não como se começa. */
.cep-passos{display:grid;gap:var(--e-2);margin-top:var(--e-4);counter-reset:passo}
.cep-passo{display:grid;grid-template-columns:auto 1fr;gap:var(--e-3);align-items:start;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:var(--e-3);box-shadow:var(--sombra-baixa)}
.cep-passo .n{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.08em;
  color:var(--cor,var(--verde-c));border:1px solid currentColor;border-radius:9px;
  width:40px;height:40px;display:grid;place-items:center}
.cep-passo h3{margin:0 0 4px;font-size:var(--t-h3)}
.cep-passo p{margin:0;color:var(--muted);font-size:var(--t-pequeno);line-height:1.6}
.cep-passo .q{display:block;margin-top:7px;font-size:12.5px;color:var(--cor,var(--verde-c));font-weight:700}

/* ---------- perguntas ---------- */
.cep-faq{margin-top:var(--e-4);border-top:1px solid var(--line)}
.cep-faq details{border-bottom:1px solid var(--line)}
.cep-faq summary{cursor:pointer;list-style:none;padding:var(--e-3) 40px var(--e-3) 0;
  position:relative;font-weight:700;font-size:16.5px;letter-spacing:-.01em}
.cep-faq summary::-webkit-details-marker{display:none}
/* O sinal é desenhado em CSS e não com um ícone: roda ao abrir, e continua a
   funcionar mesmo que o JavaScript não corra — <details> é do navegador. */
.cep-faq summary::after{content:"";position:absolute;right:8px;top:50%;width:11px;height:11px;
  border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);
  transform:translateY(-70%) rotate(45deg);transition:transform .2s ease}
.cep-faq details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.cep-faq .resp{padding:0 0 var(--e-3);color:var(--muted);font-size:15px;line-height:1.7;max-width:72ch}
.cep-faq .resp a{color:var(--verde-c);font-weight:600}

/* ---------- equipa ---------- */
/* As fotografias eram medalhas de 88px: não se via quem eram as pessoas, que é
   a única coisa que uma página de equipa tem para dar. Passam a retratos a
   ocupar a largura do cartão, em 4:5 — o formato de um retrato de pé.
   object-position mais alto do que o centro porque numa fotografia de corpo a
   cabeça fica no terço de cima; cortada ao centro, aparecia o peito. */
.cep-team{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));
  gap:var(--e-3);margin-top:var(--e-5)}
.cep-person{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--sombra-baixa);
  transition:box-shadow .18s ease,transform .18s ease}
.cep-person:hover{box-shadow:var(--sombra-alta);transform:translateY(-2px)}
.cep-person .av{display:block;width:100%;aspect-ratio:4/5;height:auto;object-fit:cover;
  object-position:center 24%;background:var(--panel2);border:0;border-radius:0}
/* Sem fotografia, a inicial preenche o mesmo espaço em vez de deixar um buraco:
   a linha de cartões mantém a altura toda igual. */
.cep-person .av.ph{display:grid;place-items:center;font-size:clamp(44px,7vw,68px);font-weight:800;
  color:var(--cor-txt,var(--verde-c));font-family:var(--mono);
  background:color-mix(in srgb,var(--cor,var(--verde)) 9%,var(--panel2))}
/* O traço da cor por baixo do retrato liga a pessoa à cor que lhe calhou. */
.cep-person .dados{padding:var(--e-3) var(--e-3) var(--e-4);
  border-top:3px solid var(--cor,var(--verde))}
.cep-person h3{font-size:17.5px;margin:0 0 4px;letter-spacing:-.015em}
.cep-person .role{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--cor-txt,var(--verde-c));display:block;margin-bottom:10px}
.cep-person p{color:var(--muted);font-size:13.5px;margin:0;line-height:1.6}

/* ---------- texto corrido ---------- */
.cep-prose{max-width:62ch}
.cep-prose p{color:var(--muted);font-size:17px;margin:0 0 16px}
.cep-prose p strong{color:var(--txt);font-weight:600}

/* ---------- linha do tempo ---------- */
.cep-tl{margin-top:40px;border-left:2px solid var(--line);padding-left:24px;list-style:none}
.cep-tl li{margin-bottom:24px;position:relative}
.cep-tl li::before{content:"";position:absolute;left:-31px;top:6px;width:11px;height:11px;border-radius:50%;
  background:var(--bg);border:2px solid var(--cor,var(--verde))}
.cep-tl b{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--cor,var(--verde));margin-bottom:3px}
.cep-tl p{color:var(--muted);font-size:15px;margin:0}

/* ---------- aparecer ao rolar ---------- */
/* Os blocos que aparecem ao rolar só se escondem se o JavaScript estiver a
   correr (a classe .js é posta no <html> pelo script do cabeçalho, antes de a
   página pintar). Antes, o opacity:0 valia sempre: sem JavaScript — ou nos
   segundos antes de ele chegar numa ligação lenta, que aqui é o caso comum —
   a página ficava com metade do conteúdo invisível para sempre. */
html.js .cep-rv{opacity:0;transform:translateY(18px);
  transition:opacity .65s cubic-bezier(.2,.7,.3,1),transform .65s cubic-bezier(.2,.7,.3,1)}
html.js .cep-rv.in{opacity:1;transform:none}

@media(max-width:860px){
  .cep-g200{grid-template-columns:repeat(20,1fr)}
  .cep-prog{grid-template-columns:1fr;gap:5px}
  .cep-prog .ar{display:none}
  .cep-stat{padding-right:24px}
  .cep-ring{opacity:calc(var(--cep-ring-op) * .6)}
}
@media(prefers-reduced-motion:reduce){
  /* Quem pediu ao sistema operativo para parar as animações é para levar a
     sério: o anel fica quieto e o texto aparece sem deslizar. */
  .cep-ring{animation:none}
  html.js .cep-rv{opacity:1;transform:none;transition:none}
}

/* ---------- páginas de erro ---------- */
.cep-erro{text-align:center;min-height:62vh;display:grid;align-content:center}
.cep-erro-cod{font:800 clamp(72px,16vw,172px)/1 var(--mono);letter-spacing:-.06em;
  color:var(--line);margin:0 0 8px;user-select:none}
.cep-erro-cod span{color:var(--vermelho)}
.cep-erro h1{font-size:clamp(26px,4.4vw,42px);letter-spacing:-.035em;line-height:1.1;margin:0 0 14px}
.cep-erro .cep-lead{margin:0 auto}
.cep-erro-busca{display:flex;gap:10px;max-width:470px;margin:32px auto 0}
.cep-erro-busca input{flex:1;background:var(--panel2);border:1px solid var(--line);border-radius:9px;
  padding:14px 18px;color:var(--txt);font:inherit;font-size:15px}
.cep-erro-busca input:focus{outline:none;border-color:var(--verde-c)}
.cep-erro-links{display:flex;flex-wrap:wrap;gap:8px 22px;justify-content:center;margin-top:34px;font-size:14.5px}
.cep-erro-links a{color:var(--muted);border-bottom:1px solid transparent;padding-bottom:2px}
.cep-erro-links a:hover{color:var(--txt);border-bottom-color:var(--verde-c)}
.cep-erro .cep-cta{justify-content:center}
.cep-erro-nota{margin-top:26px;color:var(--muted);font-size:14px}

/* ---------- Sobre: texto à esquerda, números à direita ---------- */
.cep-split{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr);gap:56px;align-items:start}
.cep-painel{background:var(--panel2);border:1px solid var(--line);border-radius:14px;
  padding:30px 28px;position:relative;overflow:hidden}
.cep-painel::before{content:"";position:absolute;inset:0 0 auto;height:3px;
  background:linear-gradient(90deg,var(--amarelo) 25%,var(--indigo) 25% 50%,var(--verde) 50% 75%,var(--vermelho) 75%)}
.cep-painel-t{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--muted);margin:0 0 22px}
.cep-painel dl{margin:0;display:grid;gap:20px}
.cep-painel div{border-left:3px solid var(--cor,var(--verde));padding-left:16px}
.cep-painel dt{font:800 clamp(22px,2.8vw,30px)/1 inherit;letter-spacing:-.03em;color:var(--txt);
  font-variant-numeric:tabular-nums}
.cep-painel dd{margin:4px 0 0;font-size:14px;color:var(--muted)}
@media(max-width:900px){.cep-split{grid-template-columns:1fr;gap:34px}}

/* ---------- faixa de abertura ----------
   Usada pelo directório e pelo cadastro. Eram duas faixas diferentes, cada uma
   com as suas cores escritas à mão — a do directório um cinzento liso, a do
   cadastro um gradiente de verde-azulado e azul-claro que não são cores da
   casa. Agora é um fundo só, tingido com o verde e o índigo da marca, e o
   título segue a escala do resto do sítio. */
.faixa{position:relative;overflow:hidden;border:1px solid var(--line);
  border-radius:var(--radius);padding:clamp(30px,4vw,54px) clamp(22px,3vw,44px);
  margin-bottom:var(--e-4);
  background:
    radial-gradient(120% 140% at 88% 10%, color-mix(in srgb,var(--indigo) 11%,transparent), transparent 62%),
    radial-gradient(90% 120% at 4% 100%, color-mix(in srgb,var(--verde) 12%,transparent), transparent 60%),
    var(--panel)}
.faixa>*{position:relative;z-index:2}
.faixa .olho{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--muted);margin:0 0 var(--e-2)}
.faixa h1{font-size:var(--t-h1);letter-spacing:-.035em;line-height:1.05;margin:0;
  max-width:18ch;font-weight:800}
/* margin-top só: com a forma curta (margin:X 0 0) a margem de baixo era posta
   a zero e, no directório, a frase encostava à caixa de pesquisa que vem logo
   a seguir. */
.faixa .lede{color:var(--muted);font-size:var(--t-lede);margin-top:var(--e-3);max-width:54ch}
.cep-dirhero .lede{margin-bottom:var(--e-4)}
/* A régua das quatro cores assenta no fundo da faixa, de ponta a ponta: é a
   mesma assinatura do topo da página e do rodapé, aqui a fechar o bloco. */
.faixa::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;
  background:linear-gradient(90deg,var(--amarelo) 0 25%,var(--indigo) 25% 50%,
    var(--verde) 50% 75%,var(--vermelho) 75% 100%)}

/* ---------- héroi de pesquisa do directório ---------- */
.cep-dirhero{margin-bottom:var(--e-4)}
.cep-dirhero .cep-wrap{position:relative;z-index:2}
.cep-dirhero h1{font-size:var(--t-h1);letter-spacing:-.035em;line-height:1.05;
  margin:0 0 var(--e-2);max-width:18ch;font-weight:800}
.cep-dirhero p{color:var(--muted);font-size:var(--t-lede);margin:0 0 var(--e-4);max-width:54ch}
.cep-dirbusca{display:flex;flex-wrap:wrap;gap:10px;max-width:760px}
.cep-dirbusca .fld{flex:1 1 200px;display:flex;flex-direction:column;gap:5px}
.cep-dirbusca label{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.cep-dirbusca input,.cep-dirbusca select{background:var(--panel);border:1px solid var(--line);
  border-radius:9px;padding:13px 16px;color:var(--txt);font:inherit;font-size:15px;width:100%}
.cep-dirbusca input:focus,.cep-dirbusca select:focus{outline:none;border-color:var(--verde-c)}
.cep-dirbusca .btn{align-self:flex-end;padding:13px 28px}
/* Saía 9vw fora da faixa e via-se um arco cortado — o mesmo defeito que o
   héroi da entrada tinha. Dentro, inteiro, e discreto. */
.cep-dirring{position:absolute;right:clamp(8px,2vw,40px);top:50%;translate:0 -50%;
  width:min(28vw,74%,300px);height:min(28vw,74%,300px);
  max-width:420px;max-height:420px;opacity:calc(var(--cep-ring-op) * .8);pointer-events:none}
@media(max-width:760px){.cep-dirring{display:none}.cep-dirbusca .btn{width:100%}}

/* Nenhum cartão empurra a grelha para fora da coluna: ver a nota em
   styles.css, em .yresultados. */
.cep-cards>*,.cep-selos>*,.cep-team>*,.cep-participadas>*,.cep-split>*,
.cep-progs>*,.cep-passos>*{min-width:0}

/* ---------- o fim da página ----------
   A última secção punha 66px por baixo do último botão e o <main> punha mais
   80: 146px de branco entre o fecho e o rodapé, que é onde a página devia
   acabar e não ficar a pairar. Quando o último bloco é uma secção, ela própria
   trata do espaço e o <main> não acrescenta nada.
   O `:has()` não existe em navegadores antigos; aí fica como estava, que é
   folgado mas não partido. */
main>.cep-sec:last-child{padding-bottom:clamp(48px,5.4vw,76px)}
main:has(>.cep-sec:last-child){padding-bottom:0}
