/* BLOKUS Academy — estilo plataforma de cursos online.
   Fundo branco, azul de ação, Inter, cartões arredondados com capa, página de curso com faixa
   escura e cartão de inscrição fixo. Ícones de traço (Lucide). */

:root {
  --azul: #1d4ed8;          /* ação — 6,7:1 sobre branco */
  --azul-escuro: #1e3a8a;
  --azul-claro: #eff4ff;
  --azul-borda: #c7d7fe;
  --tinta: #1c1d1f;
  --tinta-2: #3e4143;
  --suave: #5f6368;         /* 6,1:1 sobre branco */
  --fundo: #ffffff;
  --cinza: #f7f9fa;
  --cinza-2: #eef1f4;
  --linha: #d1d7dc;
  --linha-suave: #e8ebee;
  --faixa: #16161d;         /* faixa escura da página de curso */
  --faixa-texto: #d1d7dc;
  --destaque: #ffe8a3;      /* etiqueta "Novo" / destaque */
  --destaque-texto: #5c4300;
  --sucesso: #146c43;
  --sucesso-fundo: #e6f4ea;
  --aviso: #8a5300;
  --aviso-fundo: #fff4e0;
  --erro: #b42318;
  --erro-fundo: #fdecea;
  --info: var(--azul-escuro);
  --info-fundo: var(--azul-claro);

  --sans: "Inter", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
  --mono: ui-monospace, "Cascadia Mono", Consolas, monospace;

  --raio-s: 6px;
  --raio: 8px;
  --raio-l: 12px;
  --raio-xl: 20px;
  --sombra-1: 0 1px 2px rgb(28 29 31 / 0.06);
  --sombra-2: 0 2px 4px rgb(28 29 31 / 0.06), 0 4px 16px rgb(28 29 31 / 0.08);
  --sombra-3: 0 4px 8px rgb(28 29 31 / 0.06), 0 16px 32px rgb(28 29 31 / 0.12);
  --transicao: 160ms cubic-bezier(0.2, 0.7, 0.2, 1);
  --topo-altura: 4.5rem;
  color-scheme: light;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; }
body {
  margin: 0; font-family: var(--sans); font-size: 1rem; line-height: 1.6; color: var(--tinta);
  background: var(--fundo); display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh;
  -webkit-font-smoothing: antialiased; font-feature-settings: "cv11", "ss01";
}
main { flex: 1; }
img, svg { max-width: 100%; }
a { color: var(--azul); text-underline-offset: 0.18em; }
h1, h2, h3, h4 { font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; margin: 0 0 0.5em; color: var(--tinta); overflow-wrap: anywhere; hyphens: manual; }
h1 { font-size: clamp(1.9rem, 3.6vw, 2.75rem); letter-spacing: -0.025em; }
h2 { font-size: clamp(1.4rem, 2.4vw, 1.85rem); }
h3 { font-size: 1.1rem; }
p { margin: 0 0 1rem; }
code { font-family: var(--mono); font-size: 0.88em; background: var(--cinza-2); padding: 0.12em 0.4em; border-radius: 4px; overflow-wrap: anywhere; }
:focus-visible { outline: 2px solid var(--azul); outline-offset: 2px; border-radius: 2px; }
.icone { width: 1.15em; height: 1.15em; flex-shrink: 0; vertical-align: -0.2em; }
.saltar { position: absolute; left: -999px; top: 0; background: var(--tinta); color: #fff; padding: 0.6rem 1rem; z-index: 100; }
.saltar:focus { left: 0; }
.visualmente-oculto { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.num { font-variant-numeric: tabular-nums; }

/* ---------- Layout ---------- */
.contentor { width: min(80rem, 100% - 2 * max(1.5rem, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px))); margin-inline: auto; }
.contentor--estreito { width: min(30rem, 100% - 2 * max(1.25rem, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px))); margin-inline: auto; }
.contentor--texto { width: min(46rem, 100% - 2 * max(1.25rem, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px))); margin-inline: auto; }
.seccao { padding-block: clamp(2.5rem, 5vw, 4rem); }
.seccao--alt { background: var(--cinza); }
.seccao--colada { padding-bottom: 0; }
.seccao--escura { background: var(--faixa); color: var(--faixa-texto); }
.seccao--escura h2, .seccao--escura h3 { color: #fff; }
.seccao__topo { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 0.75rem 2rem; margin-bottom: 1.5rem; }
.seccao__topo h1, .seccao__topo h2 { margin: 0; }
.seccao__topo p { margin: 0.4rem 0 0; color: var(--suave); max-width: 44rem; }
.seccao__topo .sobretitulo { color: var(--azul); margin: 0 0 0.5rem; }
.seccao__topo--centro { justify-content: center; text-align: center; }
.seccao__topo--centro p { margin-inline: auto; }
.sobretitulo { font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--azul); margin: 0 0 0.5rem; }
.sobretitulo a { color: inherit; text-decoration: none; }
.sobretitulo--claro { color: #a5b8fc; }
.nota { font-size: 0.9rem; color: var(--suave); }
.vazio { padding: 2rem; border: 1px dashed var(--linha); border-radius: var(--raio-l); color: var(--suave); background: var(--fundo); text-align: center; }
.destaque { font-size: 1.1rem; color: var(--tinta-2); }
.ligacao-seta { display: inline-flex; align-items: center; gap: 0.35rem; font-weight: 600; text-decoration: none; color: var(--azul); }
.ligacao-seta .icone { transition: transform var(--transicao); }
.duas-colunas { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.duas-colunas--centro { align-items: center; }
@media (max-width: 56rem) { .duas-colunas { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Faixa superior e cabeçalho ---------- */
.pre-topo { background: var(--tinta); font-size: 0.85rem; }
.pre-topo ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 0.25rem; overflow-x: auto; scrollbar-width: none; }
.pre-topo a { display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0 0.75rem; color: #e5e7eb; text-decoration: none; white-space: nowrap; border-bottom: 2px solid transparent; }
.pre-topo a[aria-current="page"] { color: #fff; font-weight: 600; border-bottom-color: #fff; }
.topo { background: #fff; border-bottom: 1px solid var(--linha-suave); position: sticky; top: 0; z-index: 50; padding-top: env(safe-area-inset-top, 0px); box-shadow: 0 2px 4px rgb(28 29 31 / 0.04); }
.topo__barra { display: flex; align-items: center; gap: 1.25rem; min-height: var(--topo-altura); }
.marca { display: inline-flex; align-items: center; gap: 0.6rem; text-decoration: none; color: var(--tinta); flex-shrink: 0; }
.marca__simbolo { display: grid; grid-template-columns: repeat(2, 0.62rem); gap: 2px; }
.marca__simbolo i { display: block; width: 0.62rem; height: 0.62rem; border-radius: 2px; background: var(--azul); }
.marca__simbolo i:nth-child(2) { background: #60a5fa; }
.marca__simbolo i:nth-child(3) { background: #93c5fd; }
.marca__simbolo i:nth-child(4) { background: var(--azul-escuro); }
.marca__nome { font-weight: 800; font-size: 1.2rem; letter-spacing: -0.02em; line-height: 1; }
.marca__nome span { font-weight: 500; color: var(--suave); }
.topo__explorar { display: inline-flex; align-items: center; gap: 0.3rem; min-height: 2.75rem; padding: 0 0.6rem; color: var(--tinta-2); font-weight: 500; font-size: 0.95rem; text-decoration: none; border-radius: var(--raio-s); flex-shrink: 0; }
.pesquisa { flex: 1; max-width: 38rem; position: relative; margin: 0; }
.pesquisa input {
  width: 100%; min-height: 2.9rem; padding: 0 3.4rem 0 1.25rem; border: 1px solid var(--linha); border-radius: 999px;
  background: var(--cinza); font: inherit; font-size: 1rem; color: var(--tinta);
}
.pesquisa input:focus { background: #fff; border-color: var(--azul); outline: none; box-shadow: 0 0 0 3px rgb(29 78 216 / 0.15); }
.pesquisa button { position: absolute; right: 0.3rem; top: 50%; transform: translateY(-50%); display: grid; place-items: center; width: 2.35rem; height: 2.35rem; border: 0; border-radius: 50%; background: var(--azul); color: #fff; cursor: pointer; }
.pesquisa button .icone { width: 1.1rem; height: 1.1rem; }
.nav { display: flex; align-items: center; gap: 0.25rem; margin-left: auto; }
.nav ul { list-style: none; display: flex; align-items: center; gap: 0.25rem; margin: 0; padding: 0; }
.nav a:not(.botao), .ligacao {
  display: inline-flex; align-items: center; gap: 0.35rem; min-height: 2.75rem; padding: 0 0.75rem; border-radius: var(--raio-s);
  color: var(--tinta-2); text-decoration: none; font-weight: 500; font-size: 0.95rem; white-space: nowrap;
}
.ligacao { background: none; border: 0; cursor: pointer; font-family: inherit; }
.nav form { margin: 0; }
.topo__menu-btn { display: none; align-items: center; gap: 0.4rem; min-height: 2.75rem; padding: 0 0.9rem; background: #fff; border: 1px solid var(--linha); border-radius: var(--raio); font: inherit; font-weight: 600; color: var(--tinta); cursor: pointer; margin-left: auto; }
@media (max-width: 64rem) { .topo__explorar { display: none; } }
@media (max-width: 52rem) {
  .topo__barra { flex-wrap: wrap; gap: 0.75rem; padding-block: 0.6rem; }
  .topo__menu-btn { display: inline-flex; }
  .pesquisa { order: 3; flex-basis: 100%; max-width: none; }
  .nav { display: none; order: 4; flex-basis: 100%; flex-direction: column; align-items: stretch; padding-bottom: 0.75rem; }
  .nav.aberto { display: flex; }
  .nav ul { flex-direction: column; align-items: stretch; }
  .nav .botao { width: 100%; }
  /* Texto grande (zoom): o logótipo encolhe e quebra antes de empurrar o botão Menu para fora. */
  .marca { flex-shrink: 1; min-width: 0; }
  .marca__nome { overflow-wrap: anywhere; line-height: 1.15; }
  .topo__menu-btn { flex-shrink: 0; }
}
@media (max-width: 24rem) { .pre-topo a { padding: 0 0.5rem; font-size: 0.8rem; } }

/* ---------- Botões ---------- */
.botao {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; min-height: 2.9rem; padding: 0 1.25rem;
  border-radius: var(--raio); background: var(--azul); color: #fff; border: 1px solid var(--azul);
  font: inherit; font-weight: 700; font-size: 0.95rem; text-decoration: none; cursor: pointer; white-space: nowrap;
  touch-action: manipulation; transition: background var(--transicao), border-color var(--transicao), color var(--transicao), transform 100ms;
}
.botao:active { transform: scale(0.97); }
.botao--escuro { background: var(--tinta); border-color: var(--tinta); }
.botao--contorno { background: #fff; color: var(--azul); border-color: var(--azul); }
.botao--claro { background: transparent; color: #fff; border-color: rgb(255 255 255 / 0.55); }
.botao--branco { background: #fff; color: var(--tinta); border-color: #fff; }
.botao--pequeno { min-height: 2.5rem; padding: 0 0.95rem; font-size: 0.88rem; }
.botao--largo { width: 100%; }
.botao--grande { min-height: 3.25rem; font-size: 1rem; }
.botao--perigo { background: var(--erro); border-color: var(--erro); }
.botao--ouro { background: var(--azul); border-color: var(--azul); } /* compatibilidade */

/* ---------- Capa (página inicial) ---------- */
.capa { padding-top: 1.5rem; }
.capa__banner {
  position: relative; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 2rem; align-items: center;
  background: var(--faixa); color: var(--faixa-texto); border-radius: var(--raio-xl); padding: clamp(1.75rem, 4vw, 3.25rem); overflow: hidden; isolation: isolate;
}
.capa__banner::after { content: ""; position: absolute; right: -8rem; bottom: -10rem; width: 30rem; height: 30rem; border-radius: 50%; background: radial-gradient(circle, rgb(29 78 216 / 0.45), transparent 65%); z-index: -1; }
.capa__banner h1 { color: #fff; font-size: clamp(2rem, 4.2vw, 3.1rem); hyphens: manual; }
.capa__texto { font-size: 1.1rem; max-width: 34rem; color: #c9ced6; }
.capa__pesquisa { margin: 1.5rem 0 1.25rem; max-width: 34rem; }
.capa__pesquisa input { background: #fff; min-height: 3.25rem; }
.capa__pesquisa button { width: 2.65rem; height: 2.65rem; }
.capa__sugestoes { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; font-size: 0.88rem; }
.capa__sugestoes a { overflow-wrap: anywhere; color: #fff; text-decoration: none; border: 1px solid rgb(255 255 255 / 0.3); border-radius: 999px; padding: 0.35rem 0.8rem; }
.capa__dados { display: flex; flex-wrap: wrap; gap: 0.5rem 2rem; margin: 1.75rem 0 0; }
.capa__dados div { display: flex; align-items: baseline; gap: 0.4rem; }
.capa__dados dt { order: 2; font-size: 0.88rem; color: #aab1bc; }
.capa__dados dd { margin: 0; font-size: 1.35rem; font-weight: 800; color: #fff; font-variant-numeric: tabular-nums; }
@media (max-width: 56rem) { .capa__banner { grid-template-columns: minmax(0, 1fr); } }

/* Atalhos (3 cartões) */
.atalhos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: 1rem; margin-top: 1.5rem; }
.atalho { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.4rem 1.5rem; border-radius: var(--raio-l); background: var(--azul-claro); color: var(--tinta); text-decoration: none; font-weight: 700; font-size: 1.05rem; border: 1px solid transparent; transition: border-color var(--transicao), box-shadow var(--transicao); }
.atalho .icone { width: 2rem; height: 2rem; color: var(--azul); }
.atalho small { display: block; font-weight: 400; font-size: 0.88rem; color: var(--suave); margin-top: 0.15rem; }

/* Pílulas de categorias */
.categorias { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.categoria { display: inline-flex; align-items: center; gap: 0.45rem; min-height: 2.6rem; padding: 0 1rem; border-radius: 999px; background: var(--cinza-2); color: var(--tinta); text-decoration: none; font-size: 0.93rem; font-weight: 500; border: 1px solid transparent; transition: background var(--transicao), border-color var(--transicao); }
.categoria[aria-current="true"] { background: var(--tinta); color: #fff; }
.categoria .icone { color: var(--azul); }
.categorias--filtro { margin-bottom: 2rem; }
.categoria[aria-current="true"] .icone { color: #fff; }

/* ---------- Cartão de curso ---------- */
.grelha { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17.5rem), 1fr)); gap: 1.5rem; align-items: stretch; }
.grelha--uma { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
.curso {
  position: relative; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--linha-suave); border-radius: var(--raio-l);
  overflow: hidden; color: var(--tinta); text-decoration: none; box-shadow: var(--sombra-1); transition: box-shadow var(--transicao), transform var(--transicao);
}
.curso__capa { position: relative; aspect-ratio: 16 / 9; display: flex; align-items: flex-end; padding: 1rem; overflow: hidden; color: #fff; background: var(--cor-capa, var(--azul)); isolation: isolate; }
.curso__capa::before { /* blocos — a assinatura da marca */
  content: ""; position: absolute; right: -0.5rem; top: -0.5rem; width: 55%; height: 120%; z-index: -1; opacity: 0.35;
  background:
    linear-gradient(#fff 0 0) 0 0 / 38% 30% no-repeat,
    linear-gradient(#fff 0 0) 100% 18% / 38% 46% no-repeat,
    linear-gradient(#fff 0 0) 0 70% / 38% 34% no-repeat,
    linear-gradient(#fff 0 0) 100% 100% / 38% 26% no-repeat;
  transform: rotate(8deg);
}
.curso__capa::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 30%, rgb(0 0 0 / 0.35)); }
.curso__capa-titulo { font-weight: 800; font-size: clamp(1.2rem, 2vw, 1.45rem); letter-spacing: 0.02em; line-height: 1.1; overflow-wrap: anywhere; hyphens: auto; text-shadow: 0 1px 2px rgb(0 0 0 / 0.25); }
.curso__selo { position: absolute; top: 0.75rem; left: 0.75rem; }
.capa--arquitectura { --cor-capa: linear-gradient(135deg, #1d4ed8, #4338ca); }
.capa--construcao { --cor-capa: linear-gradient(135deg, #b45309, #92400e); }
.capa--gestao { --cor-capa: linear-gradient(135deg, #0f766e, #155e75); }
.capa--outra { --cor-capa: linear-gradient(135deg, #374151, #111827); }
.curso__corpo { display: flex; flex-direction: column; gap: 0.35rem; padding: 1rem 1.1rem 1.15rem; flex: 1; }
.curso__entidade { display: flex; align-items: center; gap: 0.4rem; font-size: 0.82rem; color: var(--suave); }
.curso__entidade .marca__simbolo { grid-template-columns: repeat(2, 0.38rem); gap: 1px; }
.curso__entidade .marca__simbolo i { width: 0.38rem; height: 0.38rem; border-radius: 1px; }
.curso h2, .curso h3 { font-size: 1.05rem; line-height: 1.3; margin: 0; }
.curso h2 a, .curso h3 a { color: inherit; text-decoration: none; }
.curso h2 a::after, .curso h3 a::after { content: ""; position: absolute; inset: 0; }
.curso__sub { font-size: 0.9rem; color: var(--tinta-2); margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.curso__meta { display: flex; flex-wrap: wrap; gap: 0.25rem 0.9rem; margin-top: 0.35rem; font-size: 0.82rem; color: var(--suave); }
.curso__meta span { display: inline-flex; align-items: center; gap: 0.3rem; white-space: nowrap; }
.curso__rodape { margin-top: auto; padding-top: 0.75rem; display: flex; align-items: baseline; justify-content: space-between; gap: 0.5rem; flex-wrap: wrap; }
.curso__preco { font-weight: 800; font-size: 1.1rem; white-space: nowrap; font-variant-numeric: tabular-nums; }
.curso__preco small { font-weight: 500; font-size: 0.78rem; color: var(--suave); }
.curso__turmas { font-size: 0.82rem; color: var(--suave); }
.etiqueta { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.75rem; font-weight: 700; padding: 0.25rem 0.55rem; border-radius: var(--raio-s); background: var(--destaque); color: var(--destaque-texto); white-space: nowrap; }
.etiqueta--azul { background: var(--azul-claro); color: var(--azul-escuro); }
.etiqueta--verde { background: var(--sucesso-fundo); color: var(--sucesso); }
.curso__topicos { list-style: none; margin: 0.25rem 0 0; padding: 0; display: grid; gap: 0.3rem; font-size: 0.85rem; color: var(--tinta-2); }
.curso__topicos li { display: flex; gap: 0.45rem; align-items: flex-start; }
.curso__topicos .icone { color: var(--sucesso); margin-top: 0.2rem; }

/* Lista compacta de turmas (estilo "em alta") */
.turmas-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 24rem), 1fr)); gap: 0.75rem 1.5rem; }
.turma-linha { position: relative; display: grid; grid-template-columns: clamp(3.5rem, 24%, 5.5rem) minmax(0, 1fr); gap: 1rem; align-items: start; padding: 0.75rem; border-radius: var(--raio-l); color: inherit; text-decoration: none; transition: background var(--transicao); }
.turma-linha__capa { aspect-ratio: 1; border-radius: var(--raio); display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 0.8rem; text-align: center; padding: 0.4rem; background: var(--cor-capa, var(--azul)); overflow-wrap: anywhere; line-height: 1.1; }
.turma-linha__info { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.15rem; min-width: 0; overflow-wrap: anywhere; }
.turma-linha__titulo { font-weight: 700; color: var(--tinta); overflow-wrap: anywhere; text-decoration: none; }
.turma-linha__titulo::after { content: ""; position: absolute; inset: 0; }
.turma-linha__meta { font-size: 0.85rem; color: var(--suave); }
.turma-linha__preco { font-weight: 700; font-size: 0.92rem; white-space: nowrap; }

/* ---------- Edição / turma (cartão) ---------- */
.edicao { background: #fff; border: 1px solid var(--linha); border-radius: var(--raio-l); padding: 1.25rem; display: flex; flex-direction: column; gap: 0.9rem; }
.edicao__topo { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.75rem; }
.edicao__topo > div { min-width: 0; }
.edicao__codigo { margin: 0; font-family: var(--mono); font-size: 0.75rem; color: var(--suave); overflow-wrap: anywhere; }
.edicao h3 { margin: 0.2rem 0 0; font-size: 1.05rem; }
.edicao h3 a { color: inherit; text-decoration: none; }
.edicao__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; font-size: 0.92rem; color: var(--tinta-2); }
.edicao__lista li { display: flex; gap: 0.55rem; align-items: flex-start; }
.edicao__lista .icone { color: var(--suave); margin-top: 0.2rem; }
.edicao__preco { display: flex; align-items: baseline; justify-content: space-between; gap: 0.25rem 1rem; flex-wrap: wrap; padding-top: 0.9rem; border-top: 1px solid var(--linha-suave); }
.edicao__preco span { font-size: 0.85rem; color: var(--suave); }
.edicao__preco strong { font-size: 1.4rem; font-weight: 800; white-space: nowrap; font-variant-numeric: tabular-nums; }
.edicao form { margin: 0; }
.edicao .botao { width: 100%; }
.vagas-info { display: grid; gap: 0.35rem; font-size: 0.85rem; color: var(--suave); }
.vagas-info strong { color: var(--tinta); }
.vagas { height: 6px; background: var(--cinza-2); border-radius: 999px; overflow: hidden; }
.vagas span { display: block; height: 100%; width: var(--ocupacao, 0%); background: var(--azul); border-radius: inherit; }
.vagas--linha { width: 8rem; display: inline-block; vertical-align: middle; margin-right: 0.5rem; }
.modalidade { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.75rem; font-weight: 700; padding: 0.25rem 0.6rem; border-radius: 999px; background: var(--cinza-2); color: var(--tinta-2); white-space: nowrap; flex-shrink: 0; }
.modalidade--online { background: var(--azul-claro); color: var(--azul-escuro); }
.modalidade--presencial { background: var(--aviso-fundo); color: var(--aviso); }

/* ---------- Página de curso (faixa escura + cartão fixo) ---------- */
.curso-faixa { background: var(--faixa); color: var(--faixa-texto); }
.curso-faixa__grelha { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; gap: 2.5rem; padding-block: clamp(2rem, 4vw, 3rem); }
.migalhas { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; font-size: 0.88rem; font-weight: 700; margin-bottom: 1rem; }
.migalhas a { color: #a5b8fc; text-decoration: none; }
.migalhas .icone { width: 0.9rem; height: 0.9rem; color: #8b93a1; }
.curso-faixa h1 { color: #fff; font-size: clamp(1.8rem, 3.4vw, 2.4rem); margin-bottom: 0.6rem; }
.curso-faixa__sub { font-size: clamp(1.05rem, 1.6vw, 1.2rem); color: #fff; margin-bottom: 1.1rem; }
.curso-faixa__info { display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; font-size: 0.92rem; }
.curso-faixa__info span { display: inline-flex; align-items: center; gap: 0.4rem; }
.curso-faixa__info .icone { color: #a5b8fc; }
.curso-faixa__info a { color: #a5b8fc; }
.curso-pagina { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; gap: 2.5rem; align-items: start; padding-block: 2rem 4rem; }
.curso-pagina__lateral { position: sticky; top: calc(var(--topo-altura) + 1rem); margin-top: -14rem; z-index: 5; }
.compra { background: #fff; border: 1px solid var(--linha-suave); border-radius: var(--raio-l); box-shadow: var(--sombra-3); overflow: hidden; }
.compra .curso__capa { aspect-ratio: 16 / 8; }
.compra__corpo { padding: 1.25rem; display: grid; gap: 1rem; }
.compra__preco { font-size: 1.9rem; font-weight: 800; line-height: 1; white-space: nowrap; font-variant-numeric: tabular-nums; }
.compra__preco small { display: block; font-size: 0.85rem; font-weight: 500; color: var(--suave); margin-bottom: 0.35rem; }
.compra__inclui { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; font-size: 0.9rem; color: var(--tinta-2); }
.compra__inclui li { display: flex; gap: 0.55rem; align-items: flex-start; }
.compra__inclui .icone { color: var(--suave); margin-top: 0.2rem; }
.compra h3 { font-size: 0.95rem; margin: 0; }
.turmas-escolha { display: grid; gap: 0.75rem; }
@media (max-width: 60rem) {
  .curso-faixa__grelha, .curso-pagina { grid-template-columns: minmax(0, 1fr); }
  .curso-pagina__lateral { position: static; margin-top: 0; order: -1; }
}

.caixa { border: 1px solid var(--linha); border-radius: var(--raio-l); padding: clamp(1.25rem, 3vw, 1.75rem); margin-bottom: 2rem; background: #fff; }
.caixa h2 { font-size: 1.4rem; margin-bottom: 1rem; }
.aprender { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.7rem 1.75rem; font-size: 0.93rem; color: var(--tinta-2); }
.aprender li { display: flex; gap: 0.6rem; align-items: flex-start; }
.aprender .icone { color: var(--sucesso); margin-top: 0.2rem; }
@media (max-width: 40rem) { .aprender { grid-template-columns: 1fr; } }
.resultado-caixa { background: var(--azul-claro); border-color: var(--azul-borda); }
.resultado-caixa p { margin: 0; font-size: 1.05rem; color: var(--tinta); }
.bloco { margin-bottom: 2.5rem; scroll-margin-top: calc(var(--topo-altura) + 1rem); }
.bloco > h2 { font-size: 1.4rem; margin-bottom: 0.75rem; }

/* Programa (estilo currículo) */
.programa { border: 1px solid var(--linha); border-radius: var(--raio-l); overflow: hidden; }
.programa__resumo { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: 0.85rem 1.1rem; background: var(--cinza); font-size: 0.9rem; color: var(--tinta-2); border-bottom: 1px solid var(--linha); }
.programa ol { list-style: none; margin: 0; padding: 0; }
.programa li { display: grid; grid-template-columns: 2.25rem minmax(0, 1fr) auto; gap: 0.85rem; align-items: start; padding: 1rem 1.1rem; border-bottom: 1px solid var(--linha-suave); }
.programa li:last-child { border-bottom: 0; }
.programa__num { display: grid; place-items: center; width: 2.25rem; height: 2.25rem; border-radius: 50%; background: var(--azul-claro); color: var(--azul-escuro); font-weight: 700; font-size: 0.85rem; font-variant-numeric: tabular-nums; }
.programa__titulo { font-weight: 600; color: var(--tinta); padding-top: 0.35rem; overflow-wrap: anywhere; }
.programa__titulo small { display: block; font-weight: 400; color: var(--suave); font-size: 0.82rem; }
.programa__horas { font-size: 0.88rem; color: var(--suave); padding-top: 0.4rem; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Formador */
.formador { display: flex; gap: 1rem; align-items: flex-start; }
.formador > div { min-width: 0; overflow-wrap: anywhere; }
.formador__inicial { flex-shrink: 0; display: grid; place-items: center; width: 4rem; height: 4rem; border-radius: 50%; background: var(--azul-claro); color: var(--azul-escuro); font-weight: 800; font-size: 1.5rem; }
.formador h3 { margin: 0; font-size: 1.1rem; color: var(--azul); }
.formador p { margin: 0.2rem 0 0; font-size: 0.9rem; color: var(--suave); }

/* Ficha técnica */
.ficha { margin: 0; border: 1px solid var(--linha); border-radius: var(--raio-l); overflow: hidden; }
.ficha > div { display: grid; grid-template-columns: 12rem minmax(0, 1fr); gap: 1rem; padding: 0.8rem 1.1rem; border-bottom: 1px solid var(--linha-suave); }
.ficha > div:last-child { border-bottom: 0; }
.ficha > div:nth-child(odd) { background: var(--cinza); }
.ficha dt { color: var(--suave); font-size: 0.9rem; }
.ficha dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
@media (max-width: 30rem) { .ficha > div { grid-template-columns: 1fr; gap: 0.1rem; } }

/* ---------- Secções informativas ---------- */
.pilares { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 1.25rem; }
.pilar { padding: 1.5rem; border-radius: var(--raio-l); background: #fff; border: 1px solid var(--linha-suave); }
.seccao--alt .pilar { background: #fff; }
.pilar h3 { margin: 0.9rem 0 0.35rem; }
.pilar p { margin: 0; font-size: 0.93rem; color: var(--suave); }
.pilar__icone { display: inline-grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: var(--raio); background: var(--azul-claro); color: var(--azul); }
.pilar__icone .icone { width: 1.3rem; height: 1.3rem; }
.cartao .pilar__icone { margin-bottom: 0.9rem; }

.resultados { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: 1.25rem; }
.resultado { position: relative; display: flex; flex-direction: column; gap: 0.5rem; padding: 1.5rem; border-radius: var(--raio-l); background: #fff; border: 1px solid var(--linha-suave); color: inherit; text-decoration: none; }
.resultado__num { font-size: 0.8rem; font-weight: 700; color: var(--azul); text-transform: uppercase; letter-spacing: 0.06em; }
.resultado h3 { margin: 0; }
.resultado p { margin: 0; color: var(--tinta-2); font-size: 0.95rem; }
.resultado__seta { margin-top: auto; color: var(--azul); }

.modalidades { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: 1.25rem; }
.modalidade-cartao { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--linha-suave); border-radius: var(--raio-l); padding: 1.5rem; }
.modalidade-cartao__icone { display: inline-grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: var(--aviso-fundo); color: var(--aviso); margin-bottom: 0.9rem; }
.modalidade-cartao--online .modalidade-cartao__icone { background: var(--azul-claro); color: var(--azul); }
.modalidade-cartao h3 { font-size: 1.2rem; margin-bottom: 0.25rem; }
.modalidade-cartao__horarios { list-style: none; margin: 0.5rem 0 1.25rem; padding: 0; display: grid; gap: 0.5rem; font-size: 0.92rem; color: var(--tinta-2); }
.modalidade-cartao__horarios li { display: flex; gap: 0.55rem; align-items: flex-start; }
.modalidade-cartao__horarios .icone { color: var(--suave); margin-top: 0.2rem; }
.modalidade-cartao__preco { margin: auto 0 0; padding-top: 1rem; border-top: 1px solid var(--linha-suave); display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 0.25rem 1rem; }
.modalidade-cartao__preco span { font-size: 0.85rem; color: var(--suave); }
.modalidade-cartao__preco strong { font-size: 1.35rem; font-weight: 800; white-space: nowrap; font-variant-numeric: tabular-nums; }
.modalidades__aviso { margin-top: 1rem; }

.funcionalidades { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; }
.funcionalidades li { display: flex; gap: 1rem; align-items: flex-start; background: #fff; border: 1px solid var(--linha-suave); border-radius: var(--raio-l); padding: 1rem 1.15rem; }
.funcionalidades .icone { color: var(--azul); width: 1.35rem; height: 1.35rem; margin-top: 0.1rem; }
.funcionalidades strong { display: block; }
.funcionalidades span { font-size: 0.9rem; color: var(--suave); }

.faq { border: 1px solid var(--linha); border-radius: var(--raio-l); overflow: hidden; background: #fff; }
.faq details { border-bottom: 1px solid var(--linha-suave); }
.faq details:last-child { border-bottom: 0; }
.faq summary { list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1rem; min-height: 3.25rem; padding: 0.85rem 1.15rem; font-weight: 700; cursor: pointer; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: ""; flex-shrink: 0; width: 0.55rem; height: 0.55rem; border-right: 2px solid var(--tinta); border-bottom: 2px solid var(--tinta); transform: rotate(45deg) translateY(-2px); transition: transform var(--transicao); }
.faq details[open] summary { background: var(--cinza); }
.faq details[open] summary::after { transform: rotate(-135deg); }
.faq details > div { padding: 0.25rem 1.15rem 1.15rem; color: var(--tinta-2); background: var(--cinza); }
.faq details > div p { margin: 0; }

.linha-tempo { list-style: none; margin: 1.5rem 0 0; padding: 0; position: relative; }
.linha-tempo::before { content: ""; position: absolute; left: 1.4rem; top: 0.5rem; bottom: 0.5rem; width: 2px; background: var(--azul-claro); }
.linha-tempo li { position: relative; display: grid; grid-template-columns: 2.8rem minmax(0, 1fr); gap: 1.25rem; padding-bottom: 2rem; }
.linha-tempo__num { display: grid; place-items: center; width: 2.8rem; height: 2.8rem; border-radius: 50%; background: var(--azul); color: #fff; font-weight: 800; position: relative; z-index: 1; }
.linha-tempo h3 { margin: 0.45rem 0 0.3rem; font-size: 1.15rem; }
.linha-tempo p { color: var(--tinta-2); }
.lista-visto { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
.lista-visto li { position: relative; padding-left: 1.6rem; color: var(--tinta-2); }
.lista-visto li::before { content: ""; position: absolute; left: 0.15rem; top: 0.45rem; width: 0.6rem; height: 0.32rem; border-left: 2px solid var(--sucesso); border-bottom: 2px solid var(--sucesso); transform: rotate(-45deg); }
.passos-curtos { counter-reset: passo; list-style: none; margin: 0 0 1rem; padding: 0; display: grid; gap: 0.75rem; }
.passos-curtos li { counter-increment: passo; display: grid; grid-template-columns: 2rem 1fr; gap: 0.75rem; align-items: center; color: var(--tinta-2); }
.passos-curtos li::before { content: counter(passo); display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--azul-claro); color: var(--azul-escuro); font-weight: 700; font-size: 0.85rem; }

.chamada { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1.5rem 2rem; align-items: center; }
.chamada h2 { color: #fff; margin-bottom: 0.4rem; }
.chamada p { margin: 0; color: #c9ced6; }
@media (max-width: 48rem) { .chamada { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Cartões, texto e factos (áreas privadas) ---------- */
.cartao { background: #fff; border: 1px solid var(--linha); border-radius: var(--raio-l); padding: clamp(1.25rem, 3vw, 1.75rem); }
.cartao + .cartao { margin-top: 1.25rem; }
.cartao h2 { font-size: 1.3rem; }
.texto { max-width: 46rem; }
.factos { display: grid; margin: 1rem 0 1.5rem; }
.factos > div { display: grid; grid-template-columns: 10rem 1fr; gap: 1rem; border-bottom: 1px solid var(--linha-suave); padding: 0.65rem 0; }
.factos dt { color: var(--suave); font-size: 0.92rem; }
.factos dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.factos--compacto > div { grid-template-columns: 5rem 1fr; border: 0; padding: 0.15rem 0; }
@media (max-width: 30rem) { .factos > div { grid-template-columns: 1fr; gap: 0.1rem; } }
.valor { font-size: 1.4rem; font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
.passos { padding-left: 1.2rem; }
.passos li { margin-bottom: 0.6rem; }
.contactos { display: grid; gap: 1rem; margin-top: 1.5rem; }
.contactos > div { display: block; }
.contactos dt { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--suave); }
.contactos dd { margin: 0; font-weight: 600; }

/* ---------- Formulários ---------- */
.formulario { padding: clamp(1.5rem, 4vw, 2.25rem); }
.formulario h1 { font-size: clamp(1.6rem, 3vw, 2rem); }
.campo { margin-bottom: 1.1rem; }
.campo label, form > label { display: block; font-weight: 700; margin-bottom: 0.35rem; font-size: 0.9rem; }
.campo label span { color: var(--erro); }
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select, textarea {
  width: 100%; min-height: 2.9rem; font: inherit; font-size: 1rem; color: var(--tinta); background: #fff;
  border: 1px solid var(--tinta-2); border-radius: var(--raio); padding: 0.6rem 0.85rem; transition: border-color var(--transicao), box-shadow var(--transicao);
}
form.pesquisa input[type="search"][name] { border: 1px solid var(--linha); border-radius: 999px; padding: 0 3.4rem 0 1.25rem; }
form.pesquisa input[type="search"][name]:focus { border-color: var(--azul); }
textarea { min-height: 7rem; resize: vertical; }
input[type="file"] { font: inherit; font-size: 0.92rem; }
input:focus, select:focus, textarea:focus { border-color: var(--azul); outline: none; box-shadow: 0 0 0 3px rgb(29 78 216 / 0.15); }
.campo--erro input, .campo--erro select, .campo--erro textarea { border-color: var(--erro); }
.campo__erro { color: var(--erro); font-size: 0.86rem; margin: 0.35rem 0 0; }
.campo__ajuda { font-size: 0.82rem; color: var(--suave); margin-top: 0.35rem; }
.campo__ajuda ul { margin: 0; padding-left: 1.1rem; }
.campo--armadilha { position: absolute; left: -9999px; }
.filtros { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 1.5rem; }
.filtros input { flex: 1 1 18rem; width: auto; }
.filtros select { flex: 0 1 14rem; width: auto; }

/* ---------- Mensagens e estados ---------- */
.mensagens { padding-top: 1.25rem; }
.mensagem { border: 1px solid; border-radius: var(--raio); padding: 0.8rem 1rem; margin: 0 0 0.6rem; font-size: 0.95rem; }
.mensagem p { margin: 0; }
.mensagem, .mensagem--info { background: var(--info-fundo); border-color: var(--azul-borda); color: var(--info); }
.mensagem--success { background: var(--sucesso-fundo); border-color: #b7dfc4; color: var(--sucesso); }
.mensagem--error { background: var(--erro-fundo); border-color: #f5c6c1; color: var(--erro); }
.mensagem--warning { background: var(--aviso-fundo); border-color: #f2d7a6; color: var(--aviso); }
.estado { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.78rem; font-weight: 700; padding: 0.2rem 0.6rem; border-radius: 999px; background: var(--cinza-2); color: var(--tinta-2); white-space: nowrap; }
.estado::before { content: ""; width: 0.42rem; height: 0.42rem; border-radius: 50%; background: currentColor; }
.estado--confirmada, .estado--confirmado { background: var(--sucesso-fundo); color: var(--sucesso); }
.estado--pendente { background: var(--aviso-fundo); color: var(--aviso); }
.estado--em_analise { background: var(--info-fundo); color: var(--info); }
.estado--cancelada, .estado--expirada, .estado--rejeitado, .estado--anulado { background: var(--erro-fundo); color: var(--erro); }

/* ---------- Tabelas e painéis ---------- */
.tabela-envolvente { overflow-x: auto; background: #fff; border: 1px solid var(--linha); border-radius: var(--raio-l); margin-bottom: 2rem; }
.tabela { width: 100%; border-collapse: collapse; font-size: 0.93rem; }
.tabela th, .tabela td { text-align: left; padding: 0.85rem 1rem; border-bottom: 1px solid var(--linha-suave); vertical-align: top; }
.tabela th { font-size: 0.78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--suave); background: var(--cinza); }
.tabela tr:last-child td { border-bottom: 0; }
.tabela small { color: var(--suave); }
.acoes { display: flex; flex-direction: column; gap: 0.5rem; min-width: 11rem; }
.acoes form { margin: 0; }
.acoes details form { margin-top: 0.5rem; display: grid; gap: 0.4rem; }
.indicadores { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: 1rem; margin-bottom: 2rem; }
.indicador { background: #fff; border: 1px solid var(--linha); border-radius: var(--raio-l); padding: 1.15rem; }
.indicador span { display: block; font-size: 0.82rem; color: var(--suave); margin-bottom: 0.3rem; }
.indicador strong { display: block; font-size: 1.55rem; font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
.indicador small { color: var(--suave); }
.indicador--positivo { border-top: 3px solid var(--sucesso); }
.historico { list-style: none; padding: 0; margin: 0; font-size: 0.9rem; }
.historico li { padding: 0.55rem 0; border-bottom: 1px solid var(--linha-suave); }
.historico time { color: var(--suave); font-variant-numeric: tabular-nums; margin-right: 0.4rem; }
details summary { cursor: pointer; font-weight: 600; min-height: 2.75rem; display: flex; align-items: center; }
details.perigo { margin-top: 2rem; }
details.perigo summary { color: var(--erro); }
details.perigo form { display: grid; gap: 0.6rem; margin-top: 0.75rem; max-width: 26rem; }

/* ---------- Rodapé ---------- */
.rodape { background: var(--faixa); color: #aab1bc; padding-top: clamp(2.5rem, 5vw, 3.5rem); font-size: 0.92rem; }
.rodape a { color: #fff; text-decoration: none; }
.rodape p { margin: 0 0 0.4rem; }
.rodape__grelha { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr)); gap: 2.5rem; padding-bottom: 2.5rem; }
.rodape .marca { color: #fff; margin-bottom: 1rem; }
.rodape .marca__nome span { color: #aab1bc; }
.rodape h2 { font-size: 0.95rem; color: #fff; margin-bottom: 0.9rem; letter-spacing: 0; }
.rodape ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.55rem; }
.rodape li { display: flex; gap: 0.6rem; align-items: flex-start; }
.rodape li .icone { color: #8b93a1; margin-top: 0.2rem; }
.rodape__base { border-top: 1px solid rgb(255 255 255 / 0.1); padding-top: 1.25rem; padding-bottom: calc(1.25rem + env(safe-area-inset-bottom, 0px)); font-size: 0.82rem; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.5rem; }
@media (max-width: 60rem) { .rodape__grelha { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 36rem) { .rodape__grelha { grid-template-columns: minmax(0, 1fr); } }


/* Faixa de cabeçalho das páginas institucionais (Como funciona) */
.artigo-capa { background: var(--faixa); color: var(--faixa-texto); }
.artigo-capa .contentor { padding-block: clamp(2.25rem, 5vw, 3.5rem); }
.artigo-capa .sobretitulo { color: #a5b8fc; }
.artigo-capa h1 { color: #fff; }
.artigo-capa__sub { font-size: clamp(1.05rem, 1.6vw, 1.2rem); color: #fff; margin-bottom: 1.5rem; }
.artigo-capa__factos { display: flex; flex-wrap: wrap; gap: 0.75rem 2.5rem; margin: 0; }
.artigo-capa__factos div { display: grid; gap: 0.15rem; }
.artigo-capa__factos dt { display: flex; align-items: center; gap: 0.4rem; font-size: 0.82rem; color: #aab1bc; }
.artigo-capa__factos .icone { color: #a5b8fc; }
.artigo-capa__factos dd { margin: 0; color: #fff; font-weight: 700; }


/* Texto muito grande / ecrãs estreitos: listas e metadados quebram em vez de alargar a página;
   os valores podem passar à linha seguinte (nunca são cortados). */
li, dd, .curso-faixa__info span, .migalhas a { min-width: 0; overflow-wrap: anywhere; }
.curso-faixa__info span { flex-wrap: wrap; }
@media (max-width: 30rem) {
  .botao { white-space: normal; text-align: center; max-width: 100%; }
  .curso__preco, .turma-linha__preco, .edicao__preco strong, .compra__preco, .modalidade-cartao__preco strong, .valor, .indicador strong { white-space: normal; }
}


/* ---------- Logótipo ---------- */
.marca__logo { display: block; height: 1.55rem; width: auto; }
.marca__academy { font-size: 0.82rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--suave); padding-left: 0.6rem; border-left: 1px solid var(--linha); line-height: 1.2; }
.rodape .marca__academy { color: #aab1bc; border-left-color: rgb(255 255 255 / 0.2); }
@media (max-width: 30rem) { .marca__academy { display: none; } .marca__logo { height: 1.35rem; } }
/* Itens da faixa superior mantêm a largura; a lista desliza na horizontal. */
.pre-topo li { flex-shrink: 0; overflow-wrap: normal; }
.pre-topo__barra > ul { overflow-x: auto; scrollbar-width: none; }

/* ---------- Horários na faixa superior ---------- */
.pre-topo__barra { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.pre-topo__barra > ul { min-width: 0; }
.horarios-topo { position: relative; flex-shrink: 0; }
.horarios-topo summary { list-style: none; display: inline-flex; align-items: center; gap: 0.4rem; min-height: 2.5rem; padding: 0 0.5rem; color: #e5e7eb; font-size: 0.85rem; font-weight: 600; cursor: pointer; }
.horarios-topo summary::-webkit-details-marker { display: none; }
.horarios-topo summary::after { content: ""; width: 0.4rem; height: 0.4rem; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-2px); margin-left: 0.2rem; }
.horarios-topo[open] summary::after { transform: rotate(-135deg); }
.horarios-topo__painel { position: absolute; right: 0; top: calc(100% + 0.25rem); z-index: 60; width: min(24rem, calc(100vw - 2rem)); background: #fff; color: var(--tinta); border: 1px solid var(--linha-suave); border-radius: var(--raio-l); box-shadow: var(--sombra-3); padding: 1rem 1.15rem; }
.horarios-topo__titulo { font-weight: 700; margin: 0 0 0.6rem; }
.horarios-topo__painel ul { list-style: none; margin: 0 0 0.75rem; padding: 0; display: grid; gap: 0.55rem; font-size: 0.9rem; }
.horarios-topo__painel li { display: flex; gap: 0.55rem; align-items: flex-start; }
.horarios-topo__painel .icone { color: var(--azul); margin-top: 0.2rem; }
.horarios-topo__painel .nota { margin: 0; font-size: 0.82rem; }

/* ---------- Capa com fotografia ---------- */
.capa__foto { position: relative; align-self: stretch; min-height: 18rem; }
.capa__foto img { width: 100%; height: 100%; object-fit: cover; border-radius: var(--raio-l); display: block; }
.capa__destaque { position: absolute; left: 1rem; bottom: 1rem; display: grid; gap: 0.2rem; max-width: calc(100% - 2rem); padding: 0.85rem 1rem; background: #fff; color: var(--tinta); border-radius: var(--raio-l); box-shadow: var(--sombra-3); text-decoration: none; }
.capa__destaque .etiqueta { justify-self: start; }
.capa__destaque strong { font-size: 1.05rem; }
.capa__destaque span:last-child { font-size: 0.88rem; color: var(--suave); }

/* ---------- Fotografias nos cartões ---------- */
.curso__capa--foto { padding: 0; background: var(--cinza-2); }
.curso__capa--foto::before, .curso__capa--foto::after { display: none; }
.curso__capa--foto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 30%; }
.curso__capa--foto .curso__selo { z-index: 1; }
.turma-linha__capa { overflow: hidden; }
.turma-linha__capa img { width: 100%; height: 100%; object-fit: cover; }
.turma-linha__capa:has(img) { padding: 0; }

.modalidade-cartao--foto { padding: 0; overflow: hidden; }
.modalidade-cartao--foto > img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.modalidade-cartao__corpo { display: flex; flex-direction: column; flex: 1; }
.modalidade-cartao--foto .modalidade-cartao__corpo { padding: 1.25rem 1.5rem 1.5rem; }

/* ---------- Bloco "Para empresas" ---------- */
.empresas-bloco { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; }
.empresas-bloco > img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--raio-xl); }
.empresas-bloco__acoes { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: center; margin-top: 1.25rem; }
@media (max-width: 52rem) { .empresas-bloco { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Faixa de "Como funciona" com fotografia ---------- */
.artigo-capa__grelha { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 2rem; align-items: center; }
.artigo-capa--foto img { width: 100%; height: auto; max-height: 22rem; object-fit: cover; object-position: center 25%; border-radius: var(--raio-l); }
@media (max-width: 52rem) { .artigo-capa__grelha { grid-template-columns: minmax(0, 1fr); } .artigo-capa--foto img { max-height: 14rem; } }

/* ---------- Texto rico (CKEditor) ---------- */
.texto ul, .texto ol { padding-left: 1.25rem; }
.texto blockquote { margin: 1rem 0; padding: 0.75rem 1rem; border-left: 3px solid var(--azul); background: var(--azul-claro); border-radius: 0 var(--raio) var(--raio) 0; }
.texto table { border-collapse: collapse; width: 100%; margin: 1rem 0; }
.texto th, .texto td { border: 1px solid var(--linha); padding: 0.5rem 0.75rem; text-align: left; }


/* ---------- Rodapé (preenchido) ---------- */
.rodape__marca p { max-width: 22rem; }
.rodape__acoes { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: 1.25rem; }
.rodape__acoes .botao--branco { color: var(--tinta); }
.rodape__subtitulo { margin-top: 1.5rem; }
.rodape__horarios { font-size: 0.85rem; color: #aab1bc; }
.rodape__base a { color: #aab1bc; }

/* ---------- Página de contacto ---------- */
.contacto { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.contacto__foto { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--raio-l); margin: 1.5rem 0; }
.contacto__cartoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 1rem; }
.contacto__form { position: sticky; top: calc(var(--topo-altura) + 1rem); }
.contacto__form h2 { font-size: 1.35rem; }
@media (max-width: 56rem) { .contacto { grid-template-columns: minmax(0, 1fr); } .contacto__form { position: static; } }
.mini-cartao { background: var(--cinza); border: 1px solid var(--linha-suave); border-radius: var(--raio-l); padding: 1.15rem 1.25rem; }
.mini-cartao h2, .mini-cartao h3 { display: flex; align-items: center; gap: 0.5rem; font-size: 1rem; margin: 0 0 0.6rem; }
.mini-cartao h2 .icone { color: var(--azul); }
.mini-cartao ul { margin: 0 0 0.6rem; padding-left: 1.1rem; font-size: 0.9rem; color: var(--tinta-2); display: grid; gap: 0.35rem; }
.mini-cartao p { margin: 0; font-size: 0.9rem; color: var(--tinta-2); }
.mini-cartao .nota { font-size: 0.82rem; margin-top: 0.4rem; }
.mini-cartao__ligacoes { list-style: none; padding-left: 0 !important; }
.mini-cartao__ligacoes a { font-weight: 600; text-decoration: none; }
.mini-cartao--azul { background: var(--azul-claro); border-color: var(--azul-borda); grid-column: 1 / -1; }

/* ---------- "Como funciona": passos em cartões ---------- */
.passos-cartoes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); gap: 1rem; counter-reset: none; }
.passo-cartao { position: relative; display: flex; flex-direction: column; gap: 0.5rem; padding: 1.4rem 1.25rem; background: #fff; border: 1px solid var(--linha-suave); border-radius: var(--raio-l); box-shadow: var(--sombra-1); }
.passo-cartao__num { position: absolute; top: 1rem; right: 1.1rem; font-size: 2rem; font-weight: 800; line-height: 1; color: var(--azul-claro); }
.passo-cartao__icone { display: inline-grid; place-items: center; width: 2.6rem; height: 2.6rem; border-radius: var(--raio); background: var(--azul); color: #fff; }
.passo-cartao h3 { margin: 0.4rem 0 0; font-size: 1.05rem; }
.passo-cartao p { margin: 0; font-size: 0.9rem; color: var(--tinta-2); }
.passo-cartao .ligacao-seta { margin-top: auto; padding-top: 0.5rem; font-size: 0.9rem; }

/* ---------- Ajuda ao lado da FAQ ---------- */
.ajuda-cartao { margin-top: 1.5rem; }
.ajuda-cartao__factos { list-style: none; padding: 0 !important; margin: 0 0 1rem !important; gap: 0.6rem !important; }
.ajuda-cartao__factos li { display: flex; gap: 0.6rem; align-items: flex-start; }
.ajuda-cartao__factos .icone { color: var(--azul); margin-top: 0.15rem; }
.ajuda-cartao > p { font-weight: 600; margin-bottom: 0.6rem; }
.ajuda-cartao__acoes { display: flex; flex-wrap: wrap; gap: 0.6rem; }

/* ---------- Cartões lado a lado alinhados ---------- */
.duas-colunas--igual { align-items: stretch; }
.duas-colunas > .cartao + .cartao { margin-top: 0; }
.duas-colunas--igual > .cartao, .duas-colunas--igual > .mini-cartao, .duas-colunas--igual > .faq { height: 100%; }
.faq-grelha .ajuda-cartao { margin-top: 0; display: flex; flex-direction: column; }
.faq-grelha .ajuda-cartao > p { margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--linha-suave); }
.duas-colunas--igual > .cartao { display: flex; flex-direction: column; }
.duas-colunas--igual > .cartao > .ligacao-seta { margin-top: auto; padding-top: 1rem; align-self: flex-start; }
.faq-grelha { gap: 1.5rem; }

/* ---------- Toque e hover (mobile-native) ---------- */
a, button, summary, label, select, [role="button"], input[type="submit"] { touch-action: manipulation; }
.botao, button, summary, .nav a, .modalidade, .estado, .etiqueta, .topo__menu-btn, .marca, .categoria, .atalho, .pre-topo a {
  -webkit-user-select: none; user-select: none; -webkit-touch-callout: none;
}
.curso:active, .resultado:active, .atalho:active, .turma-linha:active { transform: scale(0.985); }
.categoria:active, .nav a:not(.botao):active, .ligacao:active { background: var(--cinza-2); }
.faq summary:active { background: var(--cinza-2); }
.pre-topo ul, .categorias { overscroll-behavior-x: contain; }

@media (hover: hover) and (pointer: fine) {
  .horarios-topo summary:hover { color: #fff; }
  .capa__destaque:hover { color: var(--azul); }
  a:hover { color: var(--azul-escuro); }
  .botao:hover { background: var(--azul-escuro); border-color: var(--azul-escuro); color: #fff; }
  .botao--escuro:hover { background: #000; border-color: #000; }
  .botao--contorno:hover { background: var(--azul-claro); color: var(--azul-escuro); }
  .botao--claro:hover { background: rgb(255 255 255 / 0.1); border-color: #fff; color: #fff; }
  .botao--branco:hover { background: var(--cinza-2); border-color: var(--cinza-2); color: var(--tinta); }
  .botao--perigo:hover { background: #912018; border-color: #912018; }
  .botao:hover .icone, .ligacao-seta:hover .icone { transform: translateX(2px); }
  .nav a:not(.botao):hover, .ligacao:hover, .topo__explorar:hover { background: var(--cinza-2); color: var(--tinta); }
  .pre-topo a:hover { color: #fff; }
  .curso:hover { box-shadow: var(--sombra-3); transform: translateY(-2px); }
  .curso:hover h2 a, .curso:hover h3 a { color: var(--azul); }
  .atalho:hover { border-color: var(--azul-borda); box-shadow: var(--sombra-2); color: var(--tinta); }
  .categoria:hover { background: var(--azul-claro); border-color: var(--azul-borda); color: var(--tinta); }
  .categoria[aria-current="true"]:hover { background: var(--tinta); color: #fff; }
  .turma-linha:hover { background: var(--cinza); }
  .turma-linha:hover .turma-linha__titulo { color: var(--azul); }
  .resultado:hover { border-color: var(--azul-borda); box-shadow: var(--sombra-2); color: inherit; }
  .faq summary:hover { background: var(--cinza); }
  .capa__sugestoes a:hover { background: rgb(255 255 255 / 0.1); color: #fff; }
  .rodape a:hover { color: #a5b8fc; }
  input:hover, select:hover, textarea:hover { border-color: var(--tinta); }
  .tabela tbody tr:hover { background: var(--cinza); }
}

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* ============================================================================================
   TEMA "ESCOLA DE NEGÓCIOS": azul-marinho + dourado + creme. Manrope com destaque em itálico serifado.
   Sobrepõe os tokens anteriores; os componentes existentes herdam as novas cores.
   ============================================================================================ */
:root {
  --noite: #071d33;          /* cabeçalho, rodapé, secções escuras */
  --noite-2: #0e2c4a;
  --ouro: #b9925e;           /* botões (texto azul-marinho por cima: 6,3:1) */
  --ouro-claro: #d4b483;
  --ouro-texto: #7d5f30;     /* dourado para texto sobre claro (5,1:1) */
  --creme: #f5f2ec;
  --alerta: #b2452f;

  --azul: var(--ouro-texto);       /* ligações e ícones */
  --azul-escuro: #5e4622;
  --azul-claro: #f4ede1;
  --azul-borda: #e4d4b7;
  --tinta: #0b1f33;
  --tinta-2: #2e3e50;
  --suave: #5a6675;
  --cinza: var(--creme);
  --cinza-2: #ece7dd;
  --linha: #d9d2c4;
  --linha-suave: #e7e1d6;
  --faixa: var(--noite);
  --faixa-texto: #c9d3de;
  --destaque: #f1e2c4;
  --destaque-texto: #5e4622;
  --sans: "Manrope", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
  --serifa: "Playfair Display", Georgia, serif;
}

body { font-family: var(--sans); }
h1, h2 { font-weight: 500; letter-spacing: -0.02em; }
h1 em, h2 em, .titulo-centro em { font-family: var(--serifa); font-style: italic; font-weight: 500; color: var(--ouro-texto); letter-spacing: 0; }
.seccao--noite h2 em, .heroi-foto h1 em, .contagem h2 em, .curso-faixa h1 em { color: var(--ouro-claro); }
.sobretitulo { color: var(--ouro-texto); letter-spacing: 0.14em; }
.sobretitulo--claro, .seccao__topo .sobretitulo.sobretitulo--claro { color: var(--ouro-claro); }

/* Botões: dourado com texto azul-marinho */
.botao { background: var(--ouro); border-color: var(--ouro); color: var(--noite); font-weight: 700; border-radius: 6px; }
.botao--claro { background: transparent; color: #fff; border-color: rgb(255 255 255 / 0.7); }
.botao--contorno { background: transparent; color: var(--ouro-texto); border-color: var(--ouro); }
.botao--contorno-ouro { background: transparent; color: var(--ouro-claro); border: 1px solid var(--ouro); }
.botao--branco { background: #fff; color: var(--noite); border-color: #fff; }
.botao--perigo { background: var(--alerta); border-color: var(--alerta); color: #fff; }

/* ---------- Faixa de anúncio ---------- */
.anuncio { background: #04121f; color: #e6ebf1; font-size: 0.9rem; }
.anuncio__barra { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem 1.5rem; min-height: 3.1rem; flex-wrap: wrap; padding-block: 0.4rem; }
.anuncio__texto { margin: 0; display: flex; flex-wrap: wrap; gap: 0.25rem 1rem; align-items: baseline; }
.anuncio__texto strong { color: #fff; letter-spacing: 0.04em; }
.anuncio__vagas { color: var(--ouro-claro); font-weight: 700; }
.anuncio__acoes { display: flex; align-items: center; gap: 0.75rem; }
.anuncio .horarios-topo summary { color: #e6ebf1; }

/* ---------- Cabeçalho azul-marinho ---------- */
.topo { background: var(--noite); border-bottom: 1px solid rgb(255 255 255 / 0.08); box-shadow: none; }
.topo__barra { min-height: 5rem; }
.marca { color: #fff; }
.marca__academy { color: #c9d3de; border-left-color: rgb(255 255 255 / 0.25); }
.nav { flex: 1; justify-content: space-between; margin-left: 2rem; }
.nav__links a:not(.botao), .nav .ligacao { color: #e6ebf1; font-weight: 500; }
.nav a[aria-current="page"] { color: #fff; box-shadow: inset 0 -2px 0 var(--ouro); border-radius: 0; }
.nav__conta { gap: 0.6rem !important; }
.nav__conta a:not(.botao) { color: #e6ebf1; }
.topo__menu-btn { background: transparent; color: #fff; border-color: rgb(255 255 255 / 0.4); }
@media (max-width: 52rem) {
  .nav { margin-left: 0; background: var(--noite); }
  .nav__links a[aria-current="page"] { box-shadow: inset 2px 0 0 var(--ouro); }
}

/* ---------- Capa com fotografia a toda a largura ---------- */
.heroi-foto { position: relative; isolation: isolate; min-height: min(78vh, 46rem); display: grid; align-items: center; color: #fff; overflow: hidden; background: var(--noite); }
.heroi-foto__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 35%; z-index: -2; }
.heroi-foto::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgb(7 29 51 / 0.72) 0%, rgb(7 29 51 / 0.78) 60%, rgb(7 29 51 / 0.95) 100%); }
.heroi-foto__conteudo { text-align: center; padding-block: clamp(4rem, 10vw, 7rem); max-width: 60rem; }
.heroi-foto h1 { color: #fff; font-size: clamp(2.1rem, 5.5vw, 4.4rem); font-weight: 400; line-height: 1.08; hyphens: manual; }
.heroi-foto h1 em { display: block; margin-top: 0.15em; }
.heroi-foto__texto { font-size: clamp(1.05rem, 1.6vw, 1.25rem); color: #dbe3ec; max-width: 40rem; margin: 1.25rem auto 0; }
.heroi-foto__acoes { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; margin-top: 2rem; }

/* ---------- Faixa de pilares ---------- */
.pilares-faixa { background: var(--creme); border-bottom: 1px solid var(--linha-suave); }
.pilares-faixa__grelha { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 2rem; padding-block: 2.5rem; }
.pilar-marca h2 { font-size: 1.2rem; font-weight: 400; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.6rem; color: var(--noite); }
.pilar-marca__b { font-weight: 800; letter-spacing: 0.02em; }
.pilar-marca p { font-size: 0.92rem; color: var(--tinta-2); margin: 0 0 0.75rem; }
.pilar-marca .ligacao-seta { color: var(--noite); }

/* ---------- Secções ---------- */
.seccao--noite { background: var(--noite-2); color: #dbe3ec; }
.seccao--noite h2, .seccao--noite h3 { color: #fff; }
.seccao--creme { background: var(--creme); }
.titulo-centro { text-align: center; max-width: 46rem; margin: 0 auto clamp(1.75rem, 4vw, 2.75rem); }
.titulo-centro h2 { font-size: clamp(1.8rem, 3.6vw, 2.7rem); margin-bottom: 0.4rem; }
.titulo-centro p { margin: 0; color: var(--suave); }
.seccao--noite .titulo-centro p { color: #c9d3de; }
.centro { text-align: center; margin-top: 2.25rem; }

/* ---------- Cartões fotográficos de curso ---------- */
.programas { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); gap: 1.25rem; }
.programa { position: relative; display: flex; flex-direction: column; background: #fff; border-radius: 10px; overflow: hidden; color: var(--tinta); box-shadow: 0 18px 40px -24px rgb(0 0 0 / 0.6); transition: transform var(--transicao); }
.programa__capa { position: relative; aspect-ratio: 4 / 3; background: var(--cor-capa, var(--noite)); isolation: isolate; display: flex; align-items: flex-end; }
.programa__capa img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 30%; z-index: -2; }
.programa__capa::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 35%, rgb(7 29 51 / 0.92)); }
.programa__sobre { padding: 1rem 1.15rem 1.1rem; width: 100%; }
.programa h3 { font-family: var(--serifa); font-weight: 500; font-size: 1.45rem; letter-spacing: 0.01em; margin: 0 0 0.6rem; color: #fff; }
.programa h3 a { color: inherit; text-decoration: none; }
.programa h3 a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.programa__selos { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.selo { font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; padding: 0.2rem 0.5rem; border-radius: 4px; border: 1px solid var(--ouro); color: var(--ouro-claro); }
.selo--ouro { background: var(--ouro); color: var(--noite); }
.selo--alerta { background: var(--alerta); border-color: var(--alerta); color: #fff; }
.programa__corpo { padding: 1rem 1.15rem 1.15rem; display: flex; flex-direction: column; gap: 0.75rem; flex: 1; }
.programa__corpo p { margin: 0; font-size: 0.9rem; color: var(--tinta-2); }
.programa__rodape { margin-top: auto; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.25rem 1rem; font-size: 0.82rem; color: var(--suave); }
.programa__rodape strong { color: var(--tinta); font-size: 0.95rem; white-space: nowrap; }
/* Preço no cartão de destaque. Sem promoção fica à direita, como sempre esteve. Com
   promoção passa a ocupar a linha toda à esquerda: o selo em cima, os valores por baixo
   e a contagem a seguir, todos pelo mesmo alinhamento — o número deixa de ficar espremido
   entre o selo e a margem do cartão. */
.programa__preco { display: flex; flex-direction: column; align-items: flex-end; gap: 0.3rem; white-space: normal; text-align: right; }
.programa__valores { display: inline-flex; flex-wrap: wrap; align-items: baseline; justify-content: flex-end; gap: 0 0.5rem; }
.programa__preco--promo { width: 100%; align-items: flex-start; text-align: left; }
.programa__preco--promo .programa__valores { justify-content: flex-start; }
.programa__preco del { color: var(--suave); font-weight: 500; font-size: 0.82em; }
.programa__preco small { font-weight: 500; color: var(--suave); }
.programa__agora { white-space: nowrap; }

/* ---------- Números ---------- */
.numeros { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); gap: 1rem; margin: 0; }
.numeros > div { display: flex; flex-direction: column-reverse; align-items: center; justify-content: center; gap: 0.35rem; padding: 2rem 1rem; border: 1px solid var(--noite); border-radius: 10px; text-align: center; background: transparent; }
.numeros dd { margin: 0; font-family: var(--serifa); font-size: clamp(2.4rem, 5vw, 3.4rem); line-height: 1; color: var(--noite); font-variant-numeric: lining-nums; }
.numeros dt { font-size: 0.95rem; color: var(--tinta-2); }

/* ---------- Contagem até à próxima turma ---------- */
.contagem { background: var(--noite); color: #dbe3ec; text-align: center; padding-block: clamp(3rem, 7vw, 5rem); }
.contagem__marca { width: 3rem; height: 3rem; filter: brightness(0) saturate(100%) invert(68%) sepia(25%) saturate(640%) hue-rotate(354deg); margin-bottom: 1rem; }
.contagem h2 { color: #fff; font-weight: 300; font-size: clamp(1.4rem, 3vw, 2.1rem); }
.contagem h2 strong { font-weight: 700; }
.contagem__numero { font-family: var(--serifa); font-size: clamp(5rem, 14vw, 9rem); line-height: 1; color: var(--ouro); margin: 0.5rem 0; font-variant-numeric: lining-nums; }
.contagem__numero small { font-family: var(--sans); font-size: 1.1rem; color: var(--ouro-claro); margin-left: 0.4rem; }
.contagem__data { color: #c9d3de; margin-bottom: 1.75rem; }

/* ---------- Pesquisa na página de cursos ---------- */
.pesquisa--pagina { max-width: 36rem; margin: 0 0 1.5rem; }

/* ---------- Ajustes em componentes existentes ---------- */
.curso-faixa, .artigo-capa { background: var(--noite); }
.migalhas a { color: var(--ouro-claro); }
.curso-faixa__info .icone, .curso-faixa__info a { color: var(--ouro-claro); }
.etiqueta { background: var(--destaque); color: var(--destaque-texto); }
.pesquisa button { background: var(--ouro); color: var(--noite); }
.vagas span { background: var(--ouro); }
.passo-cartao__icone { background: var(--noite); color: var(--ouro-claro); }
.passo-cartao__num { color: var(--cinza-2); }
.programa__num, .programa li .programa__num { background: var(--azul-claro); color: var(--noite); }
.faq summary::after { border-color: var(--ouro-texto); }
.rodape { background: var(--noite); }
.rodape h2 { color: var(--ouro-claro); font-weight: 600; }
.rodape a:not(.botao) { color: #e6ebf1; }
.categoria[aria-current="true"] { background: var(--noite); }
@media (hover: hover) and (pointer: fine) {
  .botao:hover { background: var(--ouro-claro); border-color: var(--ouro-claro); color: var(--noite); }
  .botao--claro:hover { background: rgb(255 255 255 / 0.12); border-color: #fff; color: #fff; }
  .botao--contorno:hover, .botao--contorno-ouro:hover { background: var(--ouro); color: var(--noite); }
  .nav__links a:not(.botao):hover, .nav .ligacao:hover { background: rgb(255 255 255 / 0.08); color: #fff; }
  .programa:hover { transform: translateY(-3px); }
  .rodape a:not(.botao):hover { color: var(--ouro-claro); }
}

/* ---------- Formadores (cartões com retrato) ---------- */
.mentores { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13.5rem), 1fr)); gap: 1rem; }
.mentor { display: flex; flex-direction: column; background: #0b2540; border: 1px solid rgb(255 255 255 / 0.08); border-radius: 12px; overflow: hidden; }
.mentor__foto { position: relative; aspect-ratio: 4 / 5; background: linear-gradient(160deg, #123456, #071d33); }
.mentor__foto img { width: 100%; height: 100%; object-fit: cover; object-position: center 20%; display: block; }
.mentor__foto::after { content: ""; position: absolute; inset: 55% 0 0; background: linear-gradient(180deg, transparent, #0b2540); }
.mentor__inicial { position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--serifa); font-style: italic; font-size: 5rem; color: var(--ouro-claro); }
.mentor__texto { padding: 0 1.1rem 1.25rem; margin-top: -2.25rem; position: relative; z-index: 1; }
.mentor h3 { font-family: var(--serifa); font-style: italic; font-weight: 500; font-size: 1.45rem; line-height: 1.1; margin: 0 0 0.6rem; color: #fff; padding-bottom: 0.6rem; border-bottom: 1px solid var(--ouro); }
.mentor h3 em { color: var(--ouro-claro); }
.mentor__area { margin: 0 0 0.4rem; font-size: 0.8rem; font-weight: 700; color: var(--ouro-claro); text-transform: uppercase; letter-spacing: 0.06em; }
.mentor__bio, .mentor__bio p { margin: 0; font-size: 0.88rem; color: #c9d3de; line-height: 1.55; }
.formador__foto { width: 4.5rem; height: 5.6rem; object-fit: cover; object-position: center 20%; border-radius: 10px; flex-shrink: 0; }

/* Formadores em carrossel nativo no telemóvel (deslize horizontal com scroll-snap). */
@media (max-width: 40rem) {
  .mentores { grid-auto-flow: column; grid-template-columns: none; grid-auto-columns: 80%; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; padding-bottom: 0.75rem; scrollbar-width: thin; }
  .mentor { scroll-snap-align: start; }
}

/* Perfil do formador: escondido até carregar em "Ver perfil" (details nativo: toque, teclado, leitor de ecrã). */
.mentores { align-items: start; }
.mentor__mais { margin-top: 0.4rem; }
.mentor__mais summary { list-style: none; display: inline-flex; align-items: center; gap: 0.45rem; min-height: 2.75rem; color: var(--ouro-claro); font-weight: 700; font-size: 0.88rem; cursor: pointer; }
.mentor__mais summary::-webkit-details-marker { display: none; }
.mentor__mais summary::before { content: "+"; display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; border: 1px solid var(--ouro); border-radius: 50%; font-size: 1rem; line-height: 1; transition: transform var(--transicao); }
.mentor__mais[open] summary::before { transform: rotate(45deg); }
.mentor__mais-fechar, .mentor__mais[open] .mentor__mais-abrir { display: none; }
.mentor__mais[open] .mentor__mais-fechar { display: inline; }
.mentor__mais .mentor__bio { padding-top: 0.25rem; }
@media (hover: hover) and (pointer: fine) { .mentor__mais summary:hover { color: #fff; } }

/* Cartões fechados com a mesma altura; o "Ver perfil" alinha-se em baixo em todos. */
.mentor__texto { display: flex; flex-direction: column; min-height: 7rem; }
.mentor__mais { margin-top: auto; }

/* ---------- Carrossel de formadores (scroll-snap nativo + setas) ---------- */
.carrossel { position: relative; }
.carrossel__topo { display: flex; justify-content: flex-end; gap: 0.5rem; margin-bottom: 1rem; }
.carrossel__seta { display: grid; place-items: center; width: 2.9rem; height: 2.9rem; border-radius: 50%; border: 1px solid var(--ouro); background: transparent; color: var(--ouro-claro); cursor: pointer; transition: background var(--transicao), color var(--transicao), opacity var(--transicao); }
.carrossel__seta:disabled { opacity: 0.35; cursor: default; }
.carrossel__seta:not(:disabled):active { transform: scale(0.95); }
.icone--inverter { transform: scaleX(-1); }
.carrossel .mentores {
  display: grid; grid-auto-flow: column; grid-template-columns: none;
  grid-auto-columns: calc((100% - 2 * 1rem) / 3); gap: 1rem;
  overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain;
  scroll-behavior: smooth; scrollbar-width: none; padding-bottom: 0.25rem; align-items: start;
}
.carrossel .mentores::-webkit-scrollbar { display: none; }
.carrossel .mentor { scroll-snap-align: start; }
.carrossel .mentores:focus-visible { outline: 2px solid var(--ouro); outline-offset: 4px; }
@media (max-width: 60rem) { .carrossel .mentores { grid-auto-columns: calc((100% - 1rem) / 2); } }
@media (max-width: 40rem) { .carrossel .mentores { grid-auto-columns: 82%; } }
@media (hover: hover) and (pointer: fine) { .carrossel__seta:not(:disabled):hover { background: var(--ouro); color: var(--noite); } }
@media (prefers-reduced-motion: reduce) { .carrossel .mentores { scroll-behavior: auto; } }

/* ============================================================================================
   IDENTIDADE BLOKUS: azul-escuro + laranja mecânica + branco. Títulos em Chakra Petch
   (geométrica, de cantos cortados, próxima do logótipo). Sobrepõe o tema anterior.
   ============================================================================================ */
:root {
  --noite: #0b1e3a;          /* azul-escuro: cabeçalho, rodapé, secções escuras */
  --noite-2: #12294d;
  --marinho: #1d3762;        /* azul do logótipo */
  --ouro: #f26b1d;           /* laranja mecânica: botões (texto azul-escuro por cima: 5,5:1) */
  --ouro-claro: #ff9a5c;     /* laranja sobre fundo escuro (7,9:1) */
  --ouro-texto: #b8470b;     /* laranja para texto sobre branco (5,3:1) */
  --creme: #f2f5f9;          /* branco-gelo das secções alternadas */
  --azul: var(--marinho);
  --azul-escuro: #8a3508;
  --azul-claro: #fdeee4;
  --azul-borda: #f7cfb4;
  --tinta: #0b1e3a;
  --tinta-2: #2b3d57;
  --suave: #56657a;
  --cinza-2: #e6ebf2;
  --linha: #d3dbe6;
  --linha-suave: #e3e8ef;
  --destaque: #fde3d1;
  --destaque-texto: #8a3508;
  --whatsapp: #0e7a3f;       /* verde escurecido: texto branco legível (5,4:1) */
  --titulo: "Chakra Petch", "Manrope", "Segoe UI", system-ui, sans-serif;
  --serifa: var(--titulo);
}

h1, h2, h3, .programa h3, .mentor h3, .numeros dd, .contagem__numero, .compra__preco, .curso__capa-titulo {
  font-family: var(--titulo); font-style: normal;
}
h1, h2 { font-weight: 700; letter-spacing: -0.01em; }
h3 { font-weight: 600; }
h1 em, h2 em, .titulo-centro em, .mentor h3 em { font-family: inherit; font-style: normal; font-weight: 700; color: var(--ouro-texto); }
.seccao--noite h2 em, .heroi-foto h1 em, .contagem h2 em, .curso-faixa h1 em, .mentor h3 em { color: var(--ouro); }
.heroi-foto h1 { font-weight: 700; }
.heroi-foto h1 em { display: inline; margin: 0; }
.heroi-foto::after { background: linear-gradient(180deg, rgb(11 30 58 / 0.70) 0%, rgb(11 30 58 / 0.80) 60%, rgb(11 30 58 / 0.96) 100%); }
.heroi-foto__proxima { margin: 1.5rem 0 0; color: #c9d3de; font-size: 0.95rem; }
.heroi-foto__proxima a { color: var(--ouro-claro); font-weight: 700; }
.mentor__inicial { font-style: normal; font-family: var(--titulo); }
.sobretitulo { font-family: var(--titulo); font-weight: 600; }
.migalhas--claro a { color: var(--ouro-texto); }
.migalhas--claro .icone { color: var(--suave); }

/* Selos dos quatro estados de turma */
.estado-turma { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.74rem; font-weight: 700; letter-spacing: 0.02em; padding: 0.28rem 0.6rem; border-radius: 4px; white-space: nowrap; border: 1px solid transparent; }
.estado-turma::before { content: ""; width: 0.45rem; height: 0.45rem; border-radius: 50%; background: currentColor; }
.estado-turma--abertas { background: var(--ouro); color: var(--noite); }
.estado-turma--confirmada { background: var(--noite); color: #fff; }
.estado-turma--confirmada::before { background: var(--ouro); }
.estado-turma--a_anunciar { background: #fff; color: var(--marinho); border-color: var(--marinho); border-style: dashed; }
.estado-turma--encerradas { background: var(--cinza-2); color: var(--suave); }
.edicao .estado-turma { margin-bottom: 0.4rem; }

/* Passos da inscrição */
.passos-inscricao { list-style: none; margin: 1rem 0 1.5rem; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0.5rem; }
.passos-inscricao li { display: flex; flex-direction: column; gap: 0.4rem; padding: 0.75rem; border-top: 3px solid var(--linha); color: var(--suave); font-size: 0.85rem; font-weight: 600; line-height: 1.3; }
.passos-inscricao__n { display: grid; place-items: center; width: 1.9rem; height: 1.9rem; border-radius: 4px; background: var(--cinza-2); color: var(--marinho); font-family: var(--titulo); font-weight: 700; }
.passos-inscricao li.feito { border-top-color: var(--marinho); color: var(--tinta-2); }
.passos-inscricao li.feito .passos-inscricao__n { background: var(--marinho); color: #fff; }
.passos-inscricao li.atual { border-top-color: var(--ouro); color: var(--tinta); }
.passos-inscricao li.atual .passos-inscricao__n { background: var(--ouro); color: var(--noite); }
@media (max-width: 48rem) {
  .passos-inscricao { grid-template-columns: 1fr; gap: 0; }
  .passos-inscricao li { flex-direction: row; align-items: center; border-top: 0; border-left: 3px solid var(--linha); padding: 0.4rem 0.75rem; }
  .passos-inscricao li.feito { border-left-color: var(--marinho); }
  .passos-inscricao li.atual { border-left-color: var(--ouro); }
  .passos-inscricao--compacto li:not(.atual) { display: none; }
}

/* Filtro de modalidade (passo 2) */
.filtro-modalidade { border: 0; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.filtro-modalidade legend { width: 100%; font-weight: 700; margin-bottom: 0.5rem; padding: 0; }
.filtro-modalidade label { position: relative; display: inline-flex; align-items: center; min-height: 2.75rem; padding: 0 1.1rem; border: 1px solid var(--linha); border-radius: 999px; font-weight: 600; cursor: pointer; background: #fff; }
.filtro-modalidade input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.filtro-modalidade label:has(input:checked) { background: var(--noite); border-color: var(--noite); color: #fff; }
.filtro-modalidade label:has(input:focus-visible) { outline: 2px solid var(--ouro); outline-offset: 2px; }
[data-turmas] [hidden] { display: none; }

/* Próxima turma a anunciar + recolha de interessados */
.anunciar { border: 1px dashed var(--marinho); border-radius: var(--raio-l); padding: clamp(1.25rem, 3vw, 1.75rem); background: var(--creme); }
.anunciar h3 { margin: 0.75rem 0 0.35rem; }
.anunciar > p { color: var(--tinta-2); margin: 0 0 1rem; }
.interesse__campos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); gap: 0.75rem; margin-bottom: 1rem; }
.interesse label { display: grid; gap: 0.3rem; font-size: 0.88rem; font-weight: 600; color: var(--tinta-2); }
.interesse small { font-weight: 400; color: var(--suave); }

/* Botão e atalho de WhatsApp */
.botao--whatsapp { background: var(--whatsapp); border-color: var(--whatsapp); color: #fff; gap: 0.5rem; }
.compra .botao--whatsapp { margin-top: 0.6rem; }
.whatsapp-flutuante { position: fixed; z-index: 40; right: max(1rem, env(safe-area-inset-right)); bottom: max(1rem, env(safe-area-inset-bottom)); display: inline-flex; align-items: center; gap: 0.5rem; min-height: 3rem; padding: 0 1.1rem; border-radius: 999px; background: var(--whatsapp); color: #fff; font-weight: 700; text-decoration: none; box-shadow: 0 6px 20px rgb(11 30 58 / 0.3); }
.whatsapp-flutuante .icone { width: 1.3rem; height: 1.3rem; }
@media (max-width: 40rem) {
  .whatsapp-flutuante { width: 3.25rem; height: 3.25rem; padding: 0; justify-content: center; }
  .whatsapp-flutuante span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
}
@media (hover: hover) and (pointer: fine) { .botao--whatsapp:hover, .whatsapp-flutuante:hover { background: #0a6332; border-color: #0a6332; color: #fff; } }

/* Áreas do catálogo (início) */
.areas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.area-cartao { position: relative; isolation: isolate; display: flex; align-items: flex-end; min-height: 20rem; border-radius: var(--raio-l); overflow: hidden; color: #fff; text-decoration: none; background: var(--noite); }
.area-cartao img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform 0.5s ease; }
.area-cartao::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgb(11 30 58 / 0.1) 20%, rgb(11 30 58 / 0.92) 75%); }
.area-cartao__corpo { display: grid; gap: 0.5rem; padding: 1.25rem; }
.area-cartao__icone { display: grid; place-items: center; width: 2.6rem; height: 2.6rem; border-radius: 4px; background: var(--ouro); color: var(--noite); }
.area-cartao strong { font-family: var(--titulo); font-size: 1.2rem; line-height: 1.2; }
.area-cartao__meta { font-size: 0.85rem; color: #c9d3de; }
@media (hover: hover) and (pointer: fine) { .area-cartao:hover img { transform: scale(1.05); } }
@media (prefers-reduced-motion: reduce) { .area-cartao img { transition: none; } }
@media (max-width: 64rem) { .areas { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 34rem) { .areas { grid-template-columns: 1fr; } .area-cartao { min-height: 14rem; } }

/* Áreas no catálogo 2027 */
.area-catalogo { margin-top: clamp(2.5rem, 5vw, 3.5rem); }
.area-catalogo__topo { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: 1.25rem; align-items: center; padding-bottom: 1rem; margin-bottom: 1.5rem; border-bottom: 2px solid var(--noite); }
.area-catalogo__topo img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--raio); }
.area-catalogo__topo h2 { display: flex; align-items: center; gap: 0.6rem; margin: 0 0 0.25rem; }
.area-catalogo__topo h2 .icone { flex-shrink: 0; width: 1.6rem; height: 1.6rem; color: var(--ouro-texto); }
.area-catalogo__topo p { margin: 0; color: var(--suave); }
.area-catalogo__topo .area-catalogo__num { font-family: var(--titulo); font-weight: 600; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.12em; color: var(--ouro-texto); }
@media (max-width: 34rem) { .area-catalogo__topo { grid-template-columns: 1fr; } .area-catalogo__topo img { aspect-ratio: 21 / 9; } }

/* Empresas: ofertas e pedido de proposta */
.ofertas { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: 1rem; }
.oferta { padding: 1.5rem; border: 1px solid var(--linha); border-top: 3px solid var(--ouro); border-radius: var(--raio); background: #fff; }
.oferta__icone { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 4px; background: var(--noite); color: var(--ouro-claro); }
.oferta h3 { margin: 1rem 0 0.4rem; font-size: 1.05rem; }
.oferta p { margin: 0; color: var(--tinta-2); font-size: 0.95rem; }
.proposta { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: start; }
.proposta__texto img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--raio-l); margin-top: 1.5rem; }
.proposta .formulario .botao--whatsapp { margin-top: 0.6rem; }
.lista-numerada { margin: 1rem 0 0; padding-left: 1.3rem; display: grid; gap: 0.5rem; color: var(--tinta-2); }
.lista-numerada li::marker { color: var(--ouro-texto); font-weight: 700; }
.heroi-foto--empresas { min-height: min(64vh, 38rem); }
@media (max-width: 52rem) { .proposta { grid-template-columns: 1fr; } }

/* Inscrição: passos 3 e 4 */
.inscricao-nova h1 { margin-bottom: 0.25rem; }
.inscricao-nova__grelha { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: start; }
.inscricao-nova__form h2 { font-size: 1.35rem; }
.inscricao-nova__resumo { position: sticky; top: 1rem; }
.inscricao-nova__resumo h2 { font-size: 1.4rem; margin: 0.25rem 0 0.6rem; }
.inscricao-nova__resumo .edicao__lista { margin: 1rem 0; }
.caixa--passo5 { margin: 1.5rem 0 1rem; background: var(--creme); }
.caixa--passo5 h3 { display: flex; align-items: center; gap: 0.5rem; margin: 0 0 0.4rem; }
.caixa--passo5 p { margin: 0; color: var(--tinta-2); }
@media (max-width: 52rem) { .inscricao-nova__grelha { grid-template-columns: 1fr; } .inscricao-nova__resumo { position: static; order: -1; } }
.compra__corpo .estado-turma { justify-self: start; align-self: flex-start; width: max-content; max-width: 100%; }

/* ---------- BLOKUS Summits ---------- */
.areas--tres { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 2rem; }
@media (max-width: 64rem) { .areas--tres { grid-template-columns: 1fr; } .areas--tres .area-cartao { min-height: 14rem; } }
.heroi-foto--summits { min-height: min(64vh, 38rem); }
.summits-nav { background: var(--noite-2); border-bottom: 1px solid rgb(255 255 255 / 0.08); }
.summits-nav__lista { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.25rem 1.5rem; padding-block: 0.5rem; }
.summits-nav a { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 2.75rem; color: #fff; font-weight: 600; text-decoration: none; }
.summits-nav .icone { color: var(--ouro); }
.formato__grelha { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; }
.formato__grelha--invertida .formato__foto { order: 2; }
.formato__foto { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--raio-l); }
.eventos-lista { list-style: none; margin: 1rem 0 0; padding: 0; display: grid; gap: 0.6rem; }
.eventos-lista li { display: grid; gap: 0.2rem; padding: 0.85rem 1rem; border: 1px solid var(--linha); border-left: 3px solid var(--ouro); border-radius: var(--raio); background: #fff; }
.eventos-lista span { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--suave); font-size: 0.9rem; }
.evento-cartao { display: flex; flex-direction: column; background: #fff; border-radius: var(--raio-l); overflow: hidden; color: var(--tinta); }
.evento-cartao__capa { position: relative; aspect-ratio: 16 / 10; background: var(--marinho); }
.evento-cartao__capa img { width: 100%; height: 100%; object-fit: cover; }
.evento-cartao__capa .selo { position: absolute; left: 0.75rem; bottom: 0.75rem; }
.evento-cartao__corpo { padding: 1.25rem; display: grid; gap: 0.4rem; }
.seccao--noite .evento-cartao h3, .evento-cartao h3 { margin: 0; color: var(--tinta); }
.evento-cartao p { margin: 0; color: var(--tinta-2); }
.evento-cartao__meta { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.9rem; }
.evento__imagem { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--raio-l); margin-bottom: 2rem; }
@media (max-width: 52rem) { .formato__grelha { grid-template-columns: 1fr; } .formato__grelha--invertida .formato__foto { order: 0; } }

/* ---------- Promoção (preço riscado + contagem até à data real de fim) ---------- */
.promocao { display: grid; gap: 0.35rem; margin: 0.75rem 0; padding: 0.75rem 0.9rem; border: 1px solid var(--azul-borda); border-left: 3px solid var(--ouro); border-radius: var(--raio); background: var(--azul-claro); color: var(--tinta); font-size: 0.9rem; }
.promocao del, .preco-promo del { color: var(--suave); font-weight: 500; }
.promocao__selo { display: inline-block; width: max-content; padding: 0.15rem 0.5rem; border-radius: 4px; background: var(--ouro); color: var(--noite); font-size: 0.72rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; vertical-align: middle; }
.promocao__contagem { font-weight: 700; color: var(--azul-escuro); }
.promocao__contagem time { font-variant-numeric: tabular-nums; }
.preco-promo { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0.1rem 0.5rem; }
.preco-promo del { font-size: 0.65em; }
.preco-promo del { font-size: 0.72em; }
.promocao__contagem--cartao { margin: 0.25rem 0 0; font-size: 0.85rem; }
.edicao__preco .preco-promo { font: inherit; color: inherit; text-transform: none; letter-spacing: inherit; }
.edicao__preco .preco-promo del { font-size: 0.6em; font-weight: 500; color: var(--suave); }
.edicao__preco .promocao__selo { color: var(--noite); }

/* Horários no telemóvel: o painel ocupa a largura do ecrã por baixo da barra, sem sair pelos lados */
@media (max-width: 48rem) {
  .anuncio { position: relative; z-index: 60; }
  .anuncio .horarios-topo { position: static; }
  .anuncio .horarios-topo__painel { left: max(1rem, env(safe-area-inset-left)); right: max(1rem, env(safe-area-inset-right)); top: calc(100% - 0.25rem); width: auto; max-height: calc(100dvh - 8rem); overflow-y: auto; overscroll-behavior: contain; }
}

/* Barra de anúncio no telemóvel: uma linha compacta (curso + data | horários + inscrever) */
@media (max-width: 48rem) {
  .anuncio__barra { flex-wrap: nowrap; gap: 0.75rem; min-height: 3.5rem; padding-block: 0.5rem; }
  .anuncio__texto { display: grid; gap: 0.1rem; min-width: 0; line-height: 1.25; }
  .anuncio__texto strong { font-family: var(--titulo); font-size: 0.95rem; letter-spacing: 0.03em; }
  .anuncio__texto span { font-size: 0.8rem; color: #b9c4d2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .anuncio__vagas { display: none; }
  .anuncio__acoes { gap: 0.5rem; flex-shrink: 0; }
  .anuncio .horarios-topo summary { width: 2.75rem; height: 2.75rem; min-height: 0; padding: 0; justify-content: center; border: 1px solid rgb(255 255 255 / 0.22); border-radius: 8px; }
  .anuncio .horarios-topo summary::after { display: none; }
  .anuncio .horarios-topo[open] summary { background: rgb(255 255 255 / 0.1); border-color: var(--ouro); }
  .anuncio .horarios-topo summary .icone { width: 1.2rem; height: 1.2rem; }
  .horarios-topo__rotulo { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .anuncio .anuncio__cta { min-height: 2.75rem; padding: 0 1rem; background: var(--ouro); border-color: var(--ouro); color: var(--noite); font-weight: 800; border-radius: 8px; }
}
.anuncio__data-curta { display: none; }
@media (max-width: 48rem) {
  .anuncio .anuncio__data { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .anuncio .anuncio__data-curta { display: block; }
}
@media (max-width: 22.5rem) {
  .anuncio__barra { gap: 0.5rem; }
  .anuncio .anuncio__cta { padding: 0 0.7rem; font-size: 0.82rem; }
  .anuncio .horarios-topo summary { width: 2.5rem; height: 2.5rem; }
}

/* ---------- Texto branco sobre laranja: laranja de fundo um tom mais escuro (#cc4e0b, 4,5:1 com branco) ---------- */
:root { --laranja-fundo: #cc4e0b; --laranja-fundo-hover: #a9400a; }
.botao, .anuncio .anuncio__cta { background: var(--laranja-fundo); border-color: var(--laranja-fundo); color: #fff; }
.selo--ouro, .pesquisa button, .estado-turma--abertas, .promocao__selo, .edicao__preco .promocao__selo,
.passos-inscricao li.atual .passos-inscricao__n, .area-cartao__icone { background: var(--laranja-fundo); color: #fff; }
.estado-turma--abertas::before { background: #fff; }
.botao--claro { background: transparent; border-color: rgb(255 255 255 / 0.55); color: #fff; }
.botao--contorno { background: transparent; }
.botao--branco { background: #fff; border-color: #fff; color: var(--noite); }
.botao--whatsapp { background: var(--whatsapp); border-color: var(--whatsapp); color: #fff; }
@media (hover: hover) and (pointer: fine) {
  .botao:hover, .anuncio .anuncio__cta:hover { background: var(--laranja-fundo-hover); border-color: var(--laranja-fundo-hover); color: #fff; }
  .botao--claro:hover { background: rgb(255 255 255 / 0.12); border-color: #fff; color: #fff; }
  .botao--branco:hover { background: #e9edf3; border-color: #e9edf3; color: var(--noite); }
  .botao--contorno:hover, .botao--contorno-ouro:hover, .carrossel__seta:not(:disabled):hover { background: var(--laranja-fundo); border-color: var(--laranja-fundo); color: #fff; }
  .botao--whatsapp:hover { background: #0a6332; border-color: #0a6332; color: #fff; }
}

/* ---------- Capa no telemóvel: só o título (o subtítulo e o sobretítulo ficam no computador) ---------- */
@media (max-width: 40rem) {
  .heroi-foto--inicio .sobretitulo, .heroi-foto--inicio .heroi-foto__texto { display: none; }
}

/* ---------- Turmas online: o azul do logótipo onde a presencial usa laranja ---------- */
:root { --azul-fundo: #1d3762; --azul-fundo-hover: #142847; --azul-fundo-claro: #e8eef8; }
.edicao[data-modalidade="online"] .botao,
.edicao[data-modalidade="online"] .estado-turma--abertas,
.edicao[data-modalidade="online"] .promocao__selo,
.edicao[data-modalidade="online"] .edicao__preco .promocao__selo {
  background: var(--azul-fundo); border-color: var(--azul-fundo); color: #fff;
}
.edicao[data-modalidade="online"] .vagas span { background: var(--azul-fundo); }
.edicao[data-modalidade="online"] .modalidade--online { background: var(--azul-fundo-claro); color: var(--azul-fundo); }
@media (hover: hover) and (pointer: fine) {
  .edicao[data-modalidade="online"] .botao:hover {
    background: var(--azul-fundo-hover); border-color: var(--azul-fundo-hover); color: #fff;
  }
}
