/*
 * Colégio Palas Atena — linguagem visual
 * ======================================
 *
 * A identidade já existia: está na logo e no site da escola. Navy #1f3080,
 * amarelo #efc312 e azul #00a8e0 saem do próprio brasão. Este tema não inventa
 * paleta; adota a que a escola usa. Laranja e vermelho de campanha foram
 * removidos porque não pertencem à marca — vinham de uma ilustração gerada.
 *
 * Regra de harmonia: TRÊS cores, todas da logo, sobre cinza frio #f1f1f1.
 * O que diferencia uma seção da outra é a fotografia e o ritmo, nunca o matiz.
 * Um quarto matiz é o que faz um site parecer montado por template.
 *
 * Hanken Grotesk em tudo, display e texto. É o grotesco geométrico que o site
 * da escola já roda e o parente livre do Gotham do logotipo. Uma família só,
 * com contraste por peso e caixa: par de fontes "display + texto" é assinatura
 * de layout gerado.
 *
 * Peso claro. A base é clara e o navy entra como pontuação — hero, uma faixa
 * e o rodapé. O erro anterior era o inverso: massa escura por toda a página,
 * com as fotos reais da escola soterradas por véus a 93%.
 *
 * theme.json carrega tokens (cor, tipografia, escala, espaço).
 * Este arquivo carrega composição e componentes.
 */

/* ------------------------------------------------------------------ *
 * 1. Base
 * ------------------------------------------------------------------ */

:root {
  /* Acento único do site. O azul da logo, o mesmo em toda página. */
  --palas-accent: var(--wp--preset--color--cyan);
  --palas-accent-ink: var(--wp--preset--color--cyan-ink);

  --palas-rule: color-mix(in srgb, var(--wp--preset--color--navy) 14%, transparent);
  --palas-rule-soft: color-mix(in srgb, var(--wp--preset--color--navy) 8%, transparent);
}

/* As classes de acento por seção continuam no <body> por compatibilidade, mas
   já não trocam o matiz: a seção se distingue por foto e ritmo, não por cor.
   Quatro acentos era paleta inventada por cima de uma marca que só tem três. */

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 6rem;
}

body {
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  font-synthesis-weight: none;
}

h1, h2, h3, h4 { text-wrap: balance; }
p { text-wrap: pretty; }

::selection { background: var(--wp--preset--color--navy); color: #fff; }

:focus-visible {
  outline: 3px solid var(--wp--preset--color--navy);
  outline-offset: 3px;
  border-radius: 3px;
}

/* Sobre navy o anel navy sumiria. */
.palas-hero :focus-visible,
.palas-section--navy :focus-visible,
.palas-footer :focus-visible { outline-color: var(--wp--preset--color--sun); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}

.skip-link:focus {
  position: fixed; left: 1rem; top: 1rem; z-index: 100;
  padding: 0.6rem 1.1rem; border-radius: 6px;
  background: var(--wp--preset--color--navy); color: #fff; text-decoration: none;
}

/* ------------------------------------------------------------------ *
 * 2. Containers e ritmo
 *
 * O problema antigo: 96px de padding em TODAS as seções, 8 lajes iguais.
 * Agora o ritmo tem três densidades, e a página alterna entre elas.
 * ------------------------------------------------------------------ */

.palas-container {
  width: 100%;
  max-width: 76rem;
  margin-inline: auto;
  padding-inline: 1.5rem;
}

@media (min-width: 768px) { .palas-container { padding-inline: 2.5rem; } }

.palas-container--text { max-width: 44rem; }   /* coluna de leitura, à esquerda */
.palas-container--read { max-width: 46rem; }   /* coluna centralizada */
.palas-container--wide { max-width: 84rem; }

.palas-section { padding-block: var(--wp--preset--spacing--breath); }
.palas-section--tight { padding-block: var(--wp--preset--spacing--wide); }
.palas-section--act   { padding-block: var(--wp--preset--spacing--act); }
.palas-section--flush { padding-block: 0; }

.palas-section--paper { background: var(--wp--preset--color--paper); }
.palas-section--white { background: #fff; }
.palas-section--soft  { background: var(--wp--preset--color--paper-dark); }
.palas-section--navy  { background: var(--wp--preset--color--navy-deep); color: #fff; }
.palas-section--navy :is(h1,h2,h3,h4) { color: #fff; }
.palas-section--navy p { color: rgb(255 255 255 / 0.82); }

/* Fio separador entre seções do mesmo tom, para não virar sopa */
.palas-section--paper + .palas-section--paper { border-top: 1px solid var(--palas-rule-soft); }

/* ------------------------------------------------------------------ *
 * 3. Tipografia aplicada
 * ------------------------------------------------------------------ */

/* Números tabulares onde há números comparáveis */
.palas-stat__value, .palas-list__num { font-variant-numeric: tabular-nums; }

/* Eyebrow: agora é raro. Sem barrinha decorativa, só a letra. */
.is-style-eyebrow {
  display: block;
  font-family: var(--wp--preset--font-family--body);
  font-weight: 600;
  font-size: var(--wp--preset--font-size--micro);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--palas-accent-ink);
  margin-bottom: 1rem;
}

.palas-section--navy .is-style-eyebrow,
.palas-hero .is-style-eyebrow { color: var(--wp--preset--color--sun); }

.is-style-lede {
  font-size: var(--wp--preset--font-size--lede);
  line-height: 1.55;
  color: var(--wp--preset--color--ink-soft);
  max-width: 42ch;
}

.palas-section--navy .is-style-lede,
.palas-hero .is-style-lede { color: rgb(255 255 255 / 0.85); }

/* Marcador da campanha. Traço sob a linha de base, não caixa amarela chapada:
   lê como grifo de quem estudou, não como realce de PowerPoint. */
/* `.palas-mark` continua marca-texto: um traço fino cruzando o pé da linha. */
.palas-mark {
  background-image: linear-gradient(transparent 61%, var(--wp--preset--color--sun) 61%, var(--wp--preset--color--sun) 80%, transparent 80%);
  background-color: transparent;
  color: inherit;
  padding-inline: 0.02em;
  border-radius: 0;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* `--block` vira tarja de verdade: bloco chapado, do jeito que a arte
 * "Ensino Forte" trata as palavras.
 *
 * Engrossar o marca-texto não era opção: quanto mais alto o traço, mais
 * letra branca fica em cima do ouro, e branco sobre #efc312 dá 1,35:1.
 * Chapando o bloco e virando o texto para navy-dark, a conta é 8,61:1.
 * A mesma regra de sempre — a cor do texto segue a superfície. */
mark.palas-mark--block {
  background-color: var(--wp--preset--color--sun);
  background-image: none;
  color: var(--wp--preset--color--navy-dark);
  padding: 0.06em 0.22em;
  border-radius: 3px;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* Ênfase da campanha. O itálico do Hanken é discreto: serve para inflexão,
   não para decoração. */
.palas-em { font-style: italic; font-weight: 500; }

/* ------------------------------------------------------------------ *
 * 4. Botões — sólidos, raio contido, sem gradiente
 * ------------------------------------------------------------------ */

.wp-block-button__link {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 48px;              /* alvo de toque */
  line-height: 1.1;
  box-shadow: none;
  transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

/* CTA amarelo com texto navy, o mesmo par que a escola já usa no site dela.
   Ciano com texto branco dava 2,6:1 e reprovava; amarelo com navy dá 9,4:1 e
   é a única entrada de calor da página — por isso funciona como chamada. */
.is-style-accent .wp-block-button__link {
  background: var(--wp--preset--color--sun);
  color: var(--wp--preset--color--navy-dark);
}

.is-style-accent .wp-block-button__link:hover {
  background: color-mix(in srgb, var(--wp--preset--color--sun) 88%, black);
}

.is-style-ghost .wp-block-button__link {
  background: transparent;
  color: var(--wp--preset--color--navy);
  border: 1.5px solid var(--palas-rule);
}

.is-style-ghost .wp-block-button__link:hover {
  border-color: var(--wp--preset--color--navy);
  background: transparent;
}

.palas-hero .is-style-ghost .wp-block-button__link,
.palas-section--navy .is-style-ghost .wp-block-button__link {
  color: #fff;
  border-color: rgb(255 255 255 / 0.35);
}

.palas-hero .is-style-ghost .wp-block-button__link:hover,
.palas-section--navy .is-style-ghost .wp-block-button__link:hover {
  border-color: #fff;
  background: rgb(255 255 255 / 0.08);
}

/* Link de texto com seta, o CTA discreto que substitui "Explorar →" em card */
.palas-arrow {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-weight: 600;
  font-size: var(--wp--preset--font-size--small);
  color: var(--palas-accent-ink);
  text-decoration: none;
  min-height: 44px;
}

.palas-arrow::after { content: '→'; transition: transform 0.18s ease; }
.palas-arrow:hover { text-decoration: underline; }
.palas-arrow:hover::after { transform: translateX(3px); }

/* ------------------------------------------------------------------ *
 * 5. Hero
 * ------------------------------------------------------------------ */

.palas-hero {
  position: relative;
  overflow: hidden;
  color: #fff;
  background: var(--wp--preset--color--navy-deep);
  display: grid;
  align-items: center;
  min-height: min(84vh, 40rem);
}

/* A foto agora ocupa o hero inteiro.
 *
 * A versão anterior era partida — copy num campo navy, foto em painel
 * próprio — e o comentário dizia que véu sobre foto clara "vira lama". Isso
 * é verdade para véu CHAPADO: um preto a 86% uniforme apaga a fotografia e
 * ainda deixa a copy sobre ruído. Degradê direcional não tem esse problema,
 * porque escurece só o lado onde o texto está e solta o outro.
 *
 * A conta, no pior caso possível (foto branca por baixo do ponto mais claro
 * que o texto alcança): o degradê segura 0,86 de navy até 46% da largura, o
 * que dá 8,1:1 para texto branco. A copy é limitada a 34rem justamente para
 * nunca chegar na ponta clara, onde cairia para 2,1:1.
 */
.palas-hero__foto {
  position: absolute;
  inset: 0;
  margin: 0;
}
.palas-hero__foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 62% 50%;
  display: block;
}
.palas-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(
    180deg,
    rgb(2 15 71 / 0.78) 0%,
    rgb(2 15 71 / 0.92) 100%
  );
}

/* Filete dourado no pé: a única linha de cor do topo. */
.palas-hero::after {
  content: '';
  position: absolute; left: 0; right: 0; bottom: 0; height: 4px;
  z-index: 3;
  background: var(--wp--preset--color--sun);
}

.palas-hero__inner {
  position: relative;
  z-index: 2;
  box-sizing: border-box;
  width: 100%;
  max-width: 76rem;
  margin-inline: auto;
  padding: var(--wp--preset--spacing--breath) 1.5rem;
}

@media (min-width: 768px) { .palas-hero__inner { padding-inline: 2.5rem; } }

@media (min-width: 1024px) {
  .palas-hero { min-height: min(88vh, 44rem); }
  /* No desktop a copy ocupa só a faixa esquerda, então o degradê vira
     horizontal e a fotografia respira do meio para a direita. */
  .palas-hero::before {
    background: linear-gradient(
      96deg,
      rgb(2 15 71 / 0.94) 0%,
      rgb(2 15 71 / 0.86) 46%,
      rgb(2 15 71 / 0.34) 96%
    );
  }
}

.palas-hero__copy { max-width: 34rem; }

.palas-hero h1 {
  font-size: var(--wp--preset--font-size--hero);
  font-weight: 700;
  /* 1.06 era apertado demais para três linhas com uma tarja chapada no
     meio: o bloco dourado ultrapassa a própria linha em 7px de cada lado e
     encostava em "é Palas." no celular. */
  line-height: 1.14;
  letter-spacing: -0.028em;
  color: #fff;
}

/* Selo de autoridade no pé do hero */
.palas-hero__seal {
  display: flex; align-items: center; gap: 0.9rem;
  margin-top: 2.5rem; padding-top: 1.5rem;
  border-top: 1px solid rgb(255 255 255 / 0.22);
  max-width: 30rem;
}

.palas-hero__seal img { height: 2.4rem; width: auto; }

.palas-hero__seal span {
  font-size: var(--wp--preset--font-size--micro);
  line-height: 1.45;
  color: rgb(255 255 255 / 0.78);
}

/* Em tela estreita o selo e a frase disputam a mesma linha e a frase cai
   numa coluna de ~90px, com duas palavras por linha. Empilha. */
@media (max-width: 560px) {
  .palas-hero__seal { flex-direction: column; align-items: flex-start; gap: 0.85rem; }
}

/* ------------------------------------------------------------------ *
 * 6. Hero de página interna — editorial, não laje chapada
 * ------------------------------------------------------------------ */

.palas-page-hero {
  position: relative;
  background: var(--wp--preset--color--paper);
  border-bottom: 1px solid var(--palas-rule-soft);
  overflow: hidden;
}

.palas-page-hero__inner {
  max-width: 76rem; margin-inline: auto;
  padding: 2rem 1.5rem var(--wp--preset--spacing--section);
}

@media (min-width: 768px) { .palas-page-hero__inner { padding-inline: 2.5rem; } }

/* Sem foto o H1 ocupa a coluna de leitura inteira; com foto ele divide a
   linha com ela. 20ch fixo dava 570px num campo de 1216px, e a página abria
   com metade da tela em branco. */
.palas-page-hero h1 {
  font-size: var(--wp--preset--font-size--title-xl);
  font-weight: 700;
  letter-spacing: -0.028em;
  max-width: 30ch;
  margin: 1.5rem 0 0;
}

/* Cheguei a pôr foto aqui e desfiz: a única foto disponível para o topo era a
   mesma que já ilustrava a seção seguinte, e a página abria com a mesma imagem
   duas vezes em 800px de rolagem. Onze fotos não sustentam duas posições
   distintas em quinze páginas. Foto no topo volta quando houver acervo. */

.palas-page-hero .is-style-lede { margin-top: 1.5rem; max-width: 44ch; }

/* Trilha */
.palas-crumbs {
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--ink-soft);
}

.palas-crumbs a { color: inherit; text-decoration: none; }
.palas-crumbs a:hover { color: var(--palas-accent-ink); text-decoration: underline; }
.palas-crumbs [aria-current] { color: var(--wp--preset--color--ink); }
.palas-crumbs span[aria-hidden] { padding-inline: 0.45rem; opacity: 0.45; }

/* Marca de acento da seção: um traço, não uma barra colorida em cada card */
.palas-page-hero::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 4px; background: var(--palas-accent);
}

/* ------------------------------------------------------------------ *
 * 7. Cabeçalho de seção
 * ------------------------------------------------------------------ */

.palas-section__header { max-width: 34rem; margin-bottom: var(--wp--preset--spacing--wide); }

/* Cabeçalho de seção em duas colunas quando existe linha de apoio.
 *
 * Empilhado em 34rem, ele usava 544px de um campo de 1136px e deixava 592px
 * vazios à direita — em toda seção de toda página. Com título à esquerda e
 * apoio à direita, a linha fecha e o olho anda na horizontal em vez de só
 * descer. O apoio alinha pela base do título, não pelo topo: é o que costura
 * os dois blocos numa linha só. */
@media (min-width: 900px) {
  .palas-section__header:not(.is-centered):has(.is-style-lede) {
    max-width: none;
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
    column-gap: var(--wp--preset--spacing--section);
    row-gap: 1rem;
  }

  /* O eyebrow atravessa as duas colunas e fica sozinho na primeira linha.
     Título e apoio dividem a segunda, começando na mesma altura. Tentei antes
     alinhar o apoio pela base do título, com ele atravessando as duas linhas:
     a linha do eyebrow esticava para a altura do apoio e abria um vão de 140px
     entre o rótulo e o título. */
  .palas-section__header:not(.is-centered):has(.is-style-lede) > * { margin-top: 0; }

  .palas-section__header:not(.is-centered):has(.is-style-lede) > .is-style-eyebrow {
    grid-column: 1 / -1;
    grid-row: 1;
    margin-bottom: 0;
  }

  .palas-section__header:not(.is-centered):has(.is-style-lede) > h2 { grid-column: 1; grid-row: 2; }

  .palas-section__header:not(.is-centered):has(.is-style-lede) > .is-style-lede {
    grid-column: 2;
    grid-row: 2;
    align-self: start;
    max-width: 42ch;
    /* Meia-linha para o texto pequeno casar opticamente com a caixa alta do
       título, que tem altura de maiúscula muito maior. */
    margin-top: 0.45rem;
  }
}
.palas-section__header.is-centered { max-width: 40rem; margin-inline: auto; text-align: center; }
.palas-section__header.is-centered .is-style-lede { margin-inline: auto; }
.palas-section__header > * + * { margin-top: 1.25rem; }

/* ------------------------------------------------------------------ *
 * 8. Bloco de resposta (AEO)
 *
 * Era uma barra colorida à esquerda. Virou hierarquia tipográfica: a
 * resposta é maior e mais escura que o desenvolvimento. Sem enfeite.
 * ------------------------------------------------------------------ */

.palas-answer { max-width: 44rem; }
.palas-answer > * + * { margin-top: 1.35rem; }

.palas-answer__lead {
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--title-sm);
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.4;
  color: var(--wp--preset--color--ink);
}

.palas-answer p:not(.palas-answer__lead) {
  color: var(--wp--preset--color--ink-soft);
  max-width: 40rem;
}

/* ------------------------------------------------------------------ *
 * 9. Lista editorial — substitui a grade de cards
 *
 * Era: 4 caixas brancas com sombra, raio e barra colorida no topo.
 * Agora: itens separados por fio, numerados, sem caixa. Lê como
 * publicação, não como template de SaaS.
 * ------------------------------------------------------------------ */

.palas-list {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--palas-rule);
  counter-reset: palas-item;
}

.palas-list__item {
  counter-increment: palas-item;
  display: grid;
  grid-template-columns: 3rem 1fr;
  gap: 0 1.5rem;
  align-items: start;
  padding-block: 1.75rem;
  border-bottom: 1px solid var(--palas-rule);
}

/* Abaixo de 900px só há duas colunas (número + conteúdo). O item pode ter
   dois filhos (título e descrição separados), e sem esta regra o segundo caía
   numa coluna implícita de largura mínima, saindo uma letra por linha. */
.palas-list__item > * { grid-column: 2; min-width: 0; }
.palas-list__item > * + * { margin-top: 0.5rem; }

@media (min-width: 900px) {
  /* As três colunas somam ~768px (3rem + 17rem + 46ch + dois vãos), mas as
     linhas divisórias iam até os 1136px do container. Sobrava um rabo vazio
     de 349px — 31% — no fim de cada regra, em todos os itens das onze
     páginas que usam esta lista.
     Alargar a coluna de texto até a borda seria pior: daria 88ch de medida,
     o dobro do confortável. Então quem encolhe é a caixa, não a tipografia. */
  .palas-list--split { max-width: 52rem; }
  .palas-list--split .palas-list__item { grid-template-columns: 3rem 17rem minmax(0, 46ch); }
  .palas-list--split .palas-list__item > *:nth-child(1) { grid-column: 2; }
  .palas-list--split .palas-list__item > *:nth-child(2) { grid-column: 3; margin-top: 0; }
  .palas-list--split .palas-list__item p { margin-top: 0; }

  /* O extrator do Astro emitiu duas formas de item.
   *
   * A home tem título e descrição como dois filhos diretos, e cai certinho nas
   * colunas 2 e 3. As onze páginas internas têm os dois DENTRO de um <div>, e
   * esse div, sendo filho único, ia inteiro para a coluna 2 — 17rem, 272px.
   * Título e descrição empilhavam nessa faixa estreita e a coluna de 46ch
   * ficava vazia ao lado, em todos os itens de todas essas páginas.
   *
   * Era isso que fazia as internas parecerem uma coluna de texto com metade da
   * tela em branco à direita. Em vez de reescrever o conteúdo das onze, o grid
   * entra no wrapper quando ele existe. */
  .palas-list--split .palas-list__item > div:only-child {
    grid-column: 2 / -1;
    display: grid;
    grid-template-columns: 17rem minmax(0, 46ch);
    gap: 0 1.5rem;
    align-items: start;
  }

  .palas-list--split .palas-list__item > div:only-child > * { margin-top: 0; }
}

.palas-list__item::before {
  content: counter(palas-item, decimal-leading-zero);
  font-family: var(--wp--preset--font-family--body);
  font-size: var(--wp--preset--font-size--micro);
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--palas-accent-ink);
  padding-top: 0.35rem;
}

.palas-list__item h3 {
  margin: 0;
  font-size: var(--wp--preset--font-size--title-sm);
  font-weight: 700;
  letter-spacing: -0.018em;
}

.palas-list__item h3 a { text-decoration: none; color: inherit; }
.palas-list__item h3 a:hover { color: var(--palas-accent-ink); text-decoration: underline; text-underline-offset: 4px; }

.palas-list__item p {
  margin: 0.5rem 0 0;
  color: var(--wp--preset--color--ink-soft);
  max-width: 44ch;
}

.palas-section--navy .palas-list,
.palas-section--navy .palas-list__item { border-color: rgb(255 255 255 / 0.16); }
.palas-section--navy .palas-list__item::before { color: var(--wp--preset--color--sun); }

/* ------------------------------------------------------------------ *
 * 10. Cards de navegação — só onde o card É o clique
 *
 * Fotografia primeiro, ocupando o card inteiro. Sem caixa branca, sem
 * sombra, sem barra colorida. O título vive sobre a imagem.
 * ------------------------------------------------------------------ */

.palas-navcards {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  align-items: stretch;
}

/* Foto em cima, texto embaixo em campo navy.
 *
 * Antes era texto sobre a foto, com um véu escuro por cima para dar contraste.
 * Isso obriga a escolher entre ler o texto e ver a criança, e o véu tinha que
 * subir a 93% para o título passar — a foto virava um retângulo preto. Com a
 * foto inteira e o texto no navy, a legibilidade não depende de quão clara é
 * a imagem, que é justamente o que ninguém controla num acervo de escola.
 */
.palas-navcard {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 6px;
  background: var(--wp--preset--color--navy);
  text-decoration: none;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.palas-navcard img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  transition: transform 0.5s cubic-bezier(0.2, 0, 0.2, 1);
}

.palas-navcard:hover {
  transform: translateY(-3px);
  box-shadow: var(--wp--preset--shadow--lift);
}

.palas-navcard:hover img { transform: scale(1.04); }

.palas-navcard__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 1.15rem 1.15rem 1.35rem;
  color: #fff;
}

.palas-navcard__range {
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--sun);
  margin: 0;
}

.palas-navcard__title {
  font-size: var(--wp--preset--font-size--title-sm);
  color: #fff;
  margin: 0.35rem 0 0;
}

.palas-navcard__hint {
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.5;
  color: rgb(255 255 255 / 0.78);
  margin: 0.6rem 0 0;
}

/* Sem foto: o card fica tipográfico sobre branco, com filete no topo. */
.palas-navcard--flat {
  background: #fff;
  border: 1px solid var(--palas-rule-soft);
  border-top: 3px solid var(--wp--preset--color--cyan);
  border-radius: 0;
}

.palas-navcard--flat .palas-navcard__body { color: var(--wp--preset--color--ink); padding: 1.5rem; }
.palas-navcard--flat .palas-navcard__title { color: var(--wp--preset--color--navy); }
.palas-navcard--flat .palas-navcard__hint { color: var(--wp--preset--color--ink-soft); }
.palas-navcard--flat .palas-navcard__range { color: var(--palas-accent-ink); }

/* ------------------------------------------------------------------ *
 * 11. Figura e composição imagem + texto
 * ------------------------------------------------------------------ */

.palas-figure { margin: 0; }
.palas-figure img { width: 100%; height: auto; display: block; border-radius: 4px; }

.palas-figure figcaption {
  margin-top: 0.85rem;
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--ink-soft);
}

.palas-split {
  display: grid;
  gap: var(--wp--preset--spacing--wide);
  align-items: center;
}

@media (min-width: 900px) {
  .palas-split { grid-template-columns: 1fr 1fr; gap: var(--wp--preset--spacing--section); }
  .palas-split--wide-media { grid-template-columns: 1fr 1.25fr; }
  .palas-split--reverse > *:first-child { order: 2; }
}

.palas-split img { width: 100%; height: 100%; max-height: 34rem; object-fit: cover; border-radius: 4px; }

/* Faixa fotográfica -----------------------------------------------------
 *
 * O respiro no meio de uma página longa. A medição mostrava 350 a 660
 * palavras seguidas sem nenhuma imagem nas páginas de conteúdo: uma foto no
 * topo e nada até o rodapé. Isso lê como documento, não como site de escola.
 *
 * A faixa sangra a largura toda de propósito: é o único elemento da página
 * que não respeita a coluna, e é isso que marca a pausa.
 */
.palas-band { margin: 0; width: 100%; }

.palas-band img {
  display: block;
  width: 100%;
  aspect-ratio: 12 / 5;
  object-fit: cover;
}

/* As duas fotos 1920x600 do acervo são panorâmicas de origem: cortá-las em
   12:5 jogaria fora as laterais. */
.palas-band--wide img { aspect-ratio: 16 / 5; }

.palas-band figcaption {
  max-width: 76rem;
  margin-inline: auto;
  padding: 0.9rem 1.5rem 0;
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--ink-soft);
}

@media (min-width: 768px) { .palas-band figcaption { padding-inline: 2.5rem; } }

@media (max-width: 700px) {
  .palas-band img,
  .palas-band--wide img { aspect-ratio: 5 / 3; }
}

/* Contato e ficha institucional -----------------------------------------
 *
 * A assessoria de imprensa não é página de marketing: quem chega ali quer um
 * endereço de e-mail e um dado para conferir. Dois blocos, sem enfeite.
 */
.palas-contato {
  display: grid;
  gap: var(--wp--preset--spacing--wide);
}

@media (min-width: 720px) {
  .palas-contato { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--wp--preset--spacing--section); }
}

.palas-contato__rotulo {
  margin: 0 0 0.6rem;
  font-size: var(--wp--preset--font-size--micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--ink-soft);
}

.palas-contato__valor {
  display: block;
  width: fit-content;
  padding-block: 0.2rem;
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--title-sm);
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

a.palas-contato__valor:hover { text-decoration: underline; text-underline-offset: 4px; }

.palas-contato__valor--quebra {
  font-size: var(--wp--preset--font-size--medium);
  font-weight: 500;
  line-height: 1.55;
  max-width: 22rem;
}

/* Ficha: rótulo à esquerda, valor à direita, um fio entre as linhas. Não é
   tabela de dados comparáveis, é uma lista de definição — e é <dl> no HTML. */
.palas-ficha {
  margin: 0;
  border-top: 1px solid var(--palas-rule);
  max-width: 52rem;
}

.palas-ficha__item {
  display: grid;
  gap: 0.3rem 2rem;
  padding-block: 1.05rem;
  border-bottom: 1px solid var(--palas-rule);
}

@media (min-width: 640px) {
  .palas-ficha__item { grid-template-columns: 12rem minmax(0, 1fr); align-items: baseline; }
}

.palas-ficha dt {
  margin: 0;
  font-size: var(--wp--preset--font-size--micro);
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--wp--preset--color--ink-soft);
}

.palas-ficha dd {
  margin: 0;
  font-size: var(--wp--preset--font-size--medium);
  line-height: 1.55;
  color: var(--wp--preset--color--ink);
}

/* ------------------------------------------------------------------ *
 * 12. Citação de prova
 * ------------------------------------------------------------------ */

.palas-quote {
  font-family: var(--wp--preset--font-family--display);
  font-size: clamp(1.5rem, 3.2vw, 2.25rem);
  font-weight: 600;
  line-height: 1.22;
  letter-spacing: -0.022em;
  max-width: 24ch;
}

/* Aspas de abertura como marca gráfica, já que não há mais itálico */
.palas-quote::before {
  content: '“';
  display: block;
  font-size: 2.4em;
  line-height: 0.6;
  color: var(--wp--preset--color--sun);
  margin-bottom: 0.15em;
}

.palas-section--navy .palas-quote { color: #fff; }

.palas-quote__by {
  display: flex; align-items: center; gap: 0.85rem;
  margin-top: 2rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--palas-rule);
}

.palas-section--navy .palas-quote__by { border-color: rgb(255 255 255 / 0.2); }

.palas-quote__name { margin: 0; font-weight: 600; font-size: var(--wp--preset--font-size--small); }
.palas-quote__role { margin: 0.1rem 0 0; font-size: var(--wp--preset--font-size--micro); color: var(--wp--preset--color--ink-soft); }
.palas-section--navy .palas-quote__role { color: rgb(255 255 255 / 0.65); }

/* ------------------------------------------------------------------ *
 * 13. Números
 * ------------------------------------------------------------------ */

.palas-stats { display: grid; gap: 2.5rem 2rem; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); }

.palas-stat__value {
  font-family: var(--wp--preset--font-family--display);
  font-weight: 700;
  letter-spacing: -0.03em;
  font-size: clamp(2.2rem, 3.6vw, 3rem);
  overflow-wrap: normal;
  hyphens: none;
  font-weight: 500;
  line-height: 1;
  color: #fff;
}

.palas-stat__unit {
  display: block;
  margin-top: 0.35rem;
  font-family: var(--wp--preset--font-family--body);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 600;
  color: var(--wp--preset--color--sun);
}

.palas-stat__label {
  margin: 0.75rem 0 0;
  font-size: var(--wp--preset--font-size--micro);
  line-height: 1.5;
  color: rgb(255 255 255 / 0.7);
  max-width: 24ch;
}

/* ------------------------------------------------------------------ *
 * 14. FAQ
 * ------------------------------------------------------------------ */

.palas-faq { border-top: 1px solid var(--palas-rule); }

.wp-block-details {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--palas-rule);
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  margin: 0;
}

.wp-block-details summary {
  font-family: var(--wp--preset--font-family--display);
  font-weight: 600;
  letter-spacing: -0.015em;
  font-size: var(--wp--preset--font-size--title-sm);
  line-height: 1.35;
  color: var(--wp--preset--color--ink);
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1.5rem;
  padding-block: 1.5rem;
  min-height: 44px;
}

.wp-block-details summary::-webkit-details-marker { display: none; }

.wp-block-details summary::after {
  content: '';
  flex: none;
  align-self: center;
  width: 0.65rem; height: 0.65rem;
  border-right: 2px solid var(--palas-accent-ink);
  border-bottom: 2px solid var(--palas-accent-ink);
  transform: rotate(45deg) translateY(-20%);
  transition: transform 0.2s ease;
}

.wp-block-details[open] summary::after { transform: rotate(-135deg) translateY(-20%); }

.wp-block-details > *:not(summary) {
  margin: 0 0 1.5rem;
  max-width: 46rem;
  color: var(--wp--preset--color--ink-soft);
  line-height: 1.7;
}

/* ------------------------------------------------------------------ *
 * 15. Cabeçalho
 *
 * Correção de hierarquia de marca: a logo da escola manda, o selo da
 * UNESCO é um selo. Antes eram 50px de Palas contra 329px de UNESCO.
 * ------------------------------------------------------------------ */

.palas-header {
  position: sticky; top: 0; z-index: 60;
  background: color-mix(in srgb, var(--wp--preset--color--paper) 90%, transparent);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--palas-rule-soft);
}

.palas-header__inner {
  max-width: 76rem; margin-inline: auto;
  padding: 0.9rem 1.5rem;
  display: flex; align-items: center; justify-content: space-between; gap: 2rem;
}

@media (min-width: 768px) { .palas-header__inner { padding-inline: 2.5rem; } }

.palas-brand { display: inline-flex; align-items: center; text-decoration: none; }
.palas-brand img { height: 3.25rem; width: auto; display: block; }

/* No celular, a marca encolhe. */
@media (max-width: 480px) {
  .palas-header .palas-brand img { height: 1.9rem; }
}

/* ------------------------------------------------------------------ *
 * 16. Navegação
 * ------------------------------------------------------------------ */

.palas-nav__list { display: flex; align-items: center; gap: 1.9rem; list-style: none; margin: 0; padding: 0; }
.palas-nav__item { position: relative; }

.palas-nav__link {
  display: inline-flex; align-items: center; gap: 0.35rem;
  min-height: 44px;
  font-weight: 500;
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--ink);
  text-decoration: none;
  transition: color 0.18s ease;
}

.palas-nav__link:hover, .palas-nav__link.is-current { color: var(--palas-accent-ink); }
.palas-nav__item:hover .palas-nav__link svg { transform: rotate(180deg); }
.palas-nav__link svg { transition: transform 0.18s ease; opacity: 0.5; }

/* O painel era centralizado no item; nos últimos itens do menu ele vazava
   para fora da viewport e criava rolagem horizontal. Ancorado à esquerda por
   padrão, e à direita nos dois últimos. */
.palas-nav__panel {
  position: absolute; left: 0; top: 100%;
  min-width: 22rem; max-width: min(24rem, calc(100vw - 3rem)); padding: 0.6rem;
  background: #fff;
  border: 1px solid var(--palas-rule-soft);
  border-radius: 6px;
  box-shadow: 0 18px 48px -24px rgb(31 48 128 / 0.34);
  opacity: 0; visibility: hidden; transform: translateY(0.4rem);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
  z-index: 50;
}

.palas-nav__item:hover > .palas-nav__panel,
.palas-nav__item:focus-within > .palas-nav__panel { opacity: 1; visibility: visible; transform: none; }

.palas-nav__item:nth-last-child(-n+3) > .palas-nav__panel { left: auto; right: 0; }

@media (max-width: 1023px) {
  .palas-nav__item:nth-last-child(-n+3) > .palas-nav__panel { right: auto; left: 0; }
}

.palas-nav__panel::before { content: ''; position: absolute; inset-inline: 0; bottom: 100%; height: 0.75rem; }
.palas-nav__panel ul { list-style: none; margin: 0; padding: 0; display: grid; }

.palas-nav__panel a {
  display: block; padding: 0.7rem 0.85rem; border-radius: 4px;
  text-decoration: none; transition: background-color 0.15s ease;
}

.palas-nav__panel a:hover { background: var(--wp--preset--color--paper); }

.palas-nav__panel-title {
  display: flex; align-items: baseline; gap: 0.55rem;
  font-family: var(--wp--preset--font-family--display);
  font-weight: 600; font-size: 1.02rem; letter-spacing: -0.012em;
  color: var(--wp--preset--color--ink);
}

.palas-nav__range {
  font-family: var(--wp--preset--font-family--body);
  font-style: normal; font-size: 0.7rem; font-weight: 600;
  letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--palas-accent-ink);
}

.palas-nav__panel-hint {
  display: block; margin-top: 0.2rem;
  font-size: var(--wp--preset--font-size--micro);
  line-height: 1.45; color: var(--wp--preset--color--ink-soft);
}

.palas-nav__burger {
  display: none; flex-direction: column; justify-content: center; gap: 5px;
  width: 44px; height: 44px; padding: 0 0.6rem;
  border: 0; background: transparent; cursor: pointer;
}

.palas-nav__burger span { display: block; height: 1.5px; background: var(--wp--preset--color--navy); transition: transform 0.2s ease, opacity 0.2s ease; }

@media (max-width: 1023px) {
  .palas-nav__burger { display: flex; }
  .palas-nav__list {
    position: fixed; inset: 4.9rem 0 auto;
    flex-direction: column; align-items: stretch; gap: 0;
    max-height: calc(100dvh - 4.9rem); overflow-y: auto;
    padding: 1rem 1.5rem 2.5rem;
    background: var(--wp--preset--color--paper);
    border-bottom: 1px solid var(--palas-rule);
    display: none;
  }
  .palas-nav[data-open='true'] .palas-nav__list { display: flex; }
  .palas-nav__burger[aria-expanded='true'] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
  .palas-nav__burger[aria-expanded='true'] span:nth-child(2) { opacity: 0; }
  .palas-nav__burger[aria-expanded='true'] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }
  .palas-nav__link { font-size: 1.15rem; padding-block: 0.6rem; }
  .palas-nav__panel {
    position: static; translate: none; opacity: 1; visibility: visible; transform: none;
    min-width: 0; box-shadow: none; border: 0; background: transparent; padding: 0 0 0.75rem 0.25rem;
  }
}

/* ------------------------------------------------------------------ *
 * 17. Rodapé
 *
 * Era uma coluna só de 1581px de altura: `repeat(auto-fit, minmax(0, 1fr))`
 * não consegue calcular quantas faixas cabem quando o mínimo é zero, então
 * o grid colapsava e marca, quatro menus e contato empilhavam um sob o outro,
 * deixando 800px de navy vazio à direita. Colunas agora são explícitas.
 * ------------------------------------------------------------------ */

.palas-footer { background: var(--wp--preset--color--navy-deep); color: rgb(255 255 255 / 0.88); }
.palas-footer a { color: rgb(255 255 255 / 0.88); text-decoration: none; }
.palas-footer a:hover { color: var(--wp--preset--color--sun); text-decoration: underline; text-underline-offset: 3px; }
.palas-footer :is(h2, h3) { color: #fff; }

.palas-footer__inner {
  max-width: 76rem;
  margin-inline: auto;
  padding: var(--wp--preset--spacing--section) 1.5rem 2rem;
}

@media (min-width: 768px) { .palas-footer__inner { padding-inline: 2.5rem; } }

.palas-footer__top { display: grid; gap: 2.5rem; }

/* Empilhado numa coluna só, o rodapé passava de 1500px no celular.
   Dois menus lado a lado cortam isso pela metade. */
@media (min-width: 360px) {
  .palas-footer__top { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.25rem 1.5rem; }
  .palas-footer__brand { grid-column: 1 / -1; }
}

@media (min-width: 900px) {
  .palas-footer__top { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (min-width: 1140px) {
  /* Marca à esquerda e os quatro menus em faixas iguais. */
  .palas-footer__top { grid-template-columns: 1.45fr repeat(4, minmax(0, 1fr)); gap: 3rem 2.25rem; }
  .palas-footer__brand { grid-column: auto; }
}

/* Marca ---------------------------------------------------------------- */

.palas-footer__brand img { height: 2.9rem; width: auto; display: block; }

.palas-footer__about {
  margin: 1.25rem 0 0;
  max-width: 32ch;
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.6;
  color: rgb(255 255 255 / 0.7);
}

.palas-footer__seal span {
  font-size: var(--wp--preset--font-size--micro);
  line-height: 1.4;
  color: rgb(255 255 255 / 0.62);
}

/* Menus ---------------------------------------------------------------- */

.palas-footer nav h3 {
  font-family: var(--wp--preset--font-family--body);
  font-size: 0.7rem;
  font-weight: 700; text-transform: uppercase; letter-spacing: 0.13em;
  color: rgb(255 255 255 / 0.5);
  margin: 0;
}

.palas-footer nav ul { list-style: none; margin: 0.85rem 0 0; padding: 0; display: grid; gap: 0; }

.palas-footer nav a {
  display: block;
  padding-block: 0.42rem;      /* área de toque sem esticar o ritmo */
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.35;
}

/* Contato --------------------------------------------------------------- */

.palas-footer__contact {
  margin-top: var(--wp--preset--spacing--wide);
  padding-top: 1.75rem;
  border-top: 1px solid rgb(255 255 255 / 0.16);
  display: grid; gap: 1.75rem;
}

@media (min-width: 860px) { .palas-footer__contact { grid-template-columns: 1fr auto; align-items: center; } }

.palas-footer__contact-grid { display: grid; gap: 1.25rem; }
/* Selo, endereço e contato na mesma linha. O selo é mais largo que um rótulo
   de texto, então ele tem coluna própria em vez de dividir a terça parte. */
@media (min-width: 720px) {
  .palas-footer__contact-grid { grid-template-columns: auto minmax(0, 1fr) minmax(0, 1fr); gap: 2.5rem; align-items: start; }
}

.palas-footer__label {
  display: block;
  font-size: 0.7rem;
  text-transform: uppercase; letter-spacing: 0.13em;
  color: rgb(255 255 255 / 0.5);
}

.palas-footer__value {
  display: block;
  margin-top: 0.35rem;
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.5;
  color: rgb(255 255 255 / 0.9);
}

a.palas-footer__value { padding-block: 0.15rem; }

.palas-footer__social { display: flex; align-items: center; gap: 0.6rem; }

.palas-footer__social a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 4px;
  background: rgb(255 255 255 / 0.07);
  transition: background-color 0.18s ease;
}

.palas-footer__social a:hover { background: rgb(255 255 255 / 0.16); }

/* Rodapé legal ---------------------------------------------------------- */

.palas-footer__legal {
  margin-top: 2rem; padding-top: 1.25rem;
  border-top: 1px solid rgb(255 255 255 / 0.16);
  display: flex; flex-direction: column; gap: 0.4rem;
  font-size: var(--wp--preset--font-size--micro);
  color: rgb(255 255 255 / 0.72);
}

@media (min-width: 640px) { .palas-footer__legal { flex-direction: row; align-items: center; justify-content: space-between; } }

/* ------------------------------------------------------------------ *
 * 18. Chat
 * ------------------------------------------------------------------ */

.palas-chat { position: fixed; right: 1.5rem; bottom: 1.5rem; z-index: 70; display: flex; flex-direction: column; align-items: flex-end; gap: 0.75rem; }

.palas-chat__panel {
  width: min(90vw, 21rem);
  background: #fff; border-radius: 8px;
  box-shadow: 0 24px 60px -24px rgb(2 15 71 / 0.42);
  overflow: hidden; transform-origin: bottom right;
  transform: scale(0.96) translateY(0.5rem); opacity: 0; pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.palas-chat[data-open='true'] .palas-chat__panel { transform: none; opacity: 1; pointer-events: auto; }

.palas-chat__toggle {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  width: 3.5rem; height: 3.5rem;
  border: 0; border-radius: 8px;
  background: var(--wp--preset--color--navy); color: #fff;
  box-shadow: 0 12px 32px -12px rgb(2 15 71 / 0.5);
  cursor: pointer; transition: transform 0.18s ease;
}

.palas-chat__toggle:hover { transform: translateY(-2px); }

.palas-chat__dot { position: absolute; top: -0.2rem; right: -0.2rem; width: 0.85rem; height: 0.85rem; border-radius: 999px; background: var(--wp--preset--color--sun); }
.palas-chat[data-open='true'] .palas-chat__dot { display: none; }

/* ------------------------------------------------------------------ *
 * 19. Movimento
 *
 * A revelação ao rolar cobria 8 blocos por página e não comunicava nada.
 * Ficou só onde há entrada real de composição, com deslocamento curto.
 * ------------------------------------------------------------------ */

html.js .palas-reveal { opacity: 0; transform: translateY(10px); transition: opacity 0.5s ease, transform 0.5s ease; }
html.js .palas-reveal.is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html.js .palas-reveal { opacity: 1; transform: none; transition: none; }
}

.editor-styles-wrapper .palas-reveal { opacity: 1; transform: none; }

/* ------------------------------------------------------------------ *
 * 20. Utilidades de grade herdadas (compatibilidade com conteúdo antigo)
 * ------------------------------------------------------------------ */

.palas-cols { display: grid; gap: 1.5rem; }
@media (min-width: 640px)  { .palas-cols--2, .palas-cols--3, .palas-cols--4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .palas-cols--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { .palas-cols--4 { grid-template-columns: repeat(4, 1fr); } }

/* Composição em colunas (imagem + texto) --------------------------------- */

.palas-split-cols { align-items: center; }
.palas-split-cols .palas-figure img { max-height: 34rem; object-fit: cover; }

@media (max-width: 781px) {
  .palas-split-cols { gap: 2rem; }
  /* No mobile a imagem vem antes do texto: ela é o gancho. */
  .palas-split-cols > .wp-block-column:last-child { order: -1; }
}

/* Rodapé: marca ------------------------------------------------------- */

.palas-footer__brand img { height: 3.25rem; width: auto; display: block; }

.palas-footer__about {
  margin: 1.5rem 0 0;
  max-width: 34ch;
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.65;
  color: rgb(255 255 255 / 0.72);
}

.palas-footer__seal {
  display: flex; align-items: center; gap: 0.85rem;
  max-width: 20rem;
}

/* Placa branca: o tratamento indicado quando não se tem reversa aprovada.
   Sobre navy o azul da UNESCO afunda, e derivar uma reversa branca por conta
   própria é alterar a marca de um terceiro. A placa fecha em 72px — 60 de arte
   mais 6 de respiro em cima e embaixo — e o logo do rodapé sobe para a mesma
   altura, porque a marca da escola não pode sair menor que a do parceiro. */
.palas-unesco-placa {
  display: inline-block;
  flex: 0 0 auto;
  padding: 0.375rem;
  border-radius: 3px;
  background: #fff;
}

.palas-unesco-placa img { height: 3.75rem; width: auto; display: block; }

.palas-footer__seal span {
  font-size: var(--wp--preset--font-size--micro);
  line-height: 1.45;
  color: rgb(255 255 255 / 0.68);
}

/* Marca: brasão + nome ------------------------------------------------- */

.palas-brand { gap: 0.75rem; align-items: center; }
.palas-brand img { height: 3.4rem; width: auto; }

.palas-brand__word { display: flex; flex-direction: column; line-height: 1.15; }

.palas-brand__word strong {
  font-family: var(--wp--preset--font-family--display);
  font-size: 1.18rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  color: var(--wp--preset--color--navy);
  white-space: nowrap;
}

.palas-brand__word em {
  font-family: var(--wp--preset--font-family--body);
  font-style: normal;
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--wp--preset--color--ink-soft);
  margin-top: 0.2rem;
}

@media (max-width: 420px) { .palas-header .palas-brand__word em { display: none; } }

.palas-brand--footer { display: flex; }
.palas-brand--footer img { height: 4.5rem; }
.palas-brand--footer .palas-brand__word strong { color: #fff; }
.palas-brand--footer .palas-brand__word em { color: rgb(255 255 255 / 0.6); }

/* Correções finais ------------------------------------------------------ */

/* <button> não herda fonte por padrão: era por onde Arial entrava. */
button, input, select, textarea { font: inherit; }

/* Alvos de toque: links de texto ganham área sem mudar o desenho. */
.palas-footer nav a,
/* Alvo de toque no rodapé sem quebrar o empilhamento: inline-block colocava
   telefone e e-mail na mesma linha, colados. */
.palas-footer__value {
  display: block;
  width: fit-content;
  padding-block: 0.35rem;
}

.palas-list__item h3 a { display: inline-block; padding-block: 0.2rem; }
.palas-nav__link { padding-inline: 0.3rem; }
.palas-crumbs a { display: inline-block; padding-block: 0.3rem; }

/* O link de pular conteúdo é intencionalmente invisível até receber foco. */

/* Cabeçalho: nada quebra em duas linhas ---------------------------------- */

.palas-nav__link { white-space: nowrap; }
.palas-brand__word em { white-space: nowrap; }

@media (min-width: 1024px) and (max-width: 1180px) { .palas-nav__list { gap: 1.25rem; } }

/* O block-gap do WordPress metia 38px entre o cabeçalho e o conteúdo,
   abrindo uma faixa clara acima do hero. */
main.wp-block-group { margin-top: 0; }

/* E metia o mesmo entre TODA seção e a seguinte.
 *
 * Cada seção já tem respiro próprio no padding. A margem que o WordPress
 * acrescenta entre irmãos vira uma faixa do fundo do body — 24px no celular,
 * 40px no desktop — visível sempre que duas seções vizinhas têm cor
 * diferente. Cheguei a ver essa faixa numa captura e anotei como "artefato de
 * borda". Não era: era o blockGap aparecendo no site inteiro. */
.entry-content > .palas-section,
.entry-content > .wp-block-group.palas-section { margin-block: 0; }

/* O mesmo `blockGap` mordendo um nível acima.
 *
 * O WordPress aplica a margem entre irmãos de fluxo em `.wp-site-blocks`
 * também, e ali os irmãos são cabeçalho, main e rodapé. Resultado: 40px do
 * fundo do body (papel claro) entre o último bloco e o rodapé — invisível
 * quando o bloco final era claro, escancarado agora que ele é navy e o
 * rodapé também.
 *
 * A segunda margem, de `.entry-content`, abria a mesma faixa entre o hero e
 * a primeira seção. Essa passou despercebida por sorte de cor: o hero de
 * texto e a primeira seção são os dois `paper`, então a faixa era da mesma
 * cor dos vizinhos. Com o hero fotográfico ela também apareceria.
 *
 * Toda seção do tema traz o próprio respiro no padding; a margem entre elas
 * nunca teve função. */
.wp-site-blocks > *,
.wp-site-blocks > .wp-block-template-part,
/* `.wp-site-blocks main > *`, e o prefixo não é enfeite.
 *
 * A regra do core é `:root :where(.is-layout-flow) > *`, que vale (0,1,0)
 * por causa do `:root` — o `:where` zera o resto. `main > *` sozinho vale
 * (0,0,1) e perde. Precisa da classe.
 *
 * E precisa ser `> *`, não `> .entry-content`: o template do blog não usa
 * `.entry-content`, o segundo filho é um `wp-block-group` solto. */
.wp-site-blocks main > * { margin-block-start: 0; }

/* Cabeçalho: lockup horizontal a 40px, que é onde o wordmark da escola fica
   em tamanho de leitura. O selo da UNESCO acompanha em 56px, que é o piso da
   legenda dele — as duas artes têm proporções muito diferentes, então casar
   altura de caixa deixaria uma das duas ilegível. O que se casa é a leitura. */
.palas-header__inner { padding-block: 0.7rem; }
.palas-header .palas-brand img { height: 2.5rem; }

@media (min-width: 1140px) {
  .palas-footer__contact { margin-top: var(--wp--preset--spacing--base); }
}

/* O botão de chat é fixo no canto e cobria a assinatura do rodapé. */
@media (min-width: 640px) {
  .palas-footer__legal > :last-child { padding-right: 4.5rem; }
}

/* Cabeçalho em tela estreita -------------------------------------------
 * Em 375px o conjunto marca + nome + selo + menu somava 388px e empurrava o
 * botão para fora da tela. O nome escrito é adição nossa e cede primeiro; o
 * selo da UNESCO encolhe mas nunca sai, porque o guia o exige em toda página. */

/* O blockGap do WordPress entra como margin-block nos filhos de um grupo
   `flow`. Num header em flex isso empurra o menu 40px para baixo, e o
   align-items:center não desfaz margem: a marca e o menu saíam desalinhados. */
.palas-header__inner > * { margin-block: 0; }

.palas-brand { min-width: 0; }

@media (max-width: 1120px) { .palas-header__inner { gap: 0.75rem; } }

/* Marca à esquerda, menu no meio, ação à direita. */
@media (min-width: 901px) {
  .palas-header__inner { justify-content: flex-start; }
  .palas-header__inner .palas-nav { margin-left: auto; }
  .palas-header__inner .palas-header__cta { margin-left: 1.75rem; }
}
@media (max-width: 767px) { .palas-header .palas-brand img { height: 2.1rem; } }

/* No celular os botões empilhados em larguras diferentes ficam desalinhados. */
@media (max-width: 559px) {
  .palas-hero .wp-block-buttons { width: 100%; }
  .palas-hero .wp-block-button { width: 100%; }
  .palas-hero .wp-block-button__link { width: 100%; justify-content: center; }
}

/* ------------------------------------------------------------------ *
 * Bloco de prova
 *
 * Substituiu os depoimentos fictícios. Duas variantes: fato verificável com
 * fonte, e assinatura de campanha quando não há fato para citar. Nenhuma das
 * duas afirma coisa sobre pessoa que não existe.
 * ------------------------------------------------------------------ */

.palas-proof { margin: 0; max-width: 40rem; }

.palas-proof__claim {
  margin: 0;
  font-family: var(--wp--preset--font-family--display);
  font-size: clamp(1.45rem, 3vw, 2.15rem);
  font-weight: 600;
  line-height: 1.24;
  letter-spacing: -0.022em;
  color: inherit;
}

.palas-proof__claim::before {
  content: '';
  display: block;
  width: 2.75rem;
  height: 3px;
  margin-bottom: 1.5rem;
  background: var(--wp--preset--color--sun);
}

.palas-proof__source {
  margin-top: 1.5rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--palas-rule);
  font-size: var(--wp--preset--font-size--micro);
  line-height: 1.5;
  color: var(--wp--preset--color--ink-soft);
  max-width: 34rem;
}

/* Sozinha, a prova ocupa a coluna de leitura e fica maior: ela é o bloco,
   não a metade dele. */
.palas-proof--solo { max-width: 48rem; }
.palas-proof--solo .palas-proof__claim { font-size: var(--wp--preset--font-size--title-lg); }

.palas-section--navy .palas-proof__source {
  border-color: rgb(255 255 255 / 0.2);
  color: rgb(255 255 255 / 0.65);
}


/* ------------------------------------------------------------------ *
 * Galeria ("A vida no Palas")
 * O cliente pediu imagem grande e pouco texto. A legenda é discreta e só
 * aparece embaixo, para a foto não competir com tipografia.
 * ------------------------------------------------------------------ */

.palas-gallery {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
}

@media (min-width: 900px) {
  /* A primeira e a quarta ocupam duas faixas: a grade ganha ritmo. */
  .palas-gallery { grid-template-columns: repeat(6, 1fr); }
  .palas-gallery__item { grid-column: span 2; }
  .palas-gallery__item:nth-child(1),
  .palas-gallery__item:nth-child(4) { grid-column: span 3; }

  /* Com quatro fotos a grade de seis faixas não fecha: 3+2 deixa uma faixa
     vazia na primeira linha e as alturas saem desiguais, porque a proporção é
     fixa e a largura não. Quatro fotos viram quatro colunas iguais. */
  .palas-gallery:has(> :nth-child(4):last-child) { grid-template-columns: repeat(4, 1fr); }
  .palas-gallery:has(> :nth-child(4):last-child) > .palas-gallery__item { grid-column: auto; }
  .palas-gallery:has(> :nth-child(4):last-child) > .palas-gallery__item img { aspect-ratio: 3 / 4; }
}

.palas-gallery__item { margin: 0; }

.palas-gallery__item img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 4px;
  display: block;
}

.palas-gallery__item:nth-child(1) img,
.palas-gallery__item:nth-child(4) img { aspect-ratio: 16 / 10; }

.palas-gallery__item figcaption { margin-top: 0.9rem; }

.palas-gallery__item figcaption strong {
  display: block;
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--title-sm);
  font-weight: 700;
  letter-spacing: -0.018em;
}

.palas-gallery__item figcaption span {
  display: block;
  margin-top: 0.3rem;
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.5;
  color: var(--wp--preset--color--ink-soft);
  max-width: 38ch;
}

/* ------------------------------------------------------------------ *
 * Faixa de parceiros e reconhecimento
 * Preparada para receber mais logos: a lista é uma grade que se ajusta.
 * ------------------------------------------------------------------ */

.palas-partners {
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
  align-items: flex-start;
}

@media (min-width: 780px) {
  .palas-partners { flex-direction: row; align-items: center; gap: 3rem; }
}

.palas-partners__label {
  margin: 0;
  flex: none;
  font-size: var(--wp--preset--font-size--micro);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wp--preset--color--ink-soft);
  max-width: 9rem;
}

.palas-partners__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 1.5rem 2.5rem;
}

.palas-partners__list img { height: 2.4rem; width: auto; display: block; }

.palas-partners__word {
  display: flex;
  flex-direction: column;
  line-height: 1.2;
}

.palas-partners__word strong {
  font-family: var(--wp--preset--font-family--display);
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--wp--preset--color--navy);
}

.palas-partners__word span {
  margin-top: 0.15rem;
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--ink-soft);
}

/* Linha do tempo --------------------------------------------------------- */

.palas-timeline { border-top: 1px solid var(--palas-rule); }

.palas-timeline__item {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.5rem;
  padding-block: 1.6rem;
  border-bottom: 1px solid var(--palas-rule);
}

@media (min-width: 720px) {
  .palas-timeline__item { grid-template-columns: 7rem minmax(0, 52ch); gap: 0 2.5rem; }
}

.palas-timeline__year {
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--title-sm);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--palas-accent-ink);
  font-variant-numeric: tabular-nums;
}

.palas-timeline__item p { margin: 0; color: var(--wp--preset--color--ink-soft); }

/* Rodapé: páginas fora do menu principal --------------------------------- */

.palas-footer__extras {
  margin-top: var(--wp--preset--spacing--base);
  padding-top: 1.5rem;
  border-top: 1px solid rgb(255 255 255 / 0.16);
}

.palas-footer__extras h3 {
  font-family: var(--wp--preset--font-family--body);
  font-size: 0.7rem;
  font-weight: 700; text-transform: uppercase; letter-spacing: 0.13em;
  color: rgb(255 255 255 / 0.5);
  margin: 0 0 0.85rem;
}

.palas-footer__extras ul {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: 0.25rem 2rem;
}

.palas-footer__extras a {
  display: block;
  padding-block: 0.35rem;
  font-size: var(--wp--preset--font-size--small);
}

/* Bloco de admissão ------------------------------------------------------ */

/* Admissão -------------------------------------------------------------
 *
 * É o momento de conversão da home, e estava sendo a seção mais fraca dela.
 * Três coisas somadas:
 *
 * 1. O CTA era ciano com texto branco, 2,6:1 — reprova em contraste. Era
 *    herança do sistema de acento antigo; quando o botão do tema virou
 *    amarelo com navy, este componente ficou para trás. Também era o único
 *    bloco ciano da página, e por isso destoava de tudo.
 * 2. A composição era 58% de texto e 42% de coluna com um botão só, centrado
 *    na vertical. Como o texto é mais alto que o botão, ele boiava a 270px do
 *    fim do parágrafo, sem nada em volta.
 * 3. Fundo branco entre uma seção paper e uma soft: um buraco no ritmo.
 *
 * Agora é coluna única, no mesmo alinhamento de todas as outras seções, com
 * o CTA e o telefone lado a lado.
 *
 * O CTA é navy, não amarelo. Amarelo é o par do navy e brilha sobre ele — no
 * hero dá 6,9:1. Sobre superfície clara ele cai para 1,35:1 contra o fundo e
 * o botão deixa de ter forma. Aqui quem destaca é o tamanho e o respiro em
 * volta, não a cor: o botão é maior que os demais do site.
 */
.palas-admission-block { max-width: 44rem; }
.palas-admission-block > * + * { margin-top: 1.25rem; }

.palas-admission {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1.5rem;
  margin-top: 2rem;
}

.palas-admission__cta {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 54px;
  padding: 1.05rem 2.1rem;
  border-radius: 6px;
  background: var(--wp--preset--color--navy);
  color: #fff;
  font-family: var(--wp--preset--font-family--body);
  font-size: var(--wp--preset--font-size--medium);
  font-weight: 600;
  text-decoration: none;
  transition: background-color 0.18s ease;
}

.palas-admission__cta:hover {
  background: var(--wp--preset--color--navy-dark);
  color: #fff;
}

.palas-admission__alt {
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--ink-soft);
  text-decoration: none;
  padding-block: 0.3rem;
}

.palas-admission__alt:hover { color: var(--palas-accent-ink); text-decoration: underline; }

/* Faixa de fechamento ---------------------------------------------------
 *
 * Era um H2, uma linha de apoio e um botão, centrados numa coluna estreita
 * dentro de 666px de navy — 171px de respiro em cima e embaixo para três
 * elementos. Lia como uma laje esperando conteúdo.
 *
 * Agora tem o vocabulário que a faixa de prova já usa: régua dourada, copy à
 * esquerda, e uma segunda coluna com o que fazer a seguir. As duas colunas têm
 * conteúdo — foi o mesmo erro do bloco de admissão, e não se repete.
 */
.palas-closing__grid { display: grid; gap: var(--wp--preset--spacing--wide); }

@media (min-width: 900px) {
  .palas-closing__grid {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
    column-gap: var(--wp--preset--spacing--section);
    align-items: center;
  }
}

.palas-closing__copy { max-width: 30rem; }

.palas-closing__copy::before {
  content: '';
  display: block;
  width: 2.5rem;
  height: 3px;
  background: var(--wp--preset--color--sun);
  margin-bottom: 1.75rem;
}

.palas-closing__copy h2 { font-size: var(--wp--preset--font-size--title-lg); }
.palas-closing__copy .is-style-lede { margin-top: 1.25rem; }

.palas-closing__actions {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1rem;
}

/* Aqui o amarelo é o certo: sobre navy dá 6,9:1, e o texto navy dentro dele
   dá 8,5:1. Numa seção clara ele cairia para 1,35:1 e sumiria — por isso o
   CTA da home, que fica em fundo branco, é navy e este é amarelo. */
.palas-closing__cta {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 54px;
  padding: 1.05rem 2.1rem;
  border-radius: 6px;
  background: var(--wp--preset--color--sun);
  color: var(--wp--preset--color--navy-dark);
  font-family: var(--wp--preset--font-family--body);
  font-size: var(--wp--preset--font-size--medium);
  font-weight: 600;
  text-decoration: none;
  transition: background-color 0.18s ease;
}

.palas-closing__cta:hover {
  background: color-mix(in srgb, var(--wp--preset--color--sun) 88%, black);
  color: var(--wp--preset--color--navy-dark);
}

.palas-closing__alt {
  font-size: var(--wp--preset--font-size--small);
  color: rgb(255 255 255 / 0.72);
  text-decoration: none;
  padding-block: 0.3rem;
}

.palas-closing__alt:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }

.palas-closing__link {
  display: inline-flex; align-items: center; gap: 0.4rem;
  min-height: 44px;
  font-weight: 600;
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--sun);
  text-decoration: none;
}

.palas-closing__link::after { content: '\2192'; transition: transform 0.18s ease; }
.palas-closing__link:hover { text-decoration: underline; text-underline-offset: 3px; }
.palas-closing__link:hover::after { transform: translateX(3px); }

/* Fato com fonte -------------------------------------------------------
 *
 * Texto um pouco maior que o corpo, com a fonte logo abaixo em corpo miúdo.
 * A fonte não é rodapé decorativo: é ela que separa o que a escola pode
 * provar do que a escola gostaria de dizer. */
.palas-fato-verificado {
  max-width: 46ch;
  font-size: var(--wp--preset--font-size--lede);
  line-height: 1.55;
  color: var(--wp--preset--color--ink);
  margin: 0;
}

/* Título à esquerda, fato à direita — mesma lógica do cabeçalho de seção.
   Empilhado, o bloco usava metade da linha e deixava a outra metade vazia. */
@media (min-width: 900px) {
  .palas-container:has(> .palas-fato-verificado) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
    column-gap: var(--wp--preset--spacing--section);
    align-items: start;
  }

  .palas-container:has(> .palas-fato-verificado) > .palas-section__header {
    grid-column: 1;
    grid-row: 1 / -1;
    margin-bottom: 0;
  }

  .palas-container:has(> .palas-fato-verificado) > .palas-fato-verificado { grid-column: 2; grid-row: 1; margin-top: 0; }
  .palas-container:has(> .palas-fato-verificado) > .palas-fonte { grid-column: 2; grid-row: 2; }
}

.palas-fonte {
  max-width: 46ch;
  margin: 1.1rem 0 0;
  padding-top: 0.9rem;
  border-top: 1px solid var(--palas-rule);
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--ink-soft);
}

/* Citação atribuída ------------------------------------------------------
 *
 * A versão honesta do depoimento: pessoa real, com nome e função, dita em
 * veículo publicado, com a fonte impressa embaixo. O site tinha treze
 * depoimentos inventados, depois mais seis, e ficou sem voz humana nenhuma
 * quando todos saíram. Estes vieram da reportagem do Portal da Floresta.
 *
 * Sem aspas gigantes de enfeite e sem foto de banco: a aspa é tipográfica, no
 * início da fala, e quem assina aparece por extenso.
 */
.palas-fala { margin: 0; display: grid; gap: var(--wp--preset--spacing--base); }

@media (min-width: 900px) {
  .palas-fala {
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    column-gap: var(--wp--preset--spacing--section);
    align-items: start;
  }
}

.palas-fala__texto {
  margin: 0;
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--title-md);
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: -0.015em;
  color: var(--wp--preset--color--navy);
  text-indent: -0.42em;
}

.palas-section--navy .palas-fala__texto { color: #fff; }

.palas-fala__quem { margin: 0; align-self: end; }

.palas-fala__nome {
  display: block;
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--title-sm);
  font-weight: 700;
  color: var(--wp--preset--color--navy);
}

.palas-section--navy .palas-fala__nome { color: var(--wp--preset--color--sun); }

.palas-fala__papel {
  display: block;
  margin-top: 0.3rem;
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--ink-soft);
}

.palas-section--navy .palas-fala__papel { color: rgb(255 255 255 / 0.7); }

.palas-fala__fonte {
  display: block;
  margin-top: 1.1rem;
  padding-top: 0.9rem;
  border-top: 1px solid var(--palas-rule);
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--ink-soft);
}

.palas-section--navy .palas-fala__fonte {
  border-color: rgb(255 255 255 / 0.2);
  color: rgb(255 255 255 / 0.6);
}

/* Agendamento -----------------------------------------------------------
 *
 * O bloco que faltava. Nas quatro referências do cliente o site É a máquina de
 * agendar visita — o Red House tem cinco formulários e cinquenta e um campos.
 * Aqui eram três CTAs e nenhum campo: todo caminho saía para o WhatsApp, e
 * quem não quisesse abrir o WhatsApp naquele momento ia embora.
 *
 * Copy à esquerda com os três passos, formulário à direita em card branco. O
 * card é justificado aqui: ele delimita a área onde se digita, que é
 * exatamente o caso em que caixa é função e não enfeite.
 */
.palas-agendar { display: grid; gap: var(--wp--preset--spacing--wide); }

@media (min-width: 900px) {
  .palas-agendar {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: var(--wp--preset--spacing--section);
    align-items: start;
  }
}

.palas-agendar__copy h2 { margin: 0.35rem 0 0; }
.palas-agendar__copy .is-style-lede { margin-top: 1.1rem; }

.palas-agendar__passos {
  list-style: none;
  margin: 2rem 0 0;
  padding: 0;
  display: grid;
  gap: 0.9rem;
}

.palas-agendar__passos li {
  display: flex;
  align-items: baseline;
  gap: 0.85rem;
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--ink-soft);
}

.palas-agendar__passos span {
  flex: 0 0 auto;
  width: 1.6rem; height: 1.6rem;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px;
  background: var(--wp--preset--color--navy);
  color: #fff;
  font-size: 0.75rem; font-weight: 700;
  transform: translateY(0.15rem);
}

.palas-agendar__fone { margin-top: 1.75rem; font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--ink-soft); }
.palas-agendar__fone a { color: var(--palas-accent-ink); font-weight: 600; }

.palas-agendar__form {
  background: #fff;
  border: 1px solid var(--palas-rule-soft);
  border-radius: 8px;
  padding: 1.75rem;
  box-shadow: var(--wp--preset--shadow--card);
}

@media (min-width: 600px) { .palas-agendar__form { padding: 2.25rem; } }

.palas-form__campo { margin: 0 0 1.1rem; display: grid; gap: 0.4rem; }

.palas-form__campo label {
  font-size: var(--wp--preset--font-size--small);
  font-weight: 600;
  color: var(--wp--preset--color--ink);
}

.palas-form__campo label span[aria-hidden] { color: var(--wp--preset--color--cyan-ink); }
.palas-form__opcional { font-weight: 400; color: var(--wp--preset--color--ink-soft); }

.palas-form__campo input,
.palas-form__campo select,
.palas-form__campo textarea {
  width: 100%;
  min-height: 48px;
  padding: 0.7rem 0.85rem;
  border: 1.5px solid color-mix(in srgb, var(--wp--preset--color--navy) 20%, transparent);
  border-radius: 6px;
  background: #fff;
  font: inherit;
  font-size: var(--wp--preset--font-size--medium);
  color: var(--wp--preset--color--ink);
}

.palas-form__campo textarea { min-height: 5.5rem; resize: vertical; }

.palas-form__campo input:focus-visible,
.palas-form__campo select:focus-visible,
.palas-form__campo textarea:focus-visible {
  outline: 3px solid var(--wp--preset--color--navy);
  outline-offset: 1px;
  border-color: var(--wp--preset--color--navy);
}

/* A armadilha some da tela sem sair da árvore: display:none faz robô ignorar. */
.palas-form__armadilha {
  position: absolute !important;
  width: 1px; height: 1px;
  overflow: hidden; clip-path: inset(50%);
  white-space: nowrap;
}

.palas-form__enviar {
  width: 100%;
  min-height: 54px;
  margin-top: 0.5rem;
  padding: 1rem 1.5rem;
  border: 0; border-radius: 6px;
  background: var(--wp--preset--color--navy);
  color: #fff;
  font: inherit;
  font-size: var(--wp--preset--font-size--medium);
  font-weight: 600;
  cursor: pointer;
  transition: background-color 0.18s ease;
}

.palas-form__enviar:hover { background: var(--wp--preset--color--navy-dark); }

.palas-form__aviso {
  margin: 0.9rem 0 0;
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--ink-soft);
  text-align: center;
}

.palas-agendar__ok {
  border-left: 3px solid var(--wp--preset--color--sun);
  padding-left: 1.25rem;
}

.palas-agendar__ok-titulo {
  margin: 0 0 0.5rem;
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--title-sm);
  font-weight: 700;
  color: var(--wp--preset--color--navy);
}

.palas-agendar__erro {
  margin: 0 0 1.25rem;
  padding: 0.85rem 1rem;
  border-radius: 6px;
  background: color-mix(in srgb, var(--wp--preset--color--sun) 22%, #fff);
  border: 1px solid color-mix(in srgb, var(--wp--preset--color--sun) 60%, transparent);
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--ink);
}

/* CTA do cabeçalho ------------------------------------------------------
   As quatro referências têm ação de matrícula ou visita fixa no topo. */
.palas-header__cta {
  display: inline-flex; align-items: center; justify-content: center;
  /* Sem border-box o `min-height` somava com o padding e o botão saía com
     63px de altura num cabeçalho cujos itens têm 44px — era daí que vinha
     boa parte do "distoando do menu". O texto sozinho mede 124px, então a
     largura tem piso; a altura não tinha. Só desktop: some abaixo de 900px,
     então 42px não conflita com alvo de toque. */
  box-sizing: border-box;
  min-height: 42px;
  padding: 0.4rem 0.8rem;
  border-radius: 6px;
  background: var(--wp--preset--color--navy);
  color: #fff;
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.18s ease;
}

.palas-header__cta:hover { background: var(--wp--preset--color--navy-dark); color: #fff; }

@media (max-width: 900px) { .palas-header__cta { display: none; } }

/* Cinco segmentos: sem Integral eram quatro e a grade fechava sozinha.
   Com cinco, o auto-fit deixava um card órfão na segunda fileira. */
@media (min-width: 1100px) {
  .palas-navcards--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

/* ------------------------------------------------------------------ *
 * 21. Composição fotográfica da home
 *
 * O diagnóstico que gerou esta seção veio de medir a home contra a
 * referência que o cliente indicou (maplebear.com.br), com o mesmo script
 * nas duas páginas:
 *
 *                        Maple Bear      Palas
 *   palavras                    640        808
 *   superfície de foto     17,2 Mpx²   0,9 Mpx²
 *   fotos >= 300x200             19          1
 *   maior imagem da página  1790x1092   523x418
 *   fotos em largura total       11          0
 *
 * O problema nunca foi "poucas imagens" — tínhamos catorze. É que nenhuma
 * era grande: dez rodavam entre 211px e 266px. Usávamos fotografia como
 * ilustração ao lado do texto; a referência usa como superfície. É isso, e
 * não a tipografia (que medida lado a lado está equivalente), que produzia
 * a sensação de "só sequência de texto com espaço em branco".
 *
 * Ironia registrada: `.palas-band` já resolvia isso e já rendia 1790x560
 * nas páginas interiores desde o ritmo.php. A home nunca chamou.
 * ------------------------------------------------------------------ */

/* HTML cru dentro de `wp:html` NÃO recebe o `box-sizing: border-box` que o
 * CSS do core do WordPress aplica aos blocos — o core mira `.wp-block-*`, e
 * uma `<section>` escrita à mão não é nenhuma delas. O tema também não
 * declara box-sizing global: `.palas-container` só funciona porque é um
 * `wp-block-group` e herda do core.
 *
 * Sem esta regra, qualquer `width:100%` ou `min-height` somado a padding
 * estoura a caixa em silêncio. Custou duas vezes na mesma sessão: 438px de
 * conteúdo num viewport de 390 (o texto era cortado à direita sem barra de
 * rolagem, porque a seção tem `overflow:hidden`), e um botão de 86px onde o
 * `min-height` pedia 54.
 *
 * Como praticamente toda a página é HTML cru dentro de `wp:html`, a regra
 * cobre os componentes por prefixo em vez de esperar o próximo esquecimento.
 */
.palas-declaracao, .palas-declaracao *,
.palas-escada, .palas-escada *,
.palas-integral, .palas-integral *,
.palas-pilares, .palas-pilares *,
.palas-fechar, .palas-fechar *,
.palas-credenciais, .palas-credenciais *,
.palas-hero, .palas-hero * { box-sizing: border-box; }

/* --- 21.1 Declaração: uma frase sobre foto sangrada -----------------
 * O manifesto eram três parágrafos de prosa abstrata (105 palavras) que o
 * leitor de celular atravessava em duas telas sem ver nada. Vira uma frase
 * só, do tamanho da tela. Mesmo argumento, um quinto das palavras.
 *
 * Contraste: o degradê segura 0,86 de navy até 46% da largura. No pior caso
 * possível (foto branca por baixo) o texto branco ainda dá 8,1:1. A copy é
 * limitada a 22ch justamente para nunca alcançar a ponta clara do degradê,
 * onde a conta cairia para 2,1:1.
 * ------------------------------------------------------------------ */
.palas-declaracao {
  position: relative;
  margin: 0;
  display: grid;
  align-items: center;
  min-height: min(78vh, 34rem);
  overflow: hidden;
}
.palas-declaracao > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.palas-declaracao::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgb(2 15 71 / 0.72) 0%,
    rgb(2 15 71 / 0.90) 100%
  );
}
.palas-declaracao__corpo {
  position: relative;
  z-index: 1;
  box-sizing: border-box;   /* o tema declara por componente, não global */
  width: 100%;
  max-width: 76rem;
  margin-inline: auto;
  padding: var(--wp--preset--spacing--wide) 1.5rem;
}
.palas-declaracao__frase {
  margin: 0;
  max-width: 22ch;
  color: #fff;
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--title-lg);
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: -0.018em;
  text-wrap: balance;
}
.palas-declaracao__apoio {
  margin: 1.15rem 0 0;
  max-width: 40ch;
  color: rgb(255 255 255 / 0.86);
  font-size: var(--wp--preset--font-size--lede);
  line-height: 1.5;
}
.palas-declaracao .palas-arrow { margin-top: 1.75rem; }
/* A seta é `content: '→'`. Pintar `background` aqui desenhava um retângulo
   dourado atrás do caractere; o que se queria era a cor da letra. */
.palas-declaracao .palas-arrow { color: var(--wp--preset--color--sun); }

@media (min-width: 900px) {
  .palas-declaracao { min-height: min(70vh, 36rem); }
  /* No desktop a copy ocupa só a faixa esquerda, então o degradê pode ser
     horizontal e deixar a fotografia respirar do meio para a direita. */
  .palas-declaracao::after {
    background: linear-gradient(
      96deg,
      rgb(2 15 71 / 0.93) 0%,
      rgb(2 15 71 / 0.86) 46%,
      rgb(2 15 71 / 0.40) 92%
    );
  }
  .palas-declaracao__corpo { padding-block: var(--wp--preset--spacing--section); }
  .palas-declaracao__frase { font-size: var(--wp--preset--font-size--title-xl); }
}

/* --- 21.2 Escada de segmentos ---------------------------------------
 * A grade antiga era uma fileira reta de cinco cards iguais: legível e
 * completamente parada. Aqui os quatro segmentos de série descem em degrau,
 * costurados por um fio que atravessa a seção.
 *
 * O degrau não é enfeite: Infantil -> Fundamental I -> II -> Médio É uma
 * progressão, e a diagonal diz isso sem precisar de uma palavra. Integral
 * fica fora da escada porque não é etapa, é modalidade — misturar os dois
 * eixos no mesmo gesto seria mentir sobre a estrutura da escola.
 *
 * No celular a escada é desligada: degrau em coluna única só empurra o
 * quarto card para fora da tela sem devolver nada.
 * ------------------------------------------------------------------ */
.palas-escada {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--wp--preset--spacing--base) 1rem;
  margin-top: var(--wp--preset--spacing--wide);
}
.palas-escada__item {
  position: relative;
  z-index: 1;
  display: block;
  text-decoration: none;
  color: inherit;
}
.palas-escada__fase {
  margin: 0;
  font-size: var(--wp--preset--font-size--micro);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wp--preset--color--cyan-ink);
}
.palas-escada__nome {
  margin: 0.2rem 0 0.7rem;
  font-size: var(--wp--preset--font-size--title-sm);
  font-weight: 600;
  line-height: 1.12;
  color: var(--wp--preset--color--navy);
}
.palas-escada__foto { position: relative; margin: 0; }
.palas-escada__foto img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: 10px;
  transition: transform 220ms ease;
}
.palas-escada__mais {
  position: absolute;
  top: -0.85rem;
  right: -0.55rem;
  width: 2.4rem;
  height: 2.4rem;
  border-radius: 50%;
  background: var(--wp--preset--color--navy);
  color: #fff;
  display: grid;
  place-items: center;
  font-size: 1.35rem;
  line-height: 1;
  box-shadow: 0 2px 10px rgb(2 15 71 / 0.28);
  transition: background 180ms ease, transform 180ms ease;
}
.palas-escada__dica {
  margin: 0.8rem 0 0;
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.45;
  color: var(--wp--preset--color--ink-soft);
}
.palas-escada__item:hover .palas-escada__foto img,
.palas-escada__item:focus-visible .palas-escada__foto img { transform: translateY(-4px); }
.palas-escada__item:hover .palas-escada__mais,
.palas-escada__item:focus-visible .palas-escada__mais {
  background: var(--wp--preset--color--cyan-ink);
  transform: scale(1.08);
}
.palas-escada__item:focus-visible {
  outline: 3px solid var(--wp--preset--color--navy);
  outline-offset: 6px;
  border-radius: 12px;
}

/* O fio que costura a escada. `vector-effect` mantém a espessura constante
   mesmo com o SVG esticado sem proporção — sem isso o traço vira cabelo na
   vertical e barra na horizontal. */
.palas-escada__fio { display: none; }

@media (min-width: 900px) {
  .palas-escada {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    column-gap: 1.6rem;
    align-items: start;
  }
  /* nth-of-type, não nth-child: o fio é um <svg> e é o primeiro filho do
     grid, então nth-child(2..4) pegava Infantil/Fundamental I/II e deixava
     o Ensino Médio sem degrau — o último card subia para o topo e a escada
     virava um V. Contando por tipo, o svg sai da conta. */
  .palas-escada__item:nth-of-type(2) { margin-top: 2.6rem; }
  .palas-escada__item:nth-of-type(3) { margin-top: 5.2rem; }
  .palas-escada__item:nth-of-type(4) { margin-top: 7.8rem; }

  .palas-escada__fio {
    display: block;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    pointer-events: none;
    overflow: visible;
  }
}

/* --- 21.3 Integral: modalidade, não etapa ---------------------------
 * Fica fora da escada porque não é etapa. A primeira versão era um cartão
 * largo com uma linha de texto e uma foto de 491px — pouco texto num campo
 * de 1136px, e o hover só trocava a cor da borda.
 *
 * Agora carrega o que a página já dizia e ninguém via na home: o que o
 * Integral estende (estudo dirigido, projetos, atividades), e a frase que é
 * a melhor da página — o tempo extra vira aprendizado, não estacionamento.
 * ------------------------------------------------------------------ */
.palas-integral {
  display: grid;
  gap: 1.5rem;
  margin-top: var(--wp--preset--spacing--wide);
  padding: 1.25rem;
  border: 1px solid var(--palas-rule-soft);
  border-radius: 14px;
  background: #fff;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
}
.palas-integral__foto { margin: 0; }
.palas-integral__foto img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 9px;
}
.palas-integral__fase {
  margin: 0;
  font-size: var(--wp--preset--font-size--micro);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wp--preset--color--cyan-ink);
}
.palas-integral__nome {
  margin: 0.2rem 0 0.6rem;
  font-size: var(--wp--preset--font-size--title-md);
  font-weight: 600;
  line-height: 1.1;
  color: var(--wp--preset--color--navy);
}
.palas-integral__dica {
  margin: 0;
  font-size: var(--wp--preset--font-size--medium);
  line-height: 1.55;
  color: var(--wp--preset--color--ink-soft);
  max-width: 54ch;
}
.palas-integral__itens {
  list-style: none;
  margin: 1.1rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
}
.palas-integral__itens li {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  font-size: var(--wp--preset--font-size--small);
  font-weight: 600;
  color: var(--wp--preset--color--navy);
}
.palas-integral__itens li::before {
  content: '';
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 50%;
  background: var(--wp--preset--color--sun);
}
.palas-integral__frase {
  margin: 1.35rem 0 0;
  padding-top: 1.1rem;
  border-top: 1px solid var(--palas-rule-soft);
  font-size: var(--wp--preset--font-size--medium);
  font-weight: 600;
  line-height: 1.4;
  color: var(--wp--preset--color--navy-dark);
  max-width: 42ch;
}
.palas-integral .palas-arrow { margin-top: 1.1rem; }

/* O hover trocava só a cor da borda num cartão de 1136px de largura: nada
   acontecia visivelmente. Levanta, ganha sombra e a seta anda. */
.palas-integral:hover,
.palas-integral:focus-visible {
  transform: translateY(-3px);
  border-color: color-mix(in srgb, var(--wp--preset--color--navy) 26%, transparent);
  box-shadow: 0 14px 34px rgb(2 15 71 / 0.13);
}
.palas-integral:hover .palas-arrow::after { transform: translateX(4px); }
.palas-integral:hover .palas-integral__foto img { filter: saturate(1.06); }
.palas-integral:focus-visible { outline: 3px solid var(--wp--preset--color--navy); outline-offset: 3px; }

@media (min-width: 820px) {
  .palas-integral {
    grid-template-columns: minmax(0, 0.72fr) minmax(0, 1fr);
    column-gap: var(--wp--preset--spacing--wide);
    align-items: center;
    padding: 1.5rem;
  }
}

/* --- 21.4 Pilares: foto grande alternando de lado -------------------
 * Substitui a lista editorial que tinha zero imagem — justamente na seção
 * mais persuasiva da página. Cada pilar agora entra com fotografia de
 * ~860px, alternando o lado para o olho não pegar o padrão e desligar.
 * ------------------------------------------------------------------ */
.palas-pilares {
  display: grid;
  gap: var(--wp--preset--spacing--section);
  margin-top: var(--wp--preset--spacing--wide);
}
.palas-pilar { display: grid; gap: 1.5rem; }
.palas-pilar__foto { margin: 0; }
.palas-pilar__foto img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 12px;
}
.palas-pilar__nome {
  margin: 0 0 0.85rem;
  font-size: var(--wp--preset--font-size--title-md);
  line-height: 1.1;
  color: var(--wp--preset--color--navy);
}
.palas-pilar__texto {
  margin: 0;
  font-size: var(--wp--preset--font-size--medium);
  line-height: 1.6;
  color: var(--wp--preset--color--ink-soft);
}
.palas-pilar .palas-arrow { margin-top: 1.35rem; }

@media (min-width: 900px) {
  .palas-pilar {
    grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr);
    column-gap: var(--wp--preset--spacing--section);
    align-items: center;
  }
  /* Ao alternar o lado, a foto caía na coluna estreita e as três linhas
     saíam com larguras 570 / 486 / 570. Inverter as colunas junto com a
     ordem mantém a foto sempre na faixa larga. */
  .palas-pilar:nth-child(even) {
    grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  }
  .palas-pilar:nth-child(even) .palas-pilar__foto { order: 2; }
  .palas-pilar__foto img { aspect-ratio: 4 / 3; }
}

/* --- 21.5 Fechamento: fotografia, os três passos e um botão ---------
 * O formulário saiu da home a pedido — a conversão passa a ser o botão
 * flutuante. O que fica não pode ser "botão sobre cor", que é a definição
 * do CTA cru que já reprovou aqui uma vez.
 *
 * Fica: foto sangrada, e os três passos do que acontece depois do clique.
 * Quem nunca visitou uma escola não hesita por falta de botão, hesita por
 * não saber no que está se metendo. Os passos custam doze palavras e
 * respondem isso.
 * ------------------------------------------------------------------ */
.palas-fechar {
  position: relative;
  overflow: hidden;
  padding-block: var(--wp--preset--spacing--breath);
}
.palas-fechar > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.palas-fechar::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgb(2 15 71 / 0.90) 0%, rgb(2 15 71 / 0.96) 100%);
}
.palas-fechar__inner {
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  width: 100%;
  max-width: 46rem;
  margin-inline: auto;
  padding-inline: 1.5rem;
  text-align: center;
}
.palas-fechar__inner .is-style-eyebrow { color: var(--wp--preset--color--sun); }
.palas-fechar__inner h2 { margin: 0; color: #fff; }
.palas-fechar__lede {
  margin: 1.15rem auto 0;
  max-width: 44ch;
  color: rgb(255 255 255 / 0.86);
  font-size: var(--wp--preset--font-size--lede);
  line-height: 1.55;
}

.palas-fechar__passos {
  list-style: none;
  margin: 2.25rem 0 0;
  padding: 0;
  display: grid;
  gap: 0.9rem;
  text-align: left;
  max-width: 24rem;
  margin-inline: auto;
}
.palas-fechar__passos li {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  font-size: var(--wp--preset--font-size--small);
  color: rgb(255 255 255 / 0.88);
}
.palas-fechar__passos span {
  flex: 0 0 auto;
  width: 1.75rem;
  height: 1.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid rgb(255 255 255 / 0.4);
  font-size: var(--wp--preset--font-size--micro);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--wp--preset--color--sun);
}

/* Ouro sobre navy dá 6,9:1 com texto navy-dark por cima. O mesmo botão em
   fundo claro dava 1,35:1 e já reprovou aqui — a cor segue a superfície. */
.palas-fechar__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 64px;
  margin-top: 2.25rem;
  padding: 1rem 2.25rem;
  border-radius: 6px;
  background: var(--wp--preset--color--sun);
  color: var(--wp--preset--color--navy-dark);
  font-weight: 700;
  font-size: var(--wp--preset--font-size--medium);
  text-decoration: none;
  white-space: nowrap;   /* a 390px "Agendar uma visita" quebrava em duas */
  transition: transform 160ms ease, box-shadow 160ms ease;
}
.palas-fechar__cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 26px rgb(2 15 71 / 0.45);
}
.palas-fechar__cta:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 3px;
}

@media (min-width: 900px) {
  /* 46rem servia para a copy mas apertava a fileira de passos, e "Você fala
     com a gente" quebrava em duas linhas dentro do próprio item. A copy
     segue limitada pelo `max-width` em ch; só a caixa é que abre. */
  .palas-fechar__inner { max-width: 58rem; }
  .palas-fechar__passos {
    display: flex;
    justify-content: center;
    gap: 2.5rem;
    max-width: none;
  }
  .palas-fechar__passos li { flex: 0 1 auto; }
}

/* --- 21.6 Faixa de credenciais --------------------------------------
 * A arte "Ensino Forte para uma Educação Global" veio da escola em duas
 * versões, e as duas têm "Ensino" e "Global" em navy — ou seja, as duas
 * pedem fundo claro. A diferença entre elas é só a palavra "Educação":
 * ciano #00aae7 na AZUL, branco na BRANCA. Por isso a arte não foi para o
 * rodapé, que é navy: lá perderia duas das cinco palavras. No rodapé fica a
 * versão em texto, que funciona em branco sobre navy.
 *
 * A primeira montagem punha só a arte, sozinha, num vão branco de 296px —
 * e ficava com cara de arquivo esquecido, não de bloco. A faixa precisava
 * de função.
 *
 * Ganhou a que estava faltando na página: o selo da UNESCO. Ele existia
 * como uma linha de texto cinza no pé do hero, sem marca nenhuma, apertada
 * contra a foto; a imagem do selo só aparecia no rodapé. Agora as duas
 * credenciais dividem a faixa — o que a escola diz de si à esquerda, quem
 * atesta à direita — e o hero termina limpo, nos botões.
 *
 * O selo entra como veio, sem recolorir e sem opacidade reduzida. Em branco
 * não precisa da placa que o rodapé usa para isolá-lo do navy.
 * ------------------------------------------------------------------ */
.palas-credenciais {
  display: grid;
  gap: var(--wp--preset--spacing--base);
  justify-items: center;
  align-items: center;
  padding-block: var(--wp--preset--spacing--wide);
  background: #fff;
  text-align: center;
}
.palas-credenciais__marca img {
  display: block;
  width: 100%;
  max-width: 17rem;
  height: auto;
}
/* Sem isto o fio continua sendo um item de grade — vazio, mas com o `gap`
   valendo dos dois lados, o que abre um vão dobrado entre as duas marcas. */
.palas-credenciais__fio { display: none; }

.palas-credenciais__aval {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.85rem;
}
.palas-credenciais__aval img {
  height: 4rem;
  width: auto;
  display: block;
}
.palas-credenciais__aval span {
  max-width: 26ch;
  font-size: var(--wp--preset--font-size--micro);
  line-height: 1.5;
  color: var(--wp--preset--color--ink-soft);
}

@media (min-width: 820px) {
  .palas-credenciais {
    grid-template-columns: auto 1px auto;
    justify-content: center;
    column-gap: var(--wp--preset--spacing--section);
    text-align: left;
  }
  .palas-credenciais__marca img { max-width: 21rem; }
  .palas-credenciais__fio {
    display: block;
    width: 1px;
    height: 5.5rem;
    background: var(--palas-rule-soft);
  }
  .palas-credenciais__aval {
    flex-direction: row;
    align-items: center;
    gap: 1.1rem;
  }
  .palas-credenciais__aval span { text-align: left; }
}

/* Os botões do painel do chat levam `width:100%` inline e padding lateral.
 * Em content-box isso vira 100% + 51px e estoura a tela em 390px — invisível
 * enquanto o painel está fechado (`opacity:0`), visível no instante em que
 * alguém toca no botão flutuante. Que agora é o caminho de conversão. */
.palas-chat__panel .wp-block-button__link { box-sizing: border-box; }

/* --- 21.7 Hero de página interna com fotografia ---------------------
 * A abertura das páginas interiores era só texto sobre papel, com o título
 * e a lede ocupando a metade esquerda e a direita vazia — cerca de 350px de
 * nada no ponto mais valioso da página.
 *
 * Gatilho: imagem destacada. Sem ela, nada muda.
 *
 * Mesma técnica medida no hero da home: degradê direcional, não véu chapado.
 * Véu uniforme sobre foto clara apaga a fotografia e ainda deixa a copy
 * sobre ruído; o degradê escurece só o lado do texto. A copy fica presa em
 * 34rem para nunca alcançar a ponta clara.
 * ------------------------------------------------------------------ */
.palas-page-hero--foto,
.palas-page-hero--foto * { box-sizing: border-box; }

.palas-page-hero--foto {
  background: var(--wp--preset--color--navy-deep);
  border-bottom: 0;
  display: grid;
  align-items: end;
  min-height: min(62vh, 26rem);
}
.palas-page-hero--foto .palas-page-hero__foto {
  position: absolute;
  inset: 0;
  margin: 0;
}
.palas-page-hero--foto .palas-page-hero__foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 60% 50%;
  display: block;
}
.palas-page-hero--foto::before {
  content: '';
  position: absolute;
  inset: 0;
  width: auto;
  z-index: 1;
  background: linear-gradient(
    180deg,
    rgb(2 15 71 / 0.74) 0%,
    rgb(2 15 71 / 0.93) 100%
  );
}
/* Filete dourado no pé, como o hero da home. */
.palas-page-hero--foto::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 4px;
  z-index: 3;
  background: var(--wp--preset--color--sun);
}
.palas-page-hero--foto .palas-page-hero__inner {
  position: relative;
  z-index: 2;
  width: 100%;
  padding-block: var(--wp--preset--spacing--wide);
}
.palas-page-hero--foto h1 { color: #fff; max-width: 20ch; }
.palas-page-hero--foto .is-style-lede { color: rgb(255 255 255 / 0.86); max-width: 46ch; }
.palas-page-hero--foto .palas-crumbs { color: rgb(255 255 255 / 0.72); }
.palas-page-hero--foto .palas-crumbs a { color: rgb(255 255 255 / 0.82); }
.palas-page-hero--foto .palas-crumbs a:hover { color: #fff; }
/* `.palas-crumbs [aria-current]` fixa a cor ink para a página atual, feita
   para o hero claro. Sobre foto ela ficava invisível — o item "Educação
   Infantil" sumia enquanto "Início / Ensino" continuavam legíveis. */
.palas-page-hero--foto .palas-crumbs [aria-current] { color: #fff; }

@media (min-width: 1024px) {
  .palas-page-hero--foto { min-height: min(58vh, 28rem); }
  .palas-page-hero--foto::before {
    background: linear-gradient(
      96deg,
      rgb(2 15 71 / 0.93) 0%,
      rgb(2 15 71 / 0.86) 46%,
      rgb(2 15 71 / 0.36) 96%
    );
  }
  .palas-page-hero--foto .palas-page-hero__inner { max-width: 76rem; }
  .palas-page-hero--foto h1,
  .palas-page-hero--foto .is-style-lede { max-width: 34rem; }
}

/* --- 21.8 Seção de resposta com fotografia ao lado ------------------
 * As seções de "resposta" (palas-answer) vivem em `palas-container--text`,
 * 44rem, coluna de leitura à esquerda — e a metade direita da tela fica
 * vazia. Numa página onde 77% do scroll não tinha imagem nenhuma, esse é o
 * espaço óbvio para a fotografia entrar sem empurrar nada.
 * ------------------------------------------------------------------ */
.palas-secao-foto, .palas-secao-foto * { box-sizing: border-box; }

.palas-secao-foto__img { margin: 2rem 0 0; }
.palas-secao-foto__img img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 12px;
  object-fit: cover;
}

@media (min-width: 900px) {
  /* Duas colunas de verdade, porque agora o texto é UM filho.
   *
   * Antes do embrulho tentei grid com N filhos (distribuía o texto em linhas
   * do tamanho da foto e abria 156px entre título e parágrafo) e float (só
   * contorna se o texto for longo; com duas linhas a foto descia e sobrava
   * meia tela). O problema não era o layout, era a estrutura. */
  .palas-secao-foto .palas-container {
    max-width: 76rem;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 0.78fr);
    column-gap: var(--wp--preset--spacing--section);
    align-items: center;
  }
  .palas-secao-foto .palas-container > .palas-secao-foto__img { margin: 0; }

  /* Inverter só a ordem jogaria o texto na coluna estreita — mesma lição
     dos pilares da home. O template inverte junto. */
  .palas-secao-foto--esquerda .palas-container {
    grid-template-columns: minmax(0, 0.78fr) minmax(0, 1fr);
  }
  .palas-secao-foto--esquerda .palas-container > .palas-secao-foto__img { order: -1; }

  /* `.palas-section__header` carrega 64px de margem inferior, calibrados para
     separar cabeçalho de grade de cards. Aqui o parágrafo vem logo depois do
     título e 64px o desgruda. */
  .palas-secao-foto .palas-section__header { margin-bottom: 1.5rem; }

  /* E desliga a divisão em duas colunas do próprio cabeçalho.
     Dentro do grid da foto ele já está numa coluna; dividir de novo dava
     três colunas no espaço de uma, e "Onze modalidades, cada uma com
     professor formado na área" quebrava a cada duas palavras. */
  .palas-secao-foto .palas-section__header:not(.is-centered):has(.is-style-lede) {
    display: block;
    max-width: none;
  }
  .palas-secao-foto .palas-section__header .is-style-lede {
    margin-top: 1rem;
    max-width: none;
  }

  /* Retrato pede altura; paisagem pede largura. Sem isto, um 2161x3241 na
     coluna de 0.82fr viraria uma torre de 700px ao lado de um texto de 300. */
  .palas-secao-foto--retrato .palas-secao-foto__img img { aspect-ratio: 4 / 5; }
  .palas-secao-foto--paisagem .palas-secao-foto__img img { aspect-ratio: 4 / 3; }
}

/* --- 21.9 Rotina da tarde e atividades do Tempo Integral -------------
 * A escola entregou o material oficial do Tempo Integral, com a grade de
 * horários e a lista de modalidades. Nenhum componente do tema servia: a
 * rotina é hora + o que acontece na hora, e as atividades são onze nomes
 * curtos que não são links.
 * ------------------------------------------------------------------ */
.palas-rotina, .palas-rotina *,
.palas-atividades, .palas-atividades * { box-sizing: border-box; }

.palas-rotina {
  margin: var(--wp--preset--spacing--base) 0 0;
  border-top: 1px solid var(--palas-rule);
}
.palas-rotina__bloco {
  display: grid;
  gap: 0.15rem 1.5rem;
  padding-block: 1.1rem;
  border-bottom: 1px solid var(--palas-rule);
}
.palas-rotina__hora {
  margin: 0;
  font-size: var(--wp--preset--font-size--small);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--wp--preset--color--navy);
  white-space: nowrap;
}
.palas-rotina__o-que {
  margin: 0;
  font-size: var(--wp--preset--font-size--medium);
  line-height: 1.5;
  color: var(--wp--preset--color--ink-soft);
}
.palas-rotina__nota {
  margin: 1rem 0 0;
  font-size: var(--wp--preset--font-size--micro);
  color: var(--wp--preset--color--ink-soft);
}

@media (min-width: 720px) {
  .palas-rotina__bloco { grid-template-columns: 9rem minmax(0, 46ch); align-items: baseline; }
  .palas-rotina { max-width: 52rem; }
}

/* Onze nomes curtos: grade de fichas, não lista com marcador. Cada uma é
   uma modalidade conduzida por professor formado na área — o material da
   escola faz questão dessa distinção, e por isso elas têm peso visual. */
.palas-atividades {
  list-style: none;
  margin: var(--wp--preset--spacing--base) 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
  gap: 0.75rem;
}
.palas-atividades li {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.85rem 1rem;
  border: 1px solid var(--palas-rule);
  border-radius: 9px;
  background: #fff;
  font-size: var(--wp--preset--font-size--small);
  font-weight: 600;
  line-height: 1.25;
  color: var(--wp--preset--color--navy);
}
.palas-atividades li::before {
  content: '';
  flex: 0 0 auto;
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: var(--wp--preset--color--sun);
}
.palas-section--soft .palas-atividades li,
.palas-section--paper .palas-atividades li { background: #fff; }
