/* ═══════════════════════════════════════════════════════════════
   PEÇAS DE PÁGINA DO HANGAR 7  (nasceu como "template dos ambientes")
   ─────────────────────────────────────────────────────────────────
   ATENÇÃO AO NOME DO ARQUIVO — ELE ENVELHECEU
   "amb-templates" descreve de ONDE estas peças vieram, não o que elas
   são hoje. Este arquivo deixou de ser "o template dos ambientes" e
   virou a FOLHA DE PEÇAS DE QUALQUER PÁGINA DE BLOCOS: evento, curso,
   página avulsa criada no painel. Quem desenha com ele é o motor de
   blocos (assets/blocos/**), e assets/pagina-render.js o carrega
   sozinho em qualquer página que receba conteúdo publicado.

   NÃO RENOMEIE POR ENQUANTO. O arquivo é citado no <head> de 12
   páginas de ambiente, na página coringa /p/, na página de QA dos
   blocos e na lista CSS_MOTOR do pagina-render.js — renomear é uma
   varredura em todos esses lugares, e um esquecido quebra a página
   inteira sem aviso. Fica registrado aqui para o próximo não achar,
   pelo nome, que isto só serve para ambiente.
   ─────────────────────────────────────────────────────────────────
   Antes existiam TRÊS identidades visuais (impact / aurora / essence),
   com 3 conjuntos de botão (.ibtn/.abtn/.ecta) e 3 de tipografia
   (.iname/.aname/.ename). Era por isso que cada ambiente parecia de
   outro site. Agora existe UM template com 4 zonas:

     1. carta       — carta de vendas (hero + o que você encontra + prova)
     2. entregaveis — devocional, artigo, ministração, curso (só se houver)
     3. calendario  — próximos encontros calculados de `recorrencia`
     4. passo       — próximo passo por perfil (Jornada / Nave / Volts)

   A AUTONOMIA de cada ambiente vem da COR e do CONTEÚDO, não de um
   layout diferente. Tipografia (.display), botões (.btn/.btn-outline/
   .btn-lg), .wrap, .blk, .eyebrow e .muted são os do core (site.css) —
   aqui só existe o que o core não tem.

   Variáveis (definidas por assets/amb-render.js no <html>, ou pelo
   motor de blocos no próprio contêiner da página):
     --amb      cor de destaque do ambiente
     --amb-ink  texto que fica legível SOBRE a cor (contraste validado)
   Tons derivados por color-mix — nada de terceira cor escrita à mão.

   ═══════════════════════════════════════════════════════════════
   OS DOIS NOMES: .bl-x  e  .amb-x
   ─────────────────────────────────────────────────────────────────
   Estas peças nasceram para as páginas de AMBIENTE, mas hoje o MOTOR
   DE BLOCOS (assets/blocos/**) as usa em qualquer página — evento,
   curso, página avulsa criada no painel. O prefixo `amb-` virou
   mentira: descreve de onde a peça veio, não o que ela é.

   O conserto é o mais barato possível e está feito abaixo: cada
   seletor `.amb-x` ganhou um `.bl-x` na frente, SEM que uma única
   declaração fosse copiada. É de propósito que não existe um arquivo
   com as regras repetidas sob o nome novo — duas cópias divergem em
   três meses e ninguém descobre por qual delas a página quebrou.
   (a dívida está descrita em assets/blocos.css, no fim do arquivo)

   Resultado: as 12 páginas de ambiente continuam funcionando com o
   nome antigo, e os blocos podem usar o nome novo a partir de agora.
   Quando nenhum `.amb-*` sobrar no HTML, ele sai dos seletores.

   Onde um seletor tem DOIS nomes (ex.: `.amb-card .amb-capa`), a
   dupla é escrita com `:is(.bl-x, .amb-x)`. Sem isso, um cartão já
   migrado para `.bl-card` com uma capa ainda em `.amb-capa` deixaria
   de casar no meio da migração — e escrever as quatro combinações à
   mão seria justamente duplicar regra.

   DUAS EXCEÇÕES, DE PROPÓSITO: `.amb-chip` e `.amb-frase` NÃO ganham
   apelido. Os nomes `.bl-chip` e `.bl-frase` JÁ EXISTEM em
   assets/blocos.css, e descrevem outra coisa (um rótulo pequeno de
   lista e uma frase de destaque dentro do texto). Apelidar aqui
   criaria duas definições diferentes do mesmo nome em dois arquivos
   — exatamente o problema que este trabalho existe para evitar. Quem
   for migrar o chip do hero e a faixa-manifesto precisa primeiro
   escolher um nome livre em blocos.css.
   ═══════════════════════════════════════════════════════════════ */

#amb-root { display: block; }

/* Tons derivados da cor do ambiente. Um lugar só: se a cor mudar no
   /admin, tudo abaixo acompanha.
   Páginas de BLOCO não precisam entrar aqui: H7Blocos.Pagina calcula
   e escreve --amb-veu/--amb-nevoa/--amb-linha direto no contêiner que
   desenha (ver pintarCor em assets/blocos/nucleo.js), justamente para
   duas páginas de blocos poderem conviver sem brigar pelo <body>. */
/* A página de EVENTO monta com as MESMAS peças (cartões de data, e desde
   23/08/2026 os cartões de curso do ambiente dono) e nunca definiu `--amb`.
   Variável inexistente não é "cor padrão": `border-top: 3px solid var(--amb)`
   vira declaração inválida e o cartão sai SEM borda nenhuma; o selo, sem
   fundo. Aqui ela ganha um padrão NEUTRO — a tinta do site — para a página
   nunca depender de JS para ficar inteira. Quando o evento tem ambiente dono,
   assets/evento-render.js escreve a cor dele por cima (estilo em linha, que
   ganha deste seletor). */
#evt-root { --amb: var(--ink); }

#amb-root,
#evt-root,
body.amb {
  --amb-veu:   color-mix(in srgb, var(--amb) 15%, var(--bg));    /* fundo do hero */
  --amb-nevoa: color-mix(in srgb, var(--amb) 12%, #fff);         /* selos e chips */
  --amb-linha: color-mix(in srgb, var(--amb) 38%, #fff);         /* bordas finas */
}

/* ─────────────────────── peças compartilhadas ─────────────────── */

/* Botão na cor do ambiente — é o .btn do core só trocando a pintura. */
.bl-btn, .amb-btn { background: var(--amb); color: var(--amb-ink); border-color: transparent; }
.bl-btn:hover, .amb-btn:hover { filter: brightness(.93); color: var(--amb-ink); }

.bl-h2, .amb-h2 { font-size: clamp(1.75rem, 4vw, 2.9rem); margin-top: 14px; max-width: 760px; }
.bl-lead, .amb-lead { margin-top: 16px; max-width: 620px; font-size: 15.5px; line-height: 1.7; color: var(--muted); }
/* Desde a 3ª emenda do contrato o texto de bloco pode ser ARRAY: o `.amb-lead`
   passou a poder ser um <div> com vários <p> dentro, e não só um <p> solto. */
.amb-lead p + p { margin-top: 12px; }
.amb-quando-txt + .amb-quando-txt { margin-top: 10px; }

/* Selo pequeno (categoria do conteúdo): rótulo em mono com o ponto na cor do
   ambiente — sem a pílula. */
.bl-selo, .amb-selo {
  display: inline-flex; align-items: center; gap: 7px;
  color: var(--muted); font-family: var(--mono, "Geist Mono", monospace);
  font-size: 10px; font-weight: 500; letter-spacing: .2em; text-transform: uppercase;
}
.bl-selo::before, .amb-selo::before { content: ""; width: 6px; height: 6px; border-radius: 99px; background: var(--amb); }

.bl-acoes, .amb-acoes { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 26px; }

/* ───────────────────────── ZONA 1 · hero ──────────────────────── */

/* Sem o degradê da cor do ambiente: a lavagem de cor por trás do título era
   o traço mais "gerado" do hero. A cor do ambiente aparece onde é objeto —
   no carimbo, no LED do relógio, no botão. */
.bl-hero, .amb-hero {
  background: var(--bg);
  padding: 150px 0 0;
}
.bl-hero-grid, .amb-hero-grid {
  display: grid; grid-template-columns: 1.02fr .98fr; gap: 48px;
  align-items: center; padding-bottom: 44px;
}
/* .amb-chip fica sem apelido: `.bl-chip` já é outra peça em blocos.css
   (ver a nota "OS DOIS NOMES" no topo).
   Ele é um CARIMBO (.stamp em assets/hangar-pages.css) na cor do ambiente;
   aqui só o que o carimbo genérico não sabe: o logo cabe dentro. */
.stamp.amb-chip {
  display: inline-flex; align-items: center; gap: 10px; padding: 9px 14px 8px;
  margin: 6px 0 22px; max-width: 100%; white-space: normal; text-align: left; line-height: 1.3;
  /* a tinta é a cor do ambiente ESCURECIDA: o amarelo do Flight puro sobre o
     fundo claro dava 1,7:1 — carimbo que não se lê não é carimbo */
  --tinta: color-mix(in srgb, var(--amb) 55%, var(--ink));
}
.amb-chip img { height: 18px; width: auto; display: block; flex: none; }
@media (max-width: 720px) { .stamp.amb-chip { font-size: 11px; padding: 8px 12px 7px; --r: -2deg; } }

.bl-nome, .amb-nome { font-size: clamp(2.5rem, 7vw, 5.2rem); margin-top: 20px; }
.bl-assin, .amb-assin {
  font-family: "Geist", sans-serif; font-weight: 700;
  font-size: clamp(18px, 2.3vw, 24px); line-height: 1.3; letter-spacing: -.01em;
  margin-top: 18px; max-width: 560px;
}
.bl-desc, .amb-desc { margin-top: 14px; max-width: 560px; font-size: 15.5px; line-height: 1.7; color: var(--muted); }

/* Palavras-chave (campo `marquee`) e a linha "Encontros · Onde": as duas são
   a linha de fatos em mono do cabeçalho (.ph-strip, hangar-pages.css). Aqui
   só o respiro entre elas. */
.amb-tags { margin-top: 22px; }
.amb-fatos { margin-top: 18px; }

.bl-hero-foto, .amb-hero-foto { position: relative; margin: 0; }
.bl-hero-foto img, .amb-hero-foto img {
  width: 100%; aspect-ratio: 4/3.2; object-fit: cover; display: block;
  border-radius: 18px; box-shadow: 0 24px 50px -34px rgba(0, 0, 0, .4);
}
/* Call 10/09/2026 (00:24:58, A13) — "altura padrão e escurecimento do banner
   para substituir o divisor". A pista (.runway) saiu do cabeçalho das páginas
   de ambiente; quem marca o fim do hero agora é o pé da foto escurecendo. O
   degradê é só na faixa de baixo (não na foto inteira, para não apagar rosto
   de ninguém) e não capta clique. */
.amb-hero-foto::after {
  content: ""; position: absolute; inset: auto 0 0 0; height: 42%;
  border-radius: 0 0 18px 18px; pointer-events: none;
  background: linear-gradient(180deg, rgba(12, 12, 12, 0) 0%, rgba(12, 12, 12, .48) 100%);
}

/* ───────────── ZONA 1 · o que você encontra + prova ───────────── */

/* teto de largura: numa .wrap de 1720px as linhas ficariam largas
   demais para ler (título de um lado, texto do outro) */
.bl-rows, .amb-rows { margin-top: 40px; border-top: 1px solid var(--border); max-width: 1120px; }
/* sem o quadrado numerado: a lista não é sequência */
.bl-row, .amb-row {
  display: grid; grid-template-columns: 1fr 1.25fr; gap: 24px;
  align-items: start; padding: 28px 0; border-bottom: 1px solid var(--border);
}
.bl-row h3, .amb-row h3 { font-family: "Geist", sans-serif; font-weight: 800; text-transform: uppercase; font-size: clamp(18px, 2vw, 22px); letter-spacing: -.01em; line-height: 1.1; }
.bl-row p, .amb-row p { font-size: 14.5px; line-height: 1.7; color: var(--muted); }

/* Frase-manifesto: o momento de cor cheia da página.
   Sem apelido `.bl-frase`: o nome já é de outra peça em blocos.css
   (ver a nota "OS DOIS NOMES" no topo). */
.amb-frase { background: var(--amb); color: var(--amb-ink); border-radius: 28px; margin: 0 0 20px; }
.amb-frase .wrap { padding-top: 74px; padding-bottom: 74px; }
.amb-frase p {
  font-family: "Geist", sans-serif; font-weight: 800; letter-spacing: -.02em; line-height: 1.12;
  font-size: clamp(1.6rem, 4.2vw, 3.1rem); max-width: 900px;
}

.bl-gal, .amb-gal { display: grid; grid-template-columns: 1.2fr .8fr; gap: 16px; }
.bl-gal img, .amb-gal img {
  width: 100%; height: 100%; min-height: 220px; max-height: 400px;
  object-fit: cover; border-radius: 20px; display: block;
}

/* ────────────────────── ZONA 2 · entregáveis ──────────────────── */

.bl-cards, .amb-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; margin-top: 34px; }
.bl-card, .amb-card {
  display: flex; flex-direction: column; background: #fff; border-radius: 14px;
  padding: 26px 24px; border: 1px solid var(--border);
  color: var(--ink); transition: border-color .2s;
}
a.bl-card:hover, a.amb-card:hover { border-color: var(--ink); }
/* imagem do entregável — opcional, o cartão funciona sem ela.
   Sem sangria negativa: assim ela nunca briga com o padding do cartão. */
:is(.bl-card, .amb-card) :is(.bl-capa, .amb-capa) {
  display: block; width: 100%; max-width: 100%; margin: 0 0 16px;
  aspect-ratio: 16/9; object-fit: cover; border-radius: 12px;
}
.bl-card h3, .amb-card h3 { font-family: "Geist", sans-serif; font-weight: 700; font-size: 18px; letter-spacing: -.01em; margin-top: 14px; }
.bl-card p, .amb-card p { margin-top: 9px; font-size: 14px; line-height: 1.65; color: var(--muted); }
:is(.bl-card, .amb-card) :is(.bl-mais, .amb-mais) {
  margin-top: auto; padding-top: 18px; font-size: 12px; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--ink);
}
:is(.bl-card, .amb-card) :is(.bl-mais, .amb-mais)::after { content: " →"; color: var(--amb); }
:is(.bl-card, .amb-card) :is(.bl-quando, .amb-quando) { margin-top: 10px; font-size: 12px; color: var(--muted); }

/* ────────────────────── ZONA 3 · calendário ─────────────────────
   As datas são linhas do painel de partidas (.board, assets/hangar-pages.css).
   Aqui só o que é deste template: o texto acima e a largura do painel vazio. */

.bl-quando-txt, .amb-quando-txt { margin-top: 18px; font-size: 15px; line-height: 1.6; }
.bl-quando-txt b, .amb-quando-txt b { font-weight: 700; }
.bl-datas--so-agenda, .amb-datas--so-agenda { max-width: 640px; }
.board-empty p + p { margin-top: 8px; }

/* ───────────────────── ZONA 4 · próximo passo ───────────────────
   A tira por fio da home (.vgrid/.vcard, site.css). Aqui só o perfil em mono
   acima do título e a ação embaixo. */
.amb-passos { margin-top: 34px; }
.amb-passos .vcard > div { display: flex; flex-direction: column; min-width: 0; }
.amb-passos .vcard .tk-k { display: block; margin-bottom: 10px; }
.amb-passos .vcard .rt-x {
  display: block; margin-top: 14px; font-size: 12px; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--ink);
}
.amb-passos .vcard:hover .rt-x { text-decoration: underline; text-underline-offset: 4px; }

.bl-convite, .amb-convite {
  position: relative; overflow: hidden;
  background: var(--ink); color: #fff; border-radius: 24px; padding: 52px 44px 150px; margin-top: 22px;
}
/* o texto e os botões ficam por cima do avião (.swoosh, site.css) */
.bl-convite > :not(.swoosh), .amb-convite > :not(.swoosh) { position: relative; z-index: 3; }
@media (min-width: 1024px) { .bl-convite, .amb-convite { padding-bottom: 60px; } }
.bl-convite h3, .amb-convite h3 { font-family: "Geist", sans-serif; font-weight: 800; font-size: clamp(21px, 2.9vw, 30px); letter-spacing: -.02em; }
.bl-convite p, .amb-convite p { margin-top: 14px; max-width: 640px; font-size: 15px; line-height: 1.7; color: rgba(255, 255, 255, .74); }

/* ═══════════════════════════════════════════════════════════════
   AS ZONAS DO CONTRATO (docs/design/CONTRATO-AMBIENTE.md)
   ─────────────────────────────────────────────────────────────────
   Peças novas, escritas em 24/08/2026 quando a página de ambiente
   passou de 5 para 10 zonas. Elas NÃO ganham o apelido `.bl-*` de
   propósito: só o assets/amb-render.js as usa hoje, e o motor de
   blocos tem peças próprias para texto, citação, FAQ e vídeo. Criar
   um `.bl-conta` que ninguém desenha é justamente a duplicação que a
   nota no topo deste arquivo existe para evitar. No dia em que um
   bloco precisar da mesma peça, ela ganha o apelido aqui, sem cópia.

   Tudo abaixo se pinta com --amb/--amb-ink, que o amb-render.js já
   validou em 4.5:1 — nenhuma cor nova é escrita à mão.
   ═══════════════════════════════════════════════════════════════ */

/* ── ZONA 1 · a linha de acolhida, embaixo dos botões do hero ──── */
.amb-acolhida {
  margin-top: 22px; max-width: 560px;
  font-size: 14.5px; line-height: 1.7; color: var(--muted);
  padding-left: 16px; border-left: 1px solid var(--amb-linha);
}

/* ── ZONA 2 · o próximo encontro, com cronômetro ────────────────
   O relógio é o PAINEL EM PLACAS de assets/hangar-pages.css (.amb-conta e
   .amb-conta__*): chapa escura, casa por placa, LED na cor do ambiente.
   Aqui só a medida. */
.amb-conta { margin-top: 26px; max-width: 820px; }

/* A nota logo abaixo do cronômetro: informação crítica e literal ("o
   check-in abre 10 minutos antes"). Fica com a cor do ambiente na borda
   para não se perder no meio do texto de apoio. */
.amb-nota {
  margin-top: 18px; max-width: 620px;
  padding: 12px 16px; border-left: 1px solid var(--amb);
  background: var(--amb-nevoa); border-radius: 4px 12px 12px 4px;
  font-size: 14.5px; line-height: 1.6; color: var(--ink);
}

/* ── ZONA 3 · seções de texto corrido ───────────────────────────
   Medida de leitura curta de propósito: é o único lugar da página
   com vários parágrafos seguidos. */
.amb-texto { margin-top: 18px; max-width: 680px; }
.amb-texto p { font-size: 16px; line-height: 1.8; color: var(--ink); }
.amb-texto p + p { margin-top: 16px; }

.amb-cit {
  margin: 26px 0 0; max-width: 680px; padding: 22px 26px;
  background: #fff; border-radius: 4px 12px 12px 4px;
  border-left: 1px solid var(--amb);
}
.amb-cit p {
  font-family: "Geist", sans-serif; font-weight: 700; letter-spacing: -.01em;
  font-size: clamp(17px, 2.2vw, 21px); line-height: 1.5; color: var(--ink);
}
.amb-cit cite {
  display: block; margin-top: 12px; font-style: normal;
  font-size: 11.5px; font-weight: 700; letter-spacing: .16em;
  text-transform: uppercase; color: var(--muted);
}

.amb-lista { margin-top: 24px; max-width: 680px; list-style: none; }
.amb-lista li {
  position: relative; padding: 12px 0 12px 30px;
  font-size: 15px; line-height: 1.7; color: var(--ink);
  border-bottom: 1px solid var(--border);
}
.amb-lista li::before {
  content: ""; position: absolute; left: 4px; top: 21px;
  width: 8px; height: 8px; border-radius: 99px; background: var(--amb);
}

/* ── ZONA 4 · manifesto — a faixa de cor cheia ─────────────────── */
/* Reunião 09/09/2026 (01:00:22) — Klaus: "o bloco do manifesto está pegando até o
   final aqui; blocar ele e adicionar a margem do jeito certo, não ficar inteiro
   assim". A faixa deixou de encostar nas bordas da tela: ela agora tem a mesma
   margem lateral do conteúdo (20px no telefone, 40px acima de 768 — os mesmos
   números do .wrap) e nunca passa da largura do resto da página. */
.amb-manifesto {
  background: var(--amb); color: var(--amb-ink);
  border-radius: 28px; margin: 36px 20px 32px;
  max-width: 1720px;
}
@media (min-width: 768px) { .amb-manifesto { margin: 44px 40px 40px; } }
@media (min-width: 1800px) { .amb-manifesto { margin-left: auto; margin-right: auto; } }
.amb-manifesto .wrap { padding-top: 68px; padding-bottom: 68px; }
/* o rótulo da faixa segue a tinta do ambiente, nunca o cinza do site: cinza
   sobre o amarelo do Flight dava 3,2:1 */
.amb-manifesto .eyebrow { color: var(--amb-ink); }
.amb-manifesto__t {
  font-family: "Geist", sans-serif; font-weight: 800; letter-spacing: -.02em;
  line-height: 1.12; font-size: clamp(1.6rem, 4.2vw, 3.1rem); max-width: 900px;
}
.amb-manifesto__l { margin-top: 26px; max-width: 720px; }
.amb-manifesto__l p { font-size: clamp(15.5px, 1.9vw, 18px); line-height: 1.65; }
.amb-manifesto__l p + p { margin-top: 12px; }

/* ── ZONA 7 · para você que… ────────────────────────────────────
   Lista de identificação: itens grandes, um por linha, cada um com o
   traço da cor do ambiente. */
.amb-check {
  margin-top: 30px; max-width: 820px; list-style: none;
  display: grid; gap: 0; border-top: 1px solid var(--border);
}
.amb-check li {
  position: relative; border-bottom: 1px solid var(--border);
  padding: 16px 12px 16px 40px;
  font-size: 15.5px; line-height: 1.6; color: var(--ink);
}
.amb-check li::before {
  content: ""; position: absolute; left: 8px; top: 50%;
  width: 14px; height: 8px; margin-top: -6px;
  border-left: 2.5px solid var(--amb); border-bottom: 2.5px solid var(--amb);
  transform: rotate(-45deg);
}

/* O botão de UM cartão (`itens[].cta`). Ele reusa o `.amb-mais` do cartão
   de conteúdo — o que falta é só desfazer o que o navegador põe num
   <button> (borda, fundo, fonte do sistema, texto centralizado) e garantir
   o alvo de toque de 44px, que o `.amb-mais` de texto não precisava ter. */
.amb-card .amb-maisb, .amb-card .amb-maisl {
  align-self: flex-start; display: inline-flex; align-items: center;
  min-height: 44px; text-align: left; cursor: pointer;
}
.amb-card .amb-maisb {
  border: 0; background: transparent; padding: 18px 0 0;
  font-family: inherit; color: var(--ink);
}
.amb-card .amb-maisb:hover, .amb-card .amb-maisl:hover { color: var(--amb); }

/* O fecho da zona 7 — o lugar onde a página baixa a guarda. */
.amb-fecho { margin-top: 26px; max-width: 680px; }
.amb-fecho p { font-size: 16px; line-height: 1.75; color: var(--ink); }
.amb-fecho p + p { margin-top: 12px; }

/* O kicker dentro da caixa escura do convite final: o `.eyebrow` do core
   é cinza-sobre-claro e sumiria ali dentro. */
.bl-convite .eyebrow, .amb-convite .eyebrow { color: rgba(255, 255, 255, .62); }
/* a linha depois dos botões do convite ("Venha voar com a gente!") */
.amb-convite__fecho { margin-top: 22px; }
.amb-convite__fecho p {
  margin: 0; max-width: 640px; font-size: 15px; line-height: 1.7;
  color: rgba(255, 255, 255, .9); font-weight: 600;
}

/* ── ZONA 6 · vídeo ─────────────────────────────────────────────
   O quadro é o `.video.yt` do core (site.css). Aqui só o que ele não
   sabe: que a fachada agora é um <button> — e botão traz borda, fundo
   e fonte do sistema, que apagariam o desenho do play. */
.amb-video { max-width: 980px; margin-top: 30px; }
.amb-video .play {
  border: 0; background: transparent; padding: 0; width: 100%; height: 100%;
  cursor: pointer; color: inherit;
}
.amb-videolegenda { margin-top: 16px; max-width: 680px; font-size: 14.5px; line-height: 1.7; }

/* ── ZONA 9 · perguntas frequentes ──────────────────────────────
   <details> nativo: abre sem JavaScript e já é navegável por teclado.
   O único cuidado é a área de toque — 44px de altura mínima. */
.amb-faq { margin-top: 30px; max-width: 820px; border-top: 1px solid var(--border); }
.amb-faq details { border-bottom: 1px solid var(--border); }
.amb-faq summary {
  list-style: none; cursor: pointer; position: relative;
  display: flex; align-items: center; min-height: 44px;
  padding: 18px 44px 18px 0;
  font-family: "Geist", sans-serif; font-weight: 700; font-size: 16px;
  line-height: 1.45; letter-spacing: -.01em; color: var(--ink);
}
.amb-faq summary::-webkit-details-marker { display: none; }
.amb-faq summary::after {
  content: ""; position: absolute; right: 10px; top: 50%;
  width: 9px; height: 9px; margin-top: -6px;
  border-right: 2px solid var(--amb); border-bottom: 2px solid var(--amb);
  transform: rotate(45deg); transition: transform .2s;
}
.amb-faq details[open] summary::after { transform: rotate(-135deg); margin-top: -2px; }
.amb-faq details > p {
  padding: 0 8px 22px 0; max-width: 680px;
  font-size: 15px; line-height: 1.75; color: var(--muted);
}

/* ── A BARRA FIXA DO CELULAR ────────────────────────────────────
   Ela e a `.toolbar` do site NUNCA aparecem juntas: duas barras fixas
   no pé de um celular comem a tela e transformam o rodapé num painel
   de controle. Enquanto o amb-render.js mantém `body.amb-barra-on`, a
   toolbar sai; a barra some no convite final e a toolbar volta.
   O porquê da escolha está por extenso em assets/amb-render.js,
   em `zonaBarra`.

   No desktop ela não existe: lá o botão do próximo encontro cabe na
   tela junto com o conteúdo, e uma barra colada seria só ruído. */
.amb-barra { display: none; }

@media (max-width: 720px) {
  /* Fundo ESCURO, e não a cor do ambiente: o botão principal é `.amb-btn`,
     que é pintado com a cor do ambiente — cor sobre a mesma cor apagava o
     botão, que foi o que apareceu no primeiro teste do Love My City. Escura
     ela também herda a leitura da `.toolbar` que sai do lugar dela: mesma
     posição, mesmo raio, mesma sombra. */
  .amb-barra {
    position: fixed; left: 10px; right: 10px; bottom: 12px; z-index: 80;
    display: flex; align-items: center; gap: 12px;
    background: #161616f2; color: #fff;
    -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    border: 1px solid #2c2c2c;
    border-radius: 18px; padding: 10px 10px 10px 16px;
    box-shadow: 0 22px 60px -18px rgba(0, 0, 0, .55);
  }
  .amb-barra[hidden] { display: none; }
  /* Com dois ou mais botões a barra empilha: espremer dois alvos ao lado do
     texto em 390 px daria dois botões pequenos demais para o polegar — e é o
     polegar que usa esta barra. */
  .amb-barra--muitos { flex-direction: column; align-items: stretch; padding: 12px 14px; }
  .amb-barra__acoes { display: flex; gap: 8px; flex: none; }
  .amb-barra--muitos .amb-barra__acoes { margin-top: 10px; }
  .amb-barra--muitos .amb-barra__acoes .btn { flex: 1 1 0; justify-content: center; min-width: 0; }
  .amb-barra .btn-outline {
    border-color: #4a4a4a; color: #f3efe6; background: transparent;
  }
  .amb-barra .btn-outline:hover { border-color: #8a8a8a; color: #fff; }
  .amb-barra__txt { min-width: 0; flex: 1 1 auto; line-height: 1.3; }
  .amb-barra__txt b {
    display: block; font-size: 10.5px; font-weight: 700;
    letter-spacing: .14em; text-transform: uppercase; color: #b9b9b9;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .amb-barra__txt span {
    display: block; margin-top: 3px; font-size: 14px; font-weight: 700;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  /* a barra é ação, não leitura: o alvo de toque não desce de 44px */
  .amb-barra .btn {
    flex: none; width: auto; min-height: 44px; padding: 12px 16px;
    font-size: 13.5px; white-space: nowrap;
  }
  body.amb-barra-on .toolbar { display: none; }
}

/* ───────────────────────────── mobile ─────────────────────────── */

@media (max-width: 980px) {
  .bl-hero-grid, .amb-hero-grid { grid-template-columns: 1fr; gap: 32px; }
  .bl-gal, .amb-gal { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .bl-hero, .amb-hero { padding-top: 132px; }
  .bl-hero-grid, .amb-hero-grid { padding-bottom: 44px; }
  .bl-row, .amb-row { grid-template-columns: 1fr; gap: 10px; padding: 22px 0; }
  .amb-frase { border-radius: 20px; }
  .amb-frase .wrap { padding-top: 52px; padding-bottom: 52px; }
  .bl-convite, .amb-convite { padding: 36px 24px; border-radius: 20px; }
  .bl-acoes .btn, .amb-acoes .btn { width: 100%; }
  /* no celular a linha de fatos empilha um fato por linha */
  .amb-fatos > span { width: 100%; }
  .amb-fatos > span + span::before { display: none; }
  .amb-manifesto { border-radius: 20px; }
  .amb-manifesto .wrap { padding-top: 48px; padding-bottom: 48px; }
  .amb-cit { padding: 18px 18px 18px 20px; }
  .amb-check li { padding: 14px 8px 14px 34px; }
  .amb-check li::before { left: 4px; }
}

/* ── PÁGINA DE EVENTO · cabeçalho .ph ────────────────────────────────
   `section.blk{padding:84px 0}` (site.css) ganha de `.ph` por
   especificidade; aqui a página de evento garante o topo do cabeçalho. */
#evt-root section.blk.ph { padding: 150px 0 0; }
@media (max-width: 767px) { #evt-root section.blk.ph { padding-top: 128px; } }
#evt-root .ticket { margin-top: 18px; }

/* ── divisão discreta entre seções de texto (reunião 09/09/2026, 01:00:22) ──
   O fio mora no .wrap para acompanhar a largura do conteúdo, e não a da tela. */
.amb-sec--div > .wrap { border-top: 1px solid var(--border); padding-top: 76px; }
@media (max-width: 767px) { .amb-sec--div > .wrap { padding-top: 52px; } }

/* ═══════════════════════════════════════════════════════════════════════════
   AUDITORIA PRÉ-PUBLICAÇÃO — 18/09/2026 (Klaus)
   Os apontamentos da página de ambiente. Cada bloco abaixo cita o pedido e
   vale para os 12 ambientes ("os ajustes aqui vão para todos").
   ═══════════════════════════════════════════════════════════════════════════ */

/* "Transformar em duas colunas: título, texto e botão 40% | contador 60%" —
   o cronômetro sai de baixo do título e passa a dividir a linha com ele. */
.amb-encontro-grid { display: grid; gap: 28px; align-items: center; }
@media (min-width: 900px) {
  .amb-encontro-grid { grid-template-columns: 40fr 60fr; gap: 40px; }
}
.amb-encontro-conta { min-width: 0; }
.amb-encontro-txt > .amb-acoes { margin-top: 26px; }

/* "Centralizar e colocar 80%" — o manifesto. A faixa continua com a margem do
   conteúdo; o que muda é o miolo: 80% da largura, centralizado, e o texto
   (título, parágrafos e sobrancelha) alinhado ao centro. */
.amb-manifesto .wrap { text-align: center; }
.amb-manifesto__t { margin-left: auto; margin-right: auto; max-width: 80%; }
.amb-manifesto__l { margin-left: auto; margin-right: auto; max-width: 80%; }
@media (max-width: 767px) {
  .amb-manifesto__t, .amb-manifesto__l { max-width: 100%; }
}

/* "Aumentar espaçamento entre os blocos" — as seções de texto da página de
   ambiente nasciam com padding-top:24px (inline no render), o que colava o
   fim de um bloco no começo do outro. O respiro volta para o mesmo da casa. */
#amb-root section.blk[style] { padding-top: 64px !important; }
@media (max-width: 767px) { #amb-root section.blk[style] { padding-top: 44px !important; } }
#amb-root section.blk[data-zona="convite"] { padding-top: 0 !important; }

/* "Colocar esses botões no topo do bloco, ao lado do titulo: textos | botões" */
.amb-cal-head { display: grid; gap: 18px; }
@media (min-width: 900px) {
  .amb-cal-head { grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 32px; }
  .amb-cal-head .amb-acoes { margin-top: 0; justify-content: flex-end; }
}
.amb-cal-head__txt { min-width: 0; }
.amb-cal-head + .board { margin-top: 26px; }

/* "Transformar em duas colunas também: textos | botões empilhados" (convite) e
   "o fundo de 'garantir meu convite' precisa ser branco, porque é o botão
   principal" — sobre a chapa preta do convite a cor do ambiente sumia. */
.amb-convite-grid { display: grid; gap: 26px; }
@media (min-width: 900px) {
  .amb-convite-grid { grid-template-columns: minmax(0, 1fr) minmax(240px, auto); gap: 44px; align-items: start; }
  .amb-convite-acoes { margin-top: 0; flex-direction: column; align-items: stretch; }
  .amb-convite-acoes .btn { width: 100%; justify-content: center; }
}
.amb-convite-txt { min-width: 0; }
.amb-convite .amb-btn { background: #fff; color: var(--ink); border-color: #fff; }
.amb-convite .amb-btn:hover { background: #ececec; border-color: #ececec; color: var(--ink); }
