/* APM — variações de estilo de bloco. Registadas em inc/block-styles.php.
   Aqui vive a decoração que as maquetas faziam com marcação própria, para que
   o conteúdo continue a ser blocos do núcleo. Nada literal de cor.

   As medidas são as das maquetas .dc.html, lidas dos estilos em linha. */

/* ── Parágrafos ──────────────────────────────────────────────── */
.is-style-apm-eyebrow,
.is-style-apm-eyebrow-plain{
  display:flex;align-items:center;gap:.45rem;
  margin:0 0 .75rem;
  font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--color-secondary-700);
}
/* Nas maquetas era um glifo «square» escrito no texto; aqui é decoração, para
   não ser anunciado pelo leitor de ecrã nem editado como conteúdo. */
.is-style-apm-eyebrow::before{
  content:"square";
  font-family:'Material Symbols Outlined';
  font-variation-settings:'FILL' 1;
  font-size:.6rem;line-height:1;font-weight:normal;letter-spacing:normal;
  flex:none;
}
/* O antetítulo do hero não leva marca e respira mais abaixo. */
.is-style-apm-eyebrow-plain{margin-bottom:1rem}

.is-style-apm-lead{margin:1.25rem 0 0;font-size:1.05rem;max-width:32rem}
.is-style-apm-meta{font-size:var(--wp--preset--font-size--meta);color:var(--color-neutral-600)}

/* ── Cabeçalho de secção centrado ────────────────────────────────
   Nas maquetas é um <div style="text-align:center;margin-bottom:2rem"> a
   envolver antetítulo e título. Aqui é um estilo de grupo.            */
.is-style-apm-section-head{text-align:center;margin-bottom:2rem}
.is-style-apm-section-head .is-style-apm-eyebrow,
.is-style-apm-section-head .is-style-apm-eyebrow-plain{justify-content:center}
.is-style-apm-section-head :where(h2,h3){margin-left:auto;margin-right:auto}

/* ── Título com rabisco ──────────────────────────────────────────
   O rabisco sublinha o texto que o editor marcou com o formato de
   destaque. É uma máscara e não um SVG na marcação, para que o título
   continue a ser um core/heading editável — e a cor fica no token,
   porque um data: URI não conhece currentColor.

   Na maqueta o traço começa a 15,5% do texto e ocupa 83% da largura.  */
.is-style-apm-squiggle mark{
  position:relative;display:inline-block;
  background:none;color:var(--color-yellow-500);
}
.is-style-apm-squiggle mark::after{
  content:"";position:absolute;left:15.5%;bottom:-.12em;
  width:83%;height:.34em;
  background:var(--color-yellow-500);
  -webkit-mask-image:var(--apm-squiggle);mask-image:var(--apm-squiggle);
  -webkit-mask-size:100% 100%;mask-size:100% 100%;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  rotate:-.5deg;
  animation:apm-squiggle-draw 900ms cubic-bezier(.22,.61,.36,1) 350ms both;
}
:root{
  --apm-squiggle:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 877 26' preserveAspectRatio='none'%3E%3Cpath d='M 0 14.4 C 110.554 6 437.438 -0.3 860.531 14.4' fill='none' stroke='%23000' stroke-width='5' stroke-linecap='round' transform='translate(8.235 6.825)'/%3E%3C/svg%3E");
}
@keyframes apm-squiggle-draw{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@media (prefers-reduced-motion:reduce){
  .is-style-apm-squiggle mark::after{animation:none;clip-path:none}
}

/* ── Botões ──────────────────────────────────────────────────────
   Duas escalas, como nas maquetas: 56 px no hero e na adesão, 48 px na
   acção corrente das secções. O piso ao toque nunca desce de 48 px
   (§DECISOES), pelo que só a escala de 56 px precisa de recuar.       */
.is-style-apm-cta > .wp-block-button__link,
.is-style-apm-ghost > .wp-block-button__link,
.is-style-apm-primary > .wp-block-button__link,
.is-style-apm-on-brand > .wp-block-button__link{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  padding:0 1.75rem;
  border:1px solid transparent;border-radius:999px;
  font-weight:var(--w-btn);
  line-height:var(--lh-btn);letter-spacing:var(--tk-btn);
  text-decoration:none;
}
/* A seta é decoração: entra pelo CSS e não pelo texto do botão, para
   não ser lida nem editada como conteúdo.                            */
.is-style-apm-cta > .wp-block-button__link::after,
.is-style-apm-primary > .wp-block-button__link::after,
.is-style-apm-on-brand > .wp-block-button__link::after{
  content:"arrow_forward";
  font-family:'Material Symbols Outlined';font-size:1.25rem;line-height:1;
  font-weight:normal;letter-spacing:normal;
}

/* Escala do hero: 56 px, corpo maior. */
.is-style-apm-cta > .wp-block-button__link,
.is-style-apm-ghost > .wp-block-button__link{
  min-height:var(--h-btn-lg);font-size:var(--f-btn-lg);
}
/* Escala corrente: 48 px. */
.is-style-apm-primary > .wp-block-button__link,
.is-style-apm-on-brand > .wp-block-button__link,
.is-style-apm-call > .wp-block-button__link{
  min-height:var(--h-btn-md);font-size:var(--f-btn);
}
/* Telefone: o glifo abre a linha, porque o que se lê depois é o número. */
.is-style-apm-call > .wp-block-button__link{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  padding:0 1.1rem;border:1px solid var(--color-primary-600);border-radius:999px;
  background:var(--color-primary-600);color:var(--color-white);
  font-weight:var(--w-btn);line-height:var(--lh-btn);letter-spacing:var(--tk-btn);
  text-decoration:none;
}
.is-style-apm-call > .wp-block-button__link:hover{
  background:var(--color-primary-700);border-color:var(--color-primary-700);
  color:var(--color-white);
}
.is-style-apm-call > .wp-block-button__link::before{
  content:"call";
  font-family:'Material Symbols Outlined';font-size:1.15rem;line-height:1;
  font-weight:normal;letter-spacing:normal;
}

/* Amarelo sobre a marca, texto quase preto. */
.is-style-apm-cta > .wp-block-button__link,
.is-style-apm-on-brand > .wp-block-button__link{
  background:var(--color-yellow-500);color:var(--color-black);
  border-color:var(--color-yellow-500);
}
.is-style-apm-cta > .wp-block-button__link:hover,
.is-style-apm-on-brand > .wp-block-button__link:hover{
  background:var(--color-yellow-600);border-color:var(--color-yellow-600);
  color:var(--color-black);
}
/* Verde, a acção corrente sobre fundo claro. */
.is-style-apm-primary > .wp-block-button__link{
  background:var(--color-primary-600);color:var(--color-white);
  border-color:var(--color-primary-600);
}
.is-style-apm-primary > .wp-block-button__link:hover{
  background:var(--color-primary-700);border-color:var(--color-primary-700);
  color:var(--color-white);
}
/* Contorno, a acção secundária do hero. */
.is-style-apm-ghost > .wp-block-button__link{
  background:transparent;color:var(--color-white);border-color:var(--color-brand-300);
}
.is-style-apm-ghost > .wp-block-button__link:hover{
  background:var(--color-brand-800);border-color:var(--color-white);color:var(--color-white);
}
@media (any-pointer:coarse){
  .is-style-apm-cta > .wp-block-button__link,
  .is-style-apm-ghost > .wp-block-button__link{min-height:var(--h-btn-md)}
}

/* ── Hero: colunas, figura e molduras ────────────────────────────── */
.is-style-apm-hero{align-items:stretch;gap:clamp(2rem,4vw,3rem)}
.is-style-apm-hero > .wp-block-column:first-child{max-width:34rem}

/* Âncora do cartão flutuante. Sem position:relative aqui o absolute
   do cartão sobe até à secção e sai da fotografia.                   */
.is-style-apm-figure{position:relative}

/* Molduras recortam, imagens preenchem (§DECISOES): sem isto a
   proporção intrínseca da fotografia estica a moldura.

   Moldura do hero: retrato em ecrã estreito, e a partir de 48em uma
   altura fixa, para que a fotografia deixe de mandar na altura da
   secção e o cartão flutuante se mantenha sobre o canto.             */
.is-style-apm-frame img,
.is-style-apm-frame-wide img{
  width:100%;object-fit:cover;border-radius:1.25rem;display:block;
}
.is-style-apm-frame img{aspect-ratio:1.15}
/* Moldura das figuras de secção: 4:5 em ecrã estreito, 16:10 a partir
   de 48em, como no Sobre nós e no Porquê ser associado.              */
.is-style-apm-frame-wide img{aspect-ratio:4/5}
@media (min-width:48em){
  .is-style-apm-frame img{aspect-ratio:auto;height:clamp(22rem,30vw,34rem)}
  .is-style-apm-frame-wide img{aspect-ratio:16/10}
}

/* ── Cartões ─────────────────────────────────────────────────────── */
.is-style-apm-card{
  background:var(--color-white);color:var(--color-neutral-900);
  border:1px solid var(--color-neutral-300);
  border-radius:1rem;padding:1.5rem;
}
/* O cartão flutuante atravessa a fotografia e desce abaixo do seu bordo:
   é esse recorte que a maqueta pede à substituição da imagem preservar. */
.is-style-apm-float-card{
  background:var(--color-white);color:var(--color-neutral-900);
  border:1px solid var(--color-neutral-300);
  border-radius:1rem;padding:1rem;
  max-width:15rem;
  /* Abaixo de 48em o cartao nao flutua: assenta debaixo da fotografia, e a
     margem e explicita porque nao ha intervalo global entre blocos. */
  margin-top:1.25rem;
}
@media (min-width:48em){
  .is-style-apm-float-card{position:absolute;right:1rem;bottom:-2.5rem;margin:0;z-index:1}
  /* No Porquê ser associado o cartão encosta ao canto oposto. */
  .is-style-apm-float-card-left{right:auto;left:1rem}
}
/* Dentro de um cartão flutuante o botão desce à escala miúda, como na
   maqueta: o cartão tem 15rem e um botão de corpo inteiro não caberia. */
.is-style-apm-float-card .is-style-apm-primary > .wp-block-button__link{
  font-size:var(--f-btn-sm);padding:0 1.1rem;gap:.4rem;
}
.is-style-apm-float-card p{margin:0}
.is-style-apm-float-card p + p{margin-top:.5rem}
.is-style-apm-float-card .is-style-apm-timeline{margin-top:.7rem}
.is-style-apm-float-card .is-style-apm-timeline + p{margin-top:.75rem}

/* ── Lista com visto ─────────────────────────────────────────────── */
.is-style-apm-checks{list-style:none;padding:0;margin:0;display:grid;gap:.85rem;font-size:.95rem}
.is-style-apm-checks li{display:flex;gap:.6rem;align-items:center}
.is-style-apm-checks li::before{
  content:"check_circle";
  font-family:'Material Symbols Outlined';font-size:1.3rem;line-height:1;
  font-weight:normal;letter-spacing:normal;
  flex:none;color:var(--color-secondary-700);
}

/* ── Pergunta frequente ──────────────────────────────────────────── */
.is-style-apm-faq{
  border:1px solid var(--color-neutral-300);border-radius:.85rem;
  padding:1rem 1.25rem;background:var(--color-white);
}
.is-style-apm-faq + .is-style-apm-faq{margin-top:.75rem}
.is-style-apm-faq summary{font-weight:700;font-size:1rem;cursor:pointer}
.is-style-apm-faq > :not(summary){
  margin:.75rem 0 0;font-size:.9rem;color:var(--color-neutral-700);
}

/* ── Linha de anos do cartão flutuante ───────────────────────────
   Decoração: a linha e os dois pontos são um único pseudo-elemento
   com gradientes, para que o cartão continue a ser um core/group com
   dois parágrafos editáveis. Um 1px de altura não caberia os pontos,
   daí a faixa de 5px com a linha ao centro.                          */
.is-style-apm-timeline{display:flex;align-items:center;gap:.5rem;margin-top:.7rem}
.is-style-apm-timeline p{
  margin:0;flex:none;order:0;
  font-size:.7rem;font-weight:700;color:var(--color-neutral-700);
}
.is-style-apm-timeline p:last-child{order:2}
.is-style-apm-timeline::before{
  content:"";order:1;flex:1;height:5px;
  background:
    radial-gradient(circle at 30% 50%, var(--color-primary-600) 0 2.5px, transparent 2.5px),
    radial-gradient(circle at 70% 50%, var(--color-neutral-500) 0 2.5px, transparent 2.5px),
    linear-gradient(to bottom, transparent calc(50% - .5px),
                    var(--color-neutral-300) calc(50% - .5px) calc(50% + .5px),
                    transparent calc(50% + .5px));
}

/* ── Lista com ícones (apm/icon-list + apm/icon-item) ─────────────
   As colunas vêm do atributo do bloco, não de uma classe escrita à
   mão, e a contagem de itens vem dos blocos internos.

   Cada item é um cartão com uma pastilha redonda de ícone por cima do
   texto — a forma dos objetivos estatutários e das publicações.      */
.apm-icon-list{
  list-style:none;margin:0;padding:0;
  display:grid;gap:clamp(1rem,2vw,1.25rem);
  grid-template-columns:minmax(0,1fr);
}
@media (min-width:48em){
  .apm-icon-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:64em){
  .apm-icon-list{grid-template-columns:repeat(var(--apm-icon-cols,2),minmax(0,1fr))}
}
.apm-icon-item{
  display:flex;flex-direction:column;min-width:0;
  background:var(--color-white);
  border:1px solid var(--color-neutral-300);
  border-radius:1rem;padding:1.5rem;
}
.apm-icon-item__icon{
  flex:none;display:flex;align-items:center;justify-content:center;
  width:2.75rem;height:2.75rem;border-radius:50%;
  margin-bottom:1.25rem;
  background:var(--color-primary-100);
  font-size:1.4rem;line-height:1;
  color:var(--color-secondary-700);
}
.apm-icon-item__body{min-width:0}
.apm-icon-item__body > :first-child{margin-top:0}
.apm-icon-item__body > :last-child{margin-bottom:0}
.apm-icon-item__body h3{
  font-size:var(--wp--preset--font-size--item-title);
  font-weight:700;
  margin:0 0 .5rem;
}
.apm-icon-item__body p{font-size:.85rem;color:var(--color-neutral-600);margin:0}
/* O antetítulo do cartão de publicação: mais miúdo que o das secções. */
.apm-icon-item__body .is-style-apm-meta{
  margin:0 0 .5rem;
  font-size:.75rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;
}

/* ── Alternativas ao formulário ──────────────────────────────────
   Uma pergunta seguida de uma lista simples de métodos, sem caixa e sem
   botão, para não competir com a acção principal (§DECISOES). Oferece
   sempre mais do que um método.                                      */
.is-style-apm-alt-contact{max-width:30rem}
.is-style-apm-alt-contact > p{margin:0 0 .75rem}
.is-style-apm-alt-contact ul{
  list-style:none;margin:0;padding:0;
  display:grid;gap:.6rem;line-height:var(--lh-body);
}
.is-style-apm-alt-contact a{
  color:var(--color-white);font-weight:700;
  text-decoration:underline;text-underline-offset:.15em;
  word-break:break-word;
}
.is-style-apm-alt-contact a:hover{color:var(--color-primary-200)}

/* ── Linha de números (apm/stats + apm/stat) ─────────────────────
   O filete acima separa os números do texto que os precede, e é o que
   na maqueta fecha a coluna do Sobre a Associação.                  */
.apm-stats{
  display:grid;gap:1.25rem;
  grid-template-columns:repeat(var(--apm-stat-cols,3),minmax(0,1fr));
  margin:2.5rem 0 0;padding-top:1.5rem;
  border-top:1px solid var(--color-neutral-300);
}
.apm-stat{min-width:0}
.apm-stat__icon{
  display:flex;align-items:center;justify-content:center;
  width:2.5rem;height:2.5rem;margin-bottom:.75rem;
  border-radius:50%;
  background:var(--color-primary-100);
  color:var(--color-primary-700);
  font-size:1.25rem;line-height:1;
}
.apm-stat__value{
  margin:0;
  font-family:var(--wp--preset--font-family--serif);
  font-size:var(--wp--preset--font-size--h-3);
  font-weight:700;line-height:1;letter-spacing:-.02em;
}
.apm-stat__label{
  margin:.35rem 0 0;
  font-size:var(--wp--preset--font-size--meta);line-height:1.4;
  color:var(--color-neutral-600);
}

/* ── Cartão de conteúdo (eventos, notícias, artigos) ──────────────
   A imagem é o topo do cartão e a moldura recorta-a em 16:10. O corpo
   cresce para empurrar a última linha para baixo, de modo que cartões de
   alturas diferentes alinhem os detalhes pelo fundo.

   São estilos de bloco e não classes escritas à mão: o editor escolhe-os
   na barra lateral e o cartão continua a ser um core/group.          */
.is-style-apm-media-card{
  display:flex;flex-direction:column;
  background:var(--color-white);color:var(--color-neutral-900);
  border:1px solid var(--color-neutral-300);
  border-radius:1.25rem;overflow:hidden;
  padding:0;
}
.is-style-apm-media-card > .wp-block-post-featured-image{
  position:relative;width:100%;aspect-ratio:16/10;
  flex:none;overflow:hidden;margin:0;
  background:var(--color-neutral-100);
}
.is-style-apm-media-card > .wp-block-post-featured-image img{
  position:absolute;inset:0;
  width:100%;height:100%;object-fit:cover;
  display:block;border-radius:0;
}
.is-style-apm-media-card-body{
  display:flex;flex-direction:column;gap:.75rem;
  padding:1.5rem;flex:1;
}
.is-style-apm-media-card-body > *{margin:0}
.is-style-apm-media-card-body .wp-block-post-title{
  font-size:var(--wp--preset--font-size--card-title);
  font-weight:700;line-height:1.35;
  color:var(--color-neutral-900);
}
.is-style-apm-media-card-body .wp-block-post-title a{color:inherit;text-decoration:none}
.is-style-apm-media-card-body .wp-block-post-title a:hover{
  color:var(--color-primary-700);text-decoration:underline;
}
/* A data do cartão de notícia lê-se como etiqueta, não como corpo. */
.is-style-apm-media-card-body .wp-block-post-date{
  font-size:.8rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;
  color:var(--color-neutral-600);
}
/* A categoria fecha o cartão, encostada ao fundo. */
.is-style-apm-media-card-body .wp-block-post-terms{
  margin-top:auto;
  font-family:var(--wp--preset--font-family--serif);
  font-size:.85rem;font-weight:700;
  color:var(--color-neutral-600);
}
.is-style-apm-media-card-body .wp-block-post-terms a{color:inherit;text-decoration:none}

/* Detalhes de evento: uma linha por ícone, truncada quando não cabe.
   O ícone vem do estilo do parágrafo, e não de um glifo no texto, para
   não ser anunciado antes da data.                                   */
.is-style-apm-card-meta{
  display:grid;gap:.5rem;margin-top:auto;
  font-size:.9rem;color:var(--color-neutral-700);
}
.is-style-apm-card-meta > p{
  display:flex;align-items:center;gap:.5rem;min-width:0;margin:0;
  font-size:inherit;color:inherit;
}
.is-style-apm-when,.is-style-apm-where{
  display:flex;align-items:center;gap:.5rem;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.is-style-apm-when::before,.is-style-apm-where::before{
  font-family:'Material Symbols Outlined';font-size:1.15rem;line-height:1;
  font-weight:normal;letter-spacing:normal;
  flex:none;color:var(--color-neutral-600);
}
.is-style-apm-when::before{content:"calendar_month"}
.is-style-apm-where::before{content:"location_on"}

/* Sobre a marca o ícone inverte, senão o verde escuro desaparece. */
.has-brand-700-background-color .apm-icon-item__icon,
.has-hero-gradient-background .apm-icon-item__icon{color:var(--color-yellow-500)}

/* ── Faixa de parceiros (apm/parceiros) ──────────────────────────
   A pista tem duas passagens iguais; a animação desloca metade da
   largura, e ao chegar lá o segundo conjunto está onde o primeiro
   começou. Daí o -50%.                                             */
/* O #000 da máscara não é cor: é opacidade. Uma máscara de luminância lê
   preto como «mostra» e transparente como «esconde», e por isso é o único
   literal que não passa a token — não há cor nenhuma a decidir aqui. */
.apm-parceiros{overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.apm-parceiros__track{
  list-style:none;margin:0;padding:0;
  display:flex;align-items:center;gap:clamp(2rem,5vw,4rem);
  width:max-content;
  animation-duration:var(--apm-ticker-speed,40s);
}
.apm-parceiro{flex:none;display:flex;align-items:center}
.apm-parceiro__logo{
  width:9rem;height:3rem;object-fit:contain;display:block;
  filter:grayscale(1);opacity:.75;transition:filter .2s,opacity .2s;
}
.apm-parceiro a:hover .apm-parceiro__logo{filter:none;opacity:1}
@media (prefers-reduced-motion:reduce){
  .apm-parceiros{overflow-x:auto;mask-image:none}
  .apm-parceiros__track{animation:none}
}

/* ── Marcadores no editor ────────────────────────────────────────── */
.apm-editor-placeholder .components-placeholder{margin:0}

/* ── Prosa ───────────────────────────────────────────────────────
   O corpo de texto escrito no editor. O ritmo vertical vive aqui, num
   contentor, e não num intervalo global entre blocos: é assim que as
   maquetas o fazem, e é o que deixa as secções da página inicial
   controlar as suas próprias margens sem as somar a um valor herdado. */
.is-style-apm-prose{max-width:44rem}
.is-style-apm-prose > p{
  margin:0 0 1.15rem;
  color:var(--color-neutral-800);
  font-size:var(--wp--preset--font-size--body);
  line-height:1.7;
  text-wrap:pretty;
}
.is-style-apm-prose > :is(ul,ol){margin:0 0 1.15rem;padding-left:1.25rem}
.is-style-apm-prose > li{margin:0 0 .35rem}
.is-style-apm-prose > :is(h2,h3,h4){margin:2rem 0 .75rem}
.is-style-apm-prose > :first-child{margin-top:0}
.is-style-apm-prose > :last-child{margin-bottom:0}
.is-style-apm-prose :is(p,li) a{
  color:var(--color-primary-700);
  text-decoration:underline;text-underline-offset:.15em;
}
.is-style-apm-prose :is(p,li) a:hover{
  color:var(--color-primary-600);text-decoration-thickness:2px;
}

/* ── Documento ───────────────────────────────────────────────────
   O corpo das páginas institucionais. Medida e entrelinha próprias,
   mais largas do que a prosa de artigo: é texto de regulamento, lido
   em blocos longos e não em parágrafos curtos. */
.is-style-apm-doc{
  font-size:1.0938rem;line-height:1.85;
  color:var(--color-neutral-800);
  max-width:36rem;
}
.is-style-apm-doc > p{margin:0 0 1.25rem}
.is-style-apm-doc > p:last-child{margin-bottom:0}

/* ── Migalhas de pão (apm/breadcrumbs) ───────────────────────────── */
.apm-crumbs{background:var(--color-white)}
.apm-crumbs__list{
  list-style:none;margin:0;padding:.85rem 0 .25rem;
  display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;
  font-size:.85rem;color:var(--color-neutral-600);
}
.apm-crumbs__list li{display:flex;align-items:center;min-height:44px}
.apm-crumbs__list li[aria-hidden]{opacity:.55}
.apm-crumbs__list a{
  display:inline-flex;align-items:center;min-height:44px;
  color:var(--color-neutral-700);text-underline-offset:.2em;
}
.apm-crumbs__list a:hover{color:var(--color-brand-800)}
.apm-crumbs__list [aria-current="page"]{color:var(--color-neutral-900);font-weight:600}

/* ── Grelha com índice ───────────────────────────────────────────
   Abaixo de 64em o índice não aparece: numa coluna estreita duplicaria
   a página antes de a pessoa chegar ao conteúdo. */
.is-style-apm-page-grid > .apm-page-index{display:none}
@media (min-width:64em){
  .is-style-apm-page-grid{
    display:grid;grid-template-columns:11rem minmax(0,1fr);
    gap:3.5rem;align-items:start;
  }
  .is-style-apm-page-grid > .apm-page-index{display:block;position:sticky;top:1.5rem}
}
.is-style-apm-page-grid > * + *{margin-top:0}

/* ── Índice da página (apm/page-index) ───────────────────────────── */
.apm-page-index__label{
  margin:0 0 .6rem;
  font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--color-neutral-600);
}
.apm-page-index__list{
  list-style:none;margin:0;padding:0;
  display:flex;flex-direction:column;gap:.1rem;font-size:.85rem;
}
.apm-page-index__list a{
  display:flex;align-items:center;min-height:44px;
  padding-left:.7rem;
  color:var(--color-neutral-700);
  border-left:2px solid var(--color-neutral-300);
}
.apm-page-index__list a:hover{color:var(--color-brand-800);text-decoration:none}
.apm-page-index__list a[aria-current="location"]{
  color:var(--color-brand-800);font-weight:700;
  border-left-color:var(--color-brand-800);
}

/* ── Secções empilhadas de uma página institucional ──────────────
   O intervalo entre secções é o da maqueta, e vive aqui e não num
   intervalo global entre blocos. */
.is-style-apm-doc-section + .is-style-apm-doc-section{margin-top:clamp(4rem,8vw,6.5rem)}

/* ── Variantes da lista com ícones ───────────────────────────────
   «rows»: fila separada por filete, com a pastilha ao lado do texto.
   «inline»: linha simples de ícone e texto, sem pastilha nem filete. */
.apm-icon-list--rows,
.apm-icon-list--inline{grid-template-columns:minmax(0,1fr)}
@media (min-width:48em){
  .apm-icon-list--rows,
  .apm-icon-list--inline{grid-template-columns:minmax(0,1fr)}
}
@media (min-width:64em){
  .apm-icon-list--rows,
  .apm-icon-list--inline{grid-template-columns:minmax(0,1fr)}
}
.apm-icon-list--rows{gap:1rem}
.apm-icon-list--inline{gap:.6rem}

.apm-icon-list--rows .apm-icon-item{
  flex-direction:row;align-items:flex-start;gap:1.5rem;
  background:transparent;border:none;border-radius:0;
  border-top:1px solid var(--color-neutral-300);
  padding:1.75rem 0;
}
.apm-icon-list--rows .apm-icon-item__icon{margin-bottom:0}
.apm-icon-list--rows .apm-icon-item__body h3{margin:0 0 .4rem}
.apm-icon-list--rows .apm-icon-item__body p{font-size:.95rem;line-height:1.7;color:var(--color-neutral-800)}

.apm-icon-list--inline .apm-icon-item{
  flex-direction:row;align-items:center;gap:.75rem;
  background:transparent;border:none;border-radius:0;padding:0;
}
.apm-icon-list--inline .apm-icon-item__icon{
  width:auto;height:auto;margin-bottom:0;border-radius:0;
  background:none;font-size:1.2rem;
  color:var(--color-secondary-700);
}
.apm-icon-list--inline .apm-icon-item__body{font-size:.95rem;color:var(--color-neutral-800)}
.apm-icon-list--inline .apm-icon-item__body p{font-size:inherit;color:inherit}

/* ── Variante «rule» dos números ─────────────────────────────────
   Filete no topo e número grande em serifa, sem pastilha de ícone. */
.apm-stats--rule{
  margin:0;padding:0;border:none;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));
  gap:1rem;
}
.apm-stats--rule .apm-stat{
  padding:1.25rem 0 0;
  border-top:2px solid var(--color-brand-800);
}
.apm-stats--rule .apm-stat__icon{display:none}
.apm-stats--rule .apm-stat__value{
  font-size:2.25rem;font-weight:800;letter-spacing:normal;
  color:var(--color-brand-800);
}
.apm-stats--rule .apm-stat__label{
  margin:.5rem 0 0;font-size:.9rem;color:var(--color-neutral-700);
}

/* ── Enumerações ─────────────────────────────────────────────────
   Os marcadores são contadores: a numeração deriva da lista e não do
   texto, por isso inserir ou remover um item não obriga a renumerar.

   A alínea segue a convenção portuguesa, que salta k, w e y — é por
   isso que existe um @counter-style em vez de lower-alpha. */
@counter-style apm-alinea{
  system:alphabetic;
  symbols:"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "x" "z";
  suffix:") ";
}
/* Os contadores sao proprios e nao o «list-item» automatico: estes <li>
   levam display:flex, e isso retira-lhes o display:list-item de que o
   contador automatico depende — ficariam todos com o mesmo marcador. */
.is-style-apm-lettered,
.is-style-apm-numbered{list-style:none;margin:0;padding:0;display:grid}
.is-style-apm-lettered{counter-reset:apm-n}
.is-style-apm-numbered{counter-reset:apm-n}
.is-style-apm-lettered > li,
.is-style-apm-numbered > li{counter-increment:apm-n}
.is-style-apm-lettered{gap:.85rem;max-width:52rem}
.is-style-apm-numbered{gap:0;max-width:44rem}

.is-style-apm-lettered > li{
  display:flex;gap:1.25rem;
  padding:1.15rem 0;border-bottom:1px solid var(--color-neutral-300);
  font-size:.95rem;line-height:1.7;
}
.is-style-apm-lettered > li::before{
  content:counter(apm-n,apm-alinea);
  flex:none;
  font-family:var(--wp--preset--font-family--serif);
  font-weight:800;color:var(--color-secondary-700);
}
.is-style-apm-numbered > li{
  display:flex;gap:1.25rem;align-items:baseline;
  padding:.9rem 0;border-bottom:1px solid var(--color-neutral-300);
  font-size:1rem;font-weight:600;color:var(--color-neutral-900);
}
.is-style-apm-numbered > li::before{
  content:counter(apm-n,decimal-leading-zero);
  flex:none;
  font-size:.85rem;font-weight:700;letter-spacing:.06em;
  color:var(--color-neutral-600);
}

/* ── Lista de localidades ────────────────────────────────────────── */
.is-style-apm-places{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}
.is-style-apm-places > li{
  display:flex;align-items:center;gap:.85rem;
  padding:.75rem 0;border-bottom:1px solid var(--color-neutral-300);
  font-size:1rem;font-weight:600;
}
.is-style-apm-places > li::before{
  content:"location_on";
  font-family:'Material Symbols Outlined';font-size:1.25rem;line-height:1;
  font-weight:normal;letter-spacing:normal;
  flex:none;color:var(--color-secondary-700);
}

/* ── Botões sobre o gradiente ────────────────────────────────────── */
.is-style-apm-on-dark > .wp-block-button__link,
.is-style-apm-outline > .wp-block-button__link{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  min-height:var(--h-btn-md);padding:0 1.5rem;
  border:1px solid transparent;border-radius:999px;
  font-size:var(--f-btn);font-weight:var(--w-btn);
  line-height:var(--lh-btn);letter-spacing:var(--tk-btn);
  text-decoration:none;
}
.is-style-apm-on-dark > .wp-block-button__link{
  background:var(--color-primary-300);color:var(--color-primary-900);
  border-color:var(--color-primary-300);
}
.is-style-apm-on-dark > .wp-block-button__link:hover{
  background:var(--color-primary-200);border-color:var(--color-primary-200);
  color:var(--color-primary-900);
}
.is-style-apm-on-dark > .wp-block-button__link::after{
  content:"arrow_forward";
  font-family:'Material Symbols Outlined';font-size:1.1rem;line-height:1;
  font-weight:normal;letter-spacing:normal;
}
.is-style-apm-outline > .wp-block-button__link{
  background:transparent;color:var(--color-white);
  border-color:var(--color-brand-300);
}
.is-style-apm-outline > .wp-block-button__link:hover{
  background:var(--color-brand-600);border-color:var(--color-brand-300);
  color:var(--color-white);
}

/* ── Bloco de chamada centrado ───────────────────────────────────
   O antetítulo e o título centram-se, mas a lista de vantagens fica
   alinhada à esquerda: uma lista centrada obriga o olho a procurar o
   início de cada linha. */
.is-style-apm-cta-centre{text-align:center}
.is-style-apm-cta-centre .is-style-apm-eyebrow,
.is-style-apm-cta-centre .is-style-apm-eyebrow-plain{justify-content:center}
.is-style-apm-cta-centre > :is(h2,h3){margin-left:auto;margin-right:auto}
.is-style-apm-cta-centre > ul{
  margin-left:auto;margin-right:auto;
  max-width:38rem;text-align:left;
}
.is-style-apm-cta-centre .wp-block-buttons{justify-content:center}

/* Sobre a marca o visto passa a amarelo: o verde escuro desapareceria. */
.is-style-apm-checks-on-brand > li::before{color:var(--color-yellow-500)}
.is-style-apm-checks-on-brand > li{align-items:flex-start;line-height:1.6}

/* ── Etapas (apm/steps + apm/step) ───────────────────────────────
   O número sai de um contador e não do texto: a ordem do <ol> já é a
   informação, e o algarismo é a sua leitura visual. Sai por CSS para o
   leitor de ecrã não anunciar «1» antes do nome da etapa. */
.apm-steps{
  list-style:none;margin:0;padding:0;counter-reset:apm-step;
  display:grid;gap:1rem;align-items:stretch;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--apm-step-min,15rem)),1fr));
}
.apm-step{
  display:flex;flex-direction:column;gap:.75rem;min-width:0;
  counter-increment:apm-step;
  background:var(--color-white);
  border:1px solid var(--color-neutral-300);
  border-radius:1rem;padding:1.5rem;
}
.apm-step::before{
  content:counter(apm-step);
  flex:none;
  display:flex;align-items:center;justify-content:center;
  width:2.5rem;height:2.5rem;border-radius:50%;
  background:var(--color-primary-100);
  color:var(--color-primary-700);
  font-family:var(--wp--preset--font-family--serif);
  font-weight:800;
}
.apm-step > *{margin:0}
.apm-step h3{
  font-family:var(--wp--preset--font-family--serif);
  font-size:1.15rem;font-weight:700;
}
.apm-step ul,
.apm-step ol{
  list-style:none;margin:0;padding:0;
  display:grid;gap:.35rem;
  font-size:.95rem;line-height:1.5;color:var(--color-neutral-700);
}

/* ── Variante «terms» dos números ────────────────────────────────
   O termo é um rótulo miúdo e o peso vai para a definição: aqui a
   informação é o texto, não um algarismo. */
.apm-stats--terms{
  margin:0;padding:0;border:none;gap:1rem;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));
  align-items:stretch;
}
.apm-stats--terms .apm-stat{
  background:var(--color-white);
  border:1px solid var(--color-neutral-300);
  border-radius:1rem;padding:1.5rem;
}
.apm-stats--terms .apm-stat__icon{
  width:2.5rem;height:2.5rem;margin-bottom:.75rem;
  font-size:1.25rem;
  background:var(--color-primary-100);
  color:var(--color-primary-700);
}
.apm-stats--terms .apm-stat__value{
  font-family:var(--wp--preset--font-family--sans);
  font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--color-neutral-600);
}
.apm-stats--terms .apm-stat__label{
  margin:.5rem 0 0;
  font-size:1rem;line-height:1.6;color:var(--color-neutral-800);
}

/* ── Painel de ícone ─────────────────────────────────────────────
   O estado de omissão onde ainda não há fotografia: não se preenche o
   lugar com a imagem de outra coisa (§DECISOES). Guarda a proporção e o
   recorte que a fotografia vai ocupar, para a troca não mexer no resto. */
.is-style-apm-icon-panel{
  display:flex;align-items:center;justify-content:center;
  width:100%;aspect-ratio:16/10;
  border-radius:1.25rem;overflow:hidden;
  background:var(--alpha-white-12);
  color:var(--alpha-white-60);
}
.is-style-apm-icon-panel .material-symbols-outlined{font-size:3.5rem}
/* Sobre fundo claro o painel inverte, senão o branco translúcido perde-se. */
.has-white-background-color .is-style-apm-icon-panel,
.has-neutral-100-background-color .is-style-apm-icon-panel{
  background:var(--color-neutral-200);
  color:var(--color-neutral-500);
}

/* ── Media partner ───────────────────────────────────────────────── */
.is-style-apm-media-partner{
  display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem;
}
.is-style-apm-media-partner > p{margin:0}
.is-style-apm-media-partner img{height:2.5rem;width:auto}

/* A entrada de uma chamada centrada respira ao centro, com medida própria;
   o antetítulo fica de fora, que já se centra sozinho. */
.is-style-apm-cta-centre > p:not([class*="eyebrow"]){
  margin-left:auto;margin-right:auto;max-width:38rem;
}

/* ── Direções (apm/direcoes + apm/direcao) ───────────────────────
   Cartões de altura igual: grid-auto-rows:1fr faz a fila inteira subir
   à altura do cartão mais alto, e os contactos encostam ao fundo, de
   modo que as quatro linhas de telefone alinhem entre cartões. */
.apm-direcoes__grid{
  list-style:none;margin:0;padding:0;
  display:grid;gap:1.25rem;
  grid-template-columns:minmax(0,1fr);
  align-items:stretch;grid-auto-rows:1fr;
}
@media (min-width:40em){
  .apm-direcoes__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.apm-direcao{
  display:flex;flex-direction:column;gap:.75rem;min-width:0;height:100%;
  padding:1.5rem;
  border:1px solid var(--color-neutral-300);border-radius:1rem;
  background:var(--color-white);
}
.apm-direcao__nome{margin:0;font-size:var(--wp--preset--font-size--card-title);font-weight:700}
.apm-direcao__morada{
  margin:0;font-style:normal;
  font-size:.95rem;line-height:1.6;color:var(--color-neutral-700);
}
.apm-direcao__morada a{
  color:var(--color-primary-700);
  text-decoration:underline;text-underline-offset:.15em;
}
.apm-direcao__morada a:hover{color:var(--color-primary-600)}
.apm-direcao__contactos{
  display:grid;gap:.5rem;margin:auto 0 0;padding-top:.25rem;font-size:.95rem;
}
.apm-direcao__linha{display:flex;align-items:center;gap:.5rem;min-width:0}
.apm-direcao__linha dt{margin:0;flex:none;display:flex}
.apm-direcao__linha dd{margin:0;min-width:0}
.apm-direcao__linha dd a{word-break:break-word}
.apm-direcao__linha .material-symbols-outlined{
  font-size:1.15rem;color:var(--color-neutral-600);
}

/* ── Cartão de apoio ao lado de um formulário ────────────────────
   «Antes de escrever»: encaminha quem tem uma pergunta já respondida
   noutro lugar, antes de investir em escrever. */
.is-style-apm-aside-card{
  min-width:0;
  background:var(--color-white);
  border:1px solid var(--color-neutral-300);border-radius:1rem;
  padding:1.5rem;
}
.is-style-apm-aside-card > :is(h2,h3){
  margin:0 0 1.25rem;
  font-family:var(--wp--preset--font-family--sans);
  font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--color-secondary-700);
}
/* Um segundo bloco dentro do cartão separa-se por filete. */
.is-style-apm-aside-card > :is(h2,h3) ~ :is(h2,h3){
  margin:1.75rem 0 .85rem;
  padding-top:1.25rem;border-top:1px solid var(--color-neutral-300);
}
.is-style-apm-aside-card ul{
  list-style:none;margin:0;padding:0;
  display:grid;gap:1.25rem;font-size:.95rem;line-height:1.6;
}
.is-style-apm-aside-card li{color:var(--color-neutral-700)}
/* O rotulo da linha mantem a cor do texto corrente: e o que a distingue
   da explicacao que vem a seguir, em cinzento. */
.is-style-apm-aside-card li strong{
  display:block;margin-bottom:.2rem;color:var(--color-neutral-900);
}
/* Uma lista de ligações simples aperta e cada linha vale 44px. */
.is-style-apm-aside-card .is-style-apm-links{gap:.15rem}
.is-style-apm-aside-card .is-style-apm-links a{
  display:flex;align-items:center;min-height:44px;
}

/* O painel de ícone em faixa larga, para o lugar do mapa. */
.is-style-apm-icon-panel-wide{
  display:flex;align-items:center;justify-content:center;
  width:100%;aspect-ratio:21/9;
  border-radius:.75rem;overflow:hidden;
  background:var(--color-neutral-100);
  border:1px solid var(--color-neutral-300);
  color:var(--color-neutral-500);
}
.is-style-apm-icon-panel-wide .material-symbols-outlined{font-size:3.5rem}

/* ── Lista de ligações ───────────────────────────────────────────
   Uma linha por ligação, cada uma com 44px de alvo. Sem marcadores:
   a lista é de destinos, não de argumentos. */
.is-style-apm-links{list-style:none;margin:0;padding:0;display:grid;gap:.15rem}
.is-style-apm-links a{display:flex;align-items:center;min-height:44px}

/* ── Cartão de publicação (apm/publicacao-card) ──────────────────
   O cartão inteiro é a ligação, por isso o sublinhado aparece só no
   título ao passar o rato: sublinhar tudo pintava o cartão de linhas. */
.apm-pub-card{display:flex;flex-direction:column;gap:.85rem;min-width:0}
.apm-pub-card__link{
  display:flex;flex-direction:column;gap:.75rem;
  color:inherit;text-decoration:none;
}
.apm-pub-card__link:hover{text-decoration:none}
.apm-pub-card__link:hover .apm-pub-card__titulo{
  color:var(--color-primary-700);
  text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.15em;
}
.apm-pub-card__link:hover .apm-pub-card__fig img{transform:scale(1.03)}

.apm-pub-card__fig{
  position:relative;display:block;width:100%;aspect-ratio:16/9;
  border-radius:.75rem;overflow:hidden;
  background:var(--color-neutral-100);
}
.apm-pub-card__fig img{
  position:absolute;inset:0;display:block;
  width:100%;height:100%;object-fit:cover;
  transition:transform .3s ease-out;
}
/* Sem imagem, um painel de ícone: o lugar não se enche com outra coisa. */
.apm-pub-card__vazio{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  color:var(--color-neutral-400);
}
.apm-pub-card__vazio .material-symbols-outlined{font-size:2.75rem}
/* A etiqueta encosta à esquerda e sangra para fora da moldura. */
.apm-pub-card__tag{
  position:absolute;top:.85rem;left:0;
  padding:.4rem .85rem;border-radius:0 .4rem .4rem 0;
  background:var(--color-brand-700);color:var(--color-white);
  font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  white-space:nowrap;
}
.apm-pub-card__titulo{
  font-family:var(--wp--preset--font-family--serif);
  font-size:1.2rem;font-weight:700;line-height:1.3;
  color:var(--color-neutral-900);text-wrap:pretty;
}
@media (min-width:44em){.apm-pub-card__titulo{font-size:1.44rem}}
.apm-pub-card__resumo{
  font-size:.95rem;line-height:1.6;color:var(--color-neutral-700);text-wrap:pretty;
}
/* O glifo diz o tipo de recurso, e vem da classe e não do texto. */
.apm-pub-card__detalhe{
  display:flex;align-items:center;gap:.4rem;
  font-size:.85rem;color:var(--color-neutral-600);
}
.apm-pub-card__detalhe::before{
  font-family:'Material Symbols Outlined';font-size:1rem;line-height:1;
  font-weight:normal;letter-spacing:normal;
}
.apm-pub-card__detalhe--artigo::before{content:"article"}
.apm-pub-card__detalhe--pdf::before{content:"picture_as_pdf"}
.apm-pub-card__detalhe--imagem::before{content:"image"}

/* ── Grelha da listagem ──────────────────────────────────────────── */
.apm-pub-grid{
  list-style:none;margin:0;padding:0;
  display:grid;
  gap:clamp(2rem,4vw,2.75rem) clamp(1.25rem,3vw,2rem);
  grid-template-columns:minmax(0,1fr);
}
@media (min-width:34em){
  .apm-pub-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ── Filtros (apm/filtros) ───────────────────────────────────────
   Cada bloco fecha com filete, menos o último. Os filtros são
   ligações, e o filtro activo marca-se com aria-current. */
.apm-filtros__bloco{
  padding-bottom:1.5rem;margin-bottom:1.5rem;
  border-bottom:1px solid var(--color-neutral-300);
}
.apm-filtros__bloco:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}
.apm-filtros__titulo{
  margin:0 0 .85rem;
  font-family:var(--wp--preset--font-family--sans);
  font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--color-secondary-700);
}
.apm-filtros ul{list-style:none;margin:0;padding:0;display:grid;gap:.15rem}
.apm-filtro{
  display:flex;align-items:center;gap:.5rem;
  width:100%;min-height:44px;padding:0 .6rem;
  border-radius:.5rem;
  color:var(--color-neutral-900);
  font-size:.92rem;font-weight:600;text-decoration:none;
}
.apm-filtro:hover{background:var(--color-neutral-100);text-decoration:none}
.apm-filtro b{
  margin-left:auto;font-weight:600;
  font-variant-numeric:tabular-nums;color:var(--color-neutral-600);
}
.apm-filtro[aria-current]{background:var(--color-brand-700);color:var(--color-white)}
.apm-filtro[aria-current] b{color:var(--color-brand-200)}

.apm-filtros__anos{display:flex;flex-wrap:wrap;gap:.4rem}
.apm-ano{
  display:inline-flex;align-items:center;min-height:44px;padding:0 .75rem;
  border:1px solid var(--color-neutral-300);border-radius:999px;
  background:var(--color-white);color:var(--color-neutral-900);
  font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums;
  text-decoration:none;
}
.apm-ano:hover{background:var(--color-neutral-100);text-decoration:none}
.apm-ano[aria-current]{
  background:var(--color-brand-700);border-color:var(--color-brand-700);
  color:var(--color-white);
}

/* ── Layout de listagem: conteúdo e barra lateral ────────────────── */
.is-style-apm-list-layout{
  display:grid;gap:clamp(2rem,5vw,3.5rem);
  grid-template-columns:minmax(0,1fr);
}
@media (min-width:64em){
  .is-style-apm-list-layout{grid-template-columns:minmax(0,1fr) 19rem;align-items:start}
}

/* ── Paginação ───────────────────────────────────────────────────── */
.is-style-apm-pag{
  margin-top:2.5rem;padding-top:1.75rem;
  border-top:1px solid var(--color-neutral-300);
}
.is-style-apm-pag .wp-block-query-pagination-numbers,
.is-style-apm-pag.wp-block-query-pagination{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;
}
.is-style-apm-pag .page-numbers{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:2.75rem;min-height:2.75rem;padding:0 .9rem;
  border:1px solid var(--color-neutral-500);border-radius:.4rem;
  background:var(--color-white);
  font-size:.95rem;font-weight:600;color:var(--color-neutral-900);
  text-decoration:none;
  transition:background .12s ease-out,border-color .12s ease-out;
}
.is-style-apm-pag .page-numbers:hover{
  background:var(--color-neutral-200);border-color:var(--color-neutral-700);
  text-decoration:none;
}
.is-style-apm-pag .page-numbers.current{
  border-color:var(--color-primary-600);background:var(--color-primary-600);
  color:var(--color-white);font-weight:700;
}
.is-style-apm-pag .page-numbers.dots{
  border-color:transparent;background:none;color:var(--color-neutral-600);
}

/* ── Assinatura do artigo (apm/autor) ────────────────────────────
   Nome e cargo à esquerda, data encostada à direita, entre dois
   filetes. A data recua para baixo quando a linha não cabe. */
.apm-autor{
  display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;
  margin:0 0 clamp(2rem,5vw,2.75rem);padding:1rem 0;
  border-top:1px solid var(--color-neutral-300);
  border-bottom:1px solid var(--color-neutral-300);
}
.apm-autor__pessoa{display:flex;align-items:center;gap:.75rem;min-width:0}
.apm-autor__avatar{
  flex:none;display:flex;align-items:center;justify-content:center;
  width:2.75rem;height:2.75rem;border-radius:50%;
  background:var(--color-brand-100);color:var(--color-brand-800);
  font-family:var(--wp--preset--font-family--serif);
  font-weight:800;font-size:1.05rem;
}
.apm-autor__texto{min-width:0}
.apm-autor__nome{
  display:block;font-size:1rem;font-weight:700;color:var(--color-neutral-900);
}
.apm-autor__cargo{
  display:block;margin-top:.05rem;
  font-size:var(--wp--preset--font-size--meta);color:var(--color-neutral-700);
}
.apm-autor__data{
  margin-left:auto;
  font-size:var(--wp--preset--font-size--meta);font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:var(--color-neutral-700);
}

/* ── Original para descarregar (apm/original) ────────────────────
   Um painel e não um botão solto: quando não há texto, isto é o
   conteúdo da página e tem de dizer o que está do outro lado. */
.apm-original{
  display:flex;align-items:flex-start;gap:1rem;
  margin:2rem 0;padding:1.25rem 1.5rem;
  border:1px solid var(--color-neutral-300);border-radius:1rem;
  background:var(--color-neutral-100);
}
.apm-original__icone{flex:none;font-size:2rem;color:var(--color-secondary-700)}
.apm-original__texto{min-width:0;display:grid;gap:.35rem}
.apm-original__nota{
  font-size:.95rem;line-height:1.6;color:var(--color-neutral-800);
}
.apm-original__link{
  font-weight:700;color:var(--color-primary-700);
  text-decoration:underline;text-underline-offset:.15em;
}
.apm-original__link:hover{color:var(--color-primary-600)}

/* ── Artigo: coluna de leitura e barra lateral ───────────────────── */
.is-style-apm-art-layout{
  display:grid;gap:clamp(2rem,5vw,3.5rem);
  grid-template-columns:minmax(0,1fr);
}
@media (min-width:64em){
  .is-style-apm-art-layout{grid-template-columns:minmax(0,1fr) 19rem;align-items:start}
}

/* ── Corpo do artigo ─────────────────────────────────────────────
   Medida e escala próprias: é texto para ler de fio a pavio, mais
   largo do que o corpo de um documento institucional. */
.is-style-apm-artigo{font-size:1.2rem;line-height:1.7;color:var(--color-neutral-800)}
.is-style-apm-artigo > p{margin:0 0 1.15rem}
.is-style-apm-artigo > p:last-child{margin-bottom:0}
.is-style-apm-artigo > :is(h2,h3){
  margin:2.75rem 0 .85rem;
  font-family:var(--wp--preset--font-family--serif);
  font-size:1.44rem;font-weight:800;line-height:1.25;letter-spacing:-.01em;
  color:var(--color-neutral-900);
}
.is-style-apm-artigo > :first-child{margin-top:0}
.is-style-apm-artigo blockquote{
  margin:2.5rem 0;padding:0 0 0 1.5rem;
  border-left:3px solid var(--color-brand-700);
  font-family:var(--wp--preset--font-family--serif);
  font-size:1.44rem;line-height:1.4;font-weight:700;
  color:var(--color-neutral-900);text-wrap:pretty;
}
.is-style-apm-artigo :is(p,li) a{
  color:var(--color-primary-700);
  text-decoration:underline;text-underline-offset:.15em;
}
.is-style-apm-artigo :is(p,li) a:hover{
  color:var(--color-primary-600);text-decoration-thickness:2px;
}

/* Capitular. Sai em ::first-letter e não num <span> na marcação, para o
   leitor de ecrã não ouvir a letra duas vezes — a maqueta resolvia-o com
   um duplicado só-para-leitores, que aqui deixa de ser preciso. */
.is-style-apm-artigo.has-dropcap > p:first-of-type::first-letter,
.is-style-apm-dropcap::first-letter{
  float:left;margin:.35rem .75rem 0 0;
  font-family:var(--wp--preset--font-family--serif);
  font-size:4.2rem;line-height:.78;font-weight:800;
  color:var(--color-brand-700);
}

/* ── Título do artigo ────────────────────────────────────────────── */
.is-style-apm-art-titulo{
  margin:0 0 1rem;
  font-family:var(--wp--preset--font-family--serif);
  font-size:clamp(1.728rem,4vw,2.488rem);
  font-weight:800;line-height:1.15;letter-spacing:-.015em;
  text-wrap:pretty;
}
.is-style-apm-art-lead{
  margin:0 0 1.5rem;
  font-size:1.44rem;line-height:1.45;
  color:var(--color-neutral-700);text-wrap:pretty;
}
.is-style-apm-art-kicker{
  margin:0 0 .75rem;
  font-size:var(--wp--preset--font-size--meta);font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--color-secondary-700);
}
