/* ============================================================================
   BIMBLASTER Design System — C4 · CAMADA DE SITE (v1.0 · ago/2026)

   COMPLEMENTA bimblaster-ds-c4.css. Nunca substitui: os tokens, o reset, a
   base tipográfica, os botões e os componentes de landing page vivem lá.
   Este arquivo só existe para o que a LP NÃO precisa: cabeçalho, navegação,
   logotipo, rodapé de site, listagem de artigos, corpo de artigo, paginação
   e trilha de navegação.

   POR QUE ARQUIVO SEPARADO. As LPs recebem o DS INLINE no HTML (build-lp.sh).
   Somar CSS de blog ao blob inline cobraria bytes de render-blocking em toda
   LP para regras que nenhuma delas usa. O tema carrega os dois arquivos como
   <link> no <head>, cacheáveis e compartilhados entre páginas.

   ORDEM DE CARGA OBRIGATÓRIA:
     1. bimblaster-ds-c4.css   (tokens · reset · base · componentes de LP)
     2. bimblaster-ds-c4-site.css  (este arquivo)
   Sem @layer (armadilha 2). A precedência vem da ordem, como no resto do DS.

   PROCEDÊNCIA DE CADA BLOCO:
     [PREVIEW] extraído de site/ds2-concepts/d-mercado/preview.html (= /ds/4/),
               que é a referência visual aprovada. Preservado como estava.
     [NOVO]    não existe no preview. Derivado dos tokens e do conceito.md.

   CONTRATO DE ESPECIFICIDADE: componentes = `.bb-algo` (0,1,0). Onde a regra
   disputa com o reset `.bb :where(a){color:inherit}` (0,1,1) ou
   `.bb :where(img){max-width:100%}` (0,1,1), usa-se DUAS classes (armadilha 12).

   REGRA DE OURO C4 mantida: âmbar só em CTA de conversão, sempre com rótulo em
   tinta petróleo. Nada nesta camada usa âmbar além do botão do cabeçalho.
   ============================================================================ */

/* ============================================================================
   1. ACESSIBILIDADE E ESQUELETO
   ============================================================================ */

/* [NOVO] Salto para o conteúdo. Visível apenas com teclado. */
.bb-skip {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
}
.bb .bb-skip:focus {
  left: 12px;
  top: 12px;
  width: auto;
  padding: 12px 18px;
  background: var(--bb-petro-950);
  color: var(--bb-white);
  border-radius: var(--bb-radius-sm);
  font: 600 var(--bb-text-small)/1 var(--bb-font-head);
  text-decoration: none;
}

/* [NOVO] Texto só para leitor de tela. */
.bb-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* [NOVO] Páginas curtas (404, busca sem resultado) não podem deixar uma faixa
   branca abaixo do rodapé. A solução aqui NÃO é esticar o <main> com flex: se
   o main crescesse, a sobra ficaria DENTRO dele, entre a última seção e o
   rodapé, e uma faixa branca entre o CTA petróleo e o rodapé petróleo lê como
   defeito. Pintando o corpo de petróleo, a sobra cai depois do rodapé e se
   confunde com ele. */
.bb-shell {
  /* O reset do DS é `.bb *`, que NÃO alcança o próprio elemento que carrega a
     classe .bb. No tema quem carrega a classe é o <body>, então a margem
     padrão de 8px do navegador sobrevivia e aparecia como uma moldura escura
     em volta da página inteira, revelando o fundo petróleo abaixo. */
  margin: 0;
  min-height: 100vh;
  background: var(--bb-petro-950);
}

/* O corpo é petróleo de propósito (ver acima), então o <main> precisa carregar
   a superfície clara padrão. Sem isso, qualquer seção sem fundo próprio deixa o
   petróleo do corpo aparecer e o texto fica escuro sobre escuro. Foi o que
   aconteceu na home assim que a primeira seção deixou de ser um hero: o título
   "Fique ligado nos nossos últimos artigos" ficou ilegível. */
.bb-shell > main { background: var(--bb-white); }

/* ============================================================================
   2. CABEÇALHO, LOGOTIPO E NAVEGAÇÃO   [PREVIEW]
   ============================================================================ */

.bb-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(250, 248, 244, .9);
  backdrop-filter: blur(14px) saturate(1.4);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
  border-bottom: 1px solid var(--bb-paper-200);
}
.bb-header__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  min-height: 70px;
}

/* Logotipo: monograma + wordmark, ambos SVG inline (sem requisição extra). */
.bb-logo {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  flex-shrink: 0;
}
/* 2 classes: o reset `.bb :where(svg){max-width:100%}` disputa a largura. */
.bb .bb-logo__mark { width: 38px; height: 38px; }
.bb .bb-logo__word { height: 20px; width: auto; }

/* Navegação de desktop. Some abaixo de 860px, onde entra o disclosure. */
.bb-nav {
  display: none;
  gap: 30px;
}
.bb .bb-nav a {
  font: 500 0.9375rem/1 var(--bb-font-body);
  color: var(--bb-ink-700);
  text-decoration: none;
  padding: 8px 0;
}
.bb .bb-nav a:hover { color: var(--bb-petro-700); }
/* Página corrente: filete petróleo sob o item, vocabulário de índice. */
.bb .bb-nav a[aria-current="page"] {
  color: var(--bb-petro-700);
  box-shadow: inset 0 -2px 0 var(--bb-petro-500);
}
@media (min-width: 860px) { .bb-nav { display: flex; } }

.bb-header .bb-btn--sm { white-space: nowrap; }

/* [NOVO] Agrupa o CTA e o botão de menu na ponta direita do cabeçalho. */
.bb-header__actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

/* Rótulo do CTA do cabeçalho encurta em tela estreita.   [PREVIEW] */
.bb-lbl-sm { display: inline; }
.bb-lbl-lg { display: none; }
@media (min-width: 560px) {
  .bb-lbl-sm { display: none; }
  .bb-lbl-lg { display: inline; }
}

/* ---------------------------------------------------------------------------
   Menu de telas estreitas   [NOVO]
   Disclosure nativo com <details>. Sem JavaScript, coerente com a nota de
   implementação do conceito ("componentes nativos e CSS puro").
   --------------------------------------------------------------------------- */
.bb-menu { position: relative; }
@media (min-width: 860px) { .bb-menu { display: none; } }

.bb-menu > summary {
  list-style: none;
  cursor: pointer;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius-sm);
  background: var(--bb-white);
}
.bb-menu > summary::-webkit-details-marker { display: none; }

/* Ícone desenhado em CSS: três filetes petróleo. */
.bb-menu__bars {
  position: relative;
  display: block;
  width: 20px;
  height: 2px;
  background: var(--bb-petro-800);
  border-radius: 1px;
}
.bb-menu__bars::before,
.bb-menu__bars::after {
  content: "";
  position: absolute;
  left: 0;
  width: 20px;
  height: 2px;
  background: var(--bb-petro-800);
  border-radius: 1px;
}
.bb-menu__bars::before { top: -6px; }
.bb-menu__bars::after { top: 6px; }
.bb-menu[open] > summary .bb-menu__bars { background: transparent; }
.bb-menu[open] > summary .bb-menu__bars::before { top: 0; rotate: 45deg; }
.bb-menu[open] > summary .bb-menu__bars::after { top: 0; rotate: -45deg; }

.bb-menu__panel {
  position: absolute;
  right: 0;
  top: calc(100% + 12px);
  min-width: 232px;
  display: grid;
  gap: 2px;
  padding: 10px;
  background: var(--bb-white);
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius);
  box-shadow: var(--bb-shadow-md);
}
.bb .bb-menu__panel a {
  display: block;
  padding: 12px 14px;
  border-radius: var(--bb-radius-sm);
  font: 500 var(--bb-text-body)/1.3 var(--bb-font-body);
  color: var(--bb-ink-700);
  text-decoration: none;
}
.bb .bb-menu__panel a:hover {
  background: var(--bb-petro-50);
  color: var(--bb-petro-700);
}
.bb .bb-menu__panel a[aria-current="page"] {
  color: var(--bb-petro-700);
  background: var(--bb-petro-50);
}
/* A lista dentro do painel é vertical, ao contrário da .bb-nav de desktop. */
.bb-menu__list { display: grid; }

/* ============================================================================
   3. HERO DE SITE
   ============================================================================ */

/* [PREVIEW] Duas colunas a partir de 1000px. */
.bb-hero__grid {
  display: grid;
  gap: clamp(36px, 4vw, 56px);
  align-items: start;
}
@media (min-width: 1000px) {
  .bb-hero__grid { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); }
}

/* [PREVIEW] Superfície clara alternativa de seção. */
.bb-section--paper { background: var(--bb-paper-50); }

/* [PREVIEW] Contexto escuro: inverte rótulos de botão e microcopy.
   Existe no CSS de LP apenas acoplado a .bb-cta-final; aqui vira utilitário
   independente, como no preview, para servir qualquer bloco petróleo. */
.bb-on-dark .bb-btn--secondary {
  color: var(--bb-white);
  box-shadow: inset 0 0 0 2px rgba(196, 220, 228, .5);
}
.bb-on-dark .bb-btn--secondary:hover {
  background: var(--bb-white);
  color: var(--bb-petro-900);
  box-shadow: inset 0 0 0 2px var(--bb-white);
  transform: translateY(-2px);
}
.bb .bb-on-dark .bb-btn--link { color: var(--bb-petro-300); }
.bb .bb-on-dark .bb-cta-note { color: var(--bb-mist-200); }

/* [PREVIEW] Botão compacto (cabeçalho e cards). */
.bb-btn--sm {
  font-size: 0.9375rem;
  padding: 12px 18px;
  border-radius: var(--bb-radius-sm);
}

/* ============================================================================
   4. CARD DE DESTAQUE E DEPOIMENTO   [PREVIEW]
   ============================================================================ */

/* Card em superfície petróleo. Usado no card de oferta da home. */
.bb-card--feature {
  border-color: var(--bb-petro-700);
  background:
    radial-gradient(24rem 15rem at 100% -32%, rgba(26, 130, 153, .40), transparent 62%),
    linear-gradient(150deg, var(--bb-petro-900) 0%, var(--bb-petro-950) 100%);
  box-shadow: var(--bb-shadow-lg);
}
.bb-card--feature h3 { color: var(--bb-white); }
.bb-card--feature p { color: var(--bb-mist-200); }
.bb-card--feature .bb-badge {
  color: var(--bb-petro-300);
  border-color: rgba(116, 201, 220, .36);
  background: rgba(116, 201, 220, .12);
}
.bb-card--feature .bb-btn { margin-top: 20px; }

/* Depoimento: filete petróleo à esquerda, avatar de iniciais em gradiente. */
.bb-quote { max-width: 860px; margin-inline: auto; }
.bb-quote blockquote {
  font: 600 clamp(1.375rem, 1.2rem + 0.8vw, 1.875rem)/1.4 var(--bb-font-head);
  letter-spacing: -0.012em;
  color: var(--bb-ink-900);
  padding-left: clamp(20px, 3vw, 32px);
  border-left: 3px solid var(--bb-petro-500);
}
.bb-quote figcaption {
  margin-top: 26px;
  display: flex;
  align-items: center;
  gap: 14px;
  padding-left: clamp(20px, 3vw, 32px);
}
.bb-quote__avatar {
  width: 52px;
  height: 52px;
  flex-shrink: 0;
  border-radius: var(--bb-radius-sm);
  display: grid;
  place-items: center;
  font: 700 1rem/1 var(--bb-font-head);
  color: var(--bb-white);
  background: linear-gradient(140deg, var(--bb-petro-700), var(--bb-petro-950));
}
.bb-quote__who strong {
  display: block;
  font: 600 1rem/1.3 var(--bb-font-body);
  color: var(--bb-ink-900);
}
.bb-quote__who span {
  font-size: var(--bb-text-small);
  color: var(--bb-ink-500);
}

/* ============================================================================
   5. MOLDURA DE IMAGEM   [NOVO]
   Resposta ao risco 4 do conceito: todo render e print de Revit tem fundo
   branco frio ou cinza e destoa sobre o papel quente. Toda imagem de conteúdo
   recebe superfície branca própria e filete de papel, virando "prancha".
   ============================================================================ */
.bb-frame {
  background: var(--bb-white);
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius-sm);
  overflow: hidden;
}
.bb .bb-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ============================================================================
   6. CARD DE PRODUTO DA HOME   [NOVO]
   Deriva de .bb-card. Media em moldura, altura de imagem fixa por proporção
   para não gerar CLS, e link fixado na base (mesmo padrão de .bb-team__card).
   ============================================================================ */
.bb-prodcard {
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
}
.bb-prodcard__media {
  aspect-ratio: 16 / 9;
  background: var(--bb-white);
  border-bottom: 1px solid var(--bb-paper-200);
}
.bb .bb-prodcard__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: var(--bb-white);
  padding: 14px;
}
.bb-prodcard__body {
  display: flex;
  flex-direction: column;
  flex: 1 0 auto;
  padding: 24px 22px 26px;
}
.bb-prodcard__body p {
  font-size: var(--bb-text-small);
  line-height: 1.65;
  margin-top: 8px;
}
.bb-prodcard .bb-btn--link { margin-top: auto; padding-top: 18px; }

/* ============================================================================
   7. LISTAGEM DE ARTIGOS   [NOVO]
   Vocabulário de ficha técnica: metadados em monoespaçada (conceito §4),
   categoria como marcador quadrado, título em Archivo.
   ============================================================================ */
.bb-postgrid {
  display: grid;
  gap: 24px 20px;
  grid-template-columns: repeat(auto-fill, minmax(288px, 1fr));
}

.bb-postcard {
  display: flex;
  flex-direction: column;
  background: var(--bb-white);
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius);
  overflow: hidden;
  transition: box-shadow .2s ease, transform .2s ease, border-color .2s ease;
}
.bb-postcard:hover {
  box-shadow: var(--bb-shadow-md);
  transform: translateY(-3px);
  border-color: var(--bb-petro-100);
}
/* É um <a> ou um <span>, por isso precisa de display explícito. */
.bb-postcard__media {
  display: block;
  aspect-ratio: 16 / 9;
  background: var(--bb-paper-100);
  border-bottom: 1px solid var(--bb-paper-200);
}
.bb .bb-postcard__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* Sem imagem destacada: campo de prancha com o monograma implícito. */
.bb-postcard__media--empty {
  background:
    radial-gradient(18rem 10rem at 80% -20%, rgba(26, 130, 153, .30), transparent 64%),
    linear-gradient(150deg, var(--bb-petro-800) 0%, var(--bb-petro-950) 100%);
}
.bb-postcard__body {
  display: flex;
  flex-direction: column;
  flex: 1 0 auto;
  padding: 22px 22px 24px;
}
.bb-postcard__title {
  font: 600 1.1875rem/1.32 var(--bb-font-head);
  letter-spacing: -0.012em;
  color: var(--bb-ink-900);
  margin-bottom: 10px;
  text-wrap: balance;
}
.bb .bb-postcard__title a { color: inherit; text-decoration: none; }
.bb .bb-postcard__title a:hover { color: var(--bb-petro-700); }
.bb-postcard__excerpt {
  font-size: var(--bb-text-small);
  line-height: 1.65;
  color: var(--bb-ink-700);
}
/* Ordem do card, igual à do tema antigo: metadados acima do título, link de
   leitura sempre colado na base, para os cards da grelha terminarem alinhados. */
.bb-postcard .bb-postmeta { margin-bottom: 12px; }
.bb-postcard__more { margin-top: auto; padding-top: 18px; }

/* Metadados: mono, caixa alta discreta. Serve card, artigo e arquivo. */
.bb-postmeta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 12px;
  font: 500 0.75rem/1.4 var(--bb-font-mono);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--bb-ink-500);
}
.bb-postmeta__cat {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--bb-petro-600);
}
.bb-postmeta__cat::before {
  content: "";
  width: 8px;
  height: 8px;
  border: 2px solid var(--bb-petro-500);
  border-radius: 2px;
}
.bb .bb-postmeta a { color: inherit; text-decoration: none; }
.bb .bb-postmeta a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ============================================================================
   8. CABEÇALHO DE PÁGINA E TRILHA   [NOVO]
   ============================================================================ */
.bb-pagehead {
  background:
    radial-gradient(40rem 22rem at 88% -34%, rgba(26, 130, 153, .16), transparent 64%),
    linear-gradient(180deg, var(--bb-paper-50) 0%, var(--bb-white) 100%);
  border-bottom: 1px solid var(--bb-paper-200);
  padding-block: clamp(2.5rem, 1.8rem + 3vw, 4.5rem);
}
.bb-pagehead h1 { max-width: 22ch; }
.bb-pagehead__lead {
  font-size: var(--bb-text-lead);
  line-height: 1.6;
  color: var(--bb-ink-700);
  max-width: 58ch;
  margin-top: 18px;
}
.bb-pagehead .bb-postmeta { margin-top: 22px; }

.bb-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font: 500 0.75rem/1.4 var(--bb-font-mono);
  letter-spacing: .04em;
  color: var(--bb-ink-500);
  margin-bottom: 18px;
}
.bb .bb-breadcrumb a { color: var(--bb-petro-700); text-decoration: none; }
.bb .bb-breadcrumb a:hover { text-decoration: underline; text-underline-offset: 3px; }
.bb-breadcrumb__sep { color: var(--bb-paper-200); }

/* ============================================================================
   9. CORPO DE ARTIGO   [NOVO]
   Aplicado ao HTML que vem do editor, por isso estiliza elementos nus dentro
   do escopo .bb-prose. Medida de leitura 72ch, entrelinha 1,75.
   ============================================================================ */
.bb-prose {
  max-width: 72ch;
  margin-inline: auto;
  font-size: var(--bb-text-body);
  line-height: 1.75;
  color: var(--bb-ink-700);
}
.bb-prose > * + * { margin-top: 1.15em; }
.bb-prose h2 {
  font-size: var(--bb-text-h2);
  margin-top: 2em;
  padding-top: 0.6em;
  border-top: 2px solid var(--bb-petro-500);
}
.bb-prose h3 { font-size: var(--bb-text-h3); margin-top: 1.8em; }
.bb-prose h4 {
  font: 600 1.0625rem/1.4 var(--bb-font-head);
  color: var(--bb-ink-900);
  margin-top: 1.6em;
}

/* Títulos rebaixados por bb_normaliza_titulos() (functions.php): a TAG muda
   para consertar o esboço do documento (um único h1 por página, sem saltos),
   e a classe bb-como-hN devolve a aparência do nível ORIGINAL, para a
   correção ser só de estrutura. Duas classes no seletor vencem as regras por
   elemento acima (0,2,0 contra 0,1,1). Em uso nas páginas 90 e 84, cujo h1
   interno vem do shortcode do plugin RGPD. */
.bb-prose .bb-como-h1 {
  font: 800 var(--bb-text-h1)/1.2 var(--bb-font-head);
  letter-spacing: -0.018em;
  color: var(--bb-ink-900);
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.bb-prose > * + .bb-como-h1 { margin-top: 1.15em; }
.bb-prose .bb-como-h2 {
  font: 700 var(--bb-text-h2)/1.2 var(--bb-font-head);
  letter-spacing: -0.014em;
  color: var(--bb-ink-900);
  margin-top: 2em;
  padding-top: 0.6em;
  border-top: 2px solid var(--bb-petro-500);
}
.bb-prose .bb-como-h3 {
  font: 600 var(--bb-text-h3)/1.2 var(--bb-font-head);
  letter-spacing: -0.008em;
  color: var(--bb-ink-900);
  margin-top: 1.8em;
  padding-top: 0;
  border-top: 0;
}
.bb-prose .bb-como-h4 {
  font: 600 1.0625rem/1.4 var(--bb-font-head);
  color: var(--bb-ink-900);
  margin-top: 1.6em;
  padding-top: 0;
  border-top: 0;
}
.bb .bb-prose a {
  color: var(--bb-petro-700);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.bb .bb-prose a:hover { color: var(--bb-petro-600); }
.bb-prose ul, .bb-prose ol { padding-left: 1.4em; }
.bb-prose ul { list-style: disc; }
.bb-prose ol { list-style: decimal; }
.bb-prose li::marker { color: var(--bb-petro-600); }
.bb-prose li + li { margin-top: 0.5em; }
.bb-prose strong { color: var(--bb-ink-900); font-weight: 600; }

/* Imagem de artigo em moldura (risco 4 do conceito). */
.bb .bb-prose img {
  width: 100%;
  height: auto;
  background: var(--bb-white);
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius-sm);
}
.bb-prose figure { margin-block: 1.8em; }
.bb-prose figcaption {
  margin-top: 10px;
  font: 500 var(--bb-text-small)/1.5 var(--bb-font-body);
  color: var(--bb-ink-500);
  text-align: center;
}
.bb-prose blockquote {
  padding-left: clamp(18px, 2.5vw, 26px);
  border-left: 3px solid var(--bb-petro-500);
  font: 500 var(--bb-text-lead)/1.55 var(--bb-font-body);
  color: var(--bb-ink-900);
}
.bb-prose code {
  font: 500 0.9em/1.5 var(--bb-font-mono);
  background: var(--bb-paper-100);
  border: 1px solid var(--bb-paper-200);
  border-radius: 4px;
  padding: 2px 6px;
  color: var(--bb-petro-800);
}
.bb-prose pre {
  background: var(--bb-petro-950);
  color: var(--bb-mist-200);
  border-radius: var(--bb-radius);
  padding: 20px 22px;
  overflow-x: auto;
  font: 500 0.875rem/1.7 var(--bb-font-mono);
}
.bb-prose pre code { background: none; border: 0; padding: 0; color: inherit; }
.bb-prose hr {
  border: 0;
  border-top: 1px solid var(--bb-paper-200);
  margin-block: 2.4em;
}
/* Tabela larga rola dentro do próprio contêiner, nunca a página. */
.bb-prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--bb-text-small);
}
.bb-prose th, .bb-prose td {
  border: 1px solid var(--bb-paper-200);
  padding: 10px 14px;
  text-align: left;
}
.bb-prose th {
  background: var(--bb-paper-100);
  font: 600 var(--bb-text-small)/1.4 var(--bb-font-body);
  color: var(--bb-ink-900);
}
.bb-scroll-x { overflow-x: auto; }

/* Vídeo e iframe responsivos. */
.bb-prose iframe {
  width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  border: 0;
  border-radius: var(--bb-radius);
}

/* [NOVO] Banner de consultoria injetado no meio do artigo.
   Recebe a mesma moldura das demais imagens, porque a arte tem fundo próprio
   e destoaria do papel quente sem filete. */
.bb-inline-banner {
  margin-block: 2.4em;
  max-width: none;
}
.bb .bb-inline-banner img {
  width: 100%;
  border-radius: var(--bb-radius);
  border: 1px solid var(--bb-paper-200);
}

/* ============================================================================
   10. PAGINAÇÃO   [NOVO]
   Numeração em monoespaçada, coerente com .bb-step e .bb-postmeta.
   ============================================================================ */
.bb-pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-top: 48px;
}
.bb .bb-pagination .page-numbers {
  display: grid;
  place-items: center;
  min-width: 44px;
  height: 44px;
  padding-inline: 12px;
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius-sm);
  background: var(--bb-white);
  font: 600 0.875rem/1 var(--bb-font-mono);
  color: var(--bb-petro-700);
  text-decoration: none;
  transition: background .18s ease, border-color .18s ease, color .18s ease;
}
.bb .bb-pagination .page-numbers:hover {
  background: var(--bb-petro-50);
  border-color: var(--bb-petro-100);
}
.bb .bb-pagination .page-numbers.current {
  background: var(--bb-petro-900);
  border-color: var(--bb-petro-900);
  color: var(--bb-white);
}
.bb .bb-pagination .page-numbers.dots {
  border-color: transparent;
  background: none;
  color: var(--bb-ink-500);
}

/* ============================================================================
   11. RODAPÉ DE SITE   [PREVIEW]
   O .bb-footer do arquivo base é a versão curta e centralizada das LPs.
   Aqui ele vira o rodapé completo do preview: alinhado à esquerda, com
   lockup do logotipo, links e linha legal separada por filete.
   ============================================================================ */
.bb-footer__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  text-align: left;
}
.bb-footer__links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 24px;
}
.bb-footer__legal {
  margin-top: 26px;
  padding-top: 20px;
  border-top: 1px solid rgba(196, 220, 228, .16);
  text-align: left;
}
/* Anula o padding curto da versão de LP quando o rodapé é o de site. */
.bb-footer:has(.bb-footer__row) { padding-block: 48px 34px; }
.bb .bb-footer a { color: var(--bb-mist-200); text-decoration: none; }
.bb .bb-footer a:hover { text-decoration: underline; text-underline-offset: 4px; }
.bb-footer__lockup { display: inline-flex; align-items: center; gap: 12px; }

/* ============================================================================
   12. FORMULÁRIO (Contact Form 7 e busca)   [NOVO]
   ============================================================================ */
.bb-field {
  display: block;
  width: 100%;
  font: 400 var(--bb-text-body)/1.5 var(--bb-font-body);
  color: var(--bb-ink-900);
  background: var(--bb-white);
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius-sm);
  padding: 13px 15px;
}
.bb-field:focus { border-color: var(--bb-petro-500); outline: none; box-shadow: 0 0 0 3px rgba(26, 130, 153, .18); }
.bb-searchform { display: flex; gap: 10px; flex-wrap: wrap; }
.bb-searchform .bb-field { flex: 1 1 220px; }

/* ============================================================================
   14. CORREÇÕES DE PLUGIN DE TERCEIRO   [NOVO]
   ============================================================================ */

/* Barra de cookies do plugin wp_rgpd.
   O CSS dela é inline e hardcoded, e não declara font-family nenhuma. Sob o
   tema antigo ela herdava a Poppins da regra global `* { font-family }` do
   wpavenger. Sem essa regra global, a barra cai no serifado padrão do
   navegador e aparece em Times, exatamente o mesmo defeito já visto nas LPs.
   Dois seletores porque o plugin imprime o texto em elementos variados. */
#myModalrgpd,
#myModalrgpd * {
  font-family: var(--bb-font-body) !important;
}

/* ============================================================================
   15. TIRA DE IMAGENS DA HOME   [NOVO]
   As três linhas do repeater blocos_slider da página 300 têm título e texto
   vazios: são três imagens e nada mais. O tema antigo montava um carrossel em
   JavaScript. Aqui a mesma sequência vira uma tira com rolagem por encaixe,
   em CSS puro, sem script e sem legenda inventada.
   ============================================================================ */
.bb-slider {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(min(100%, 460px), 1fr);
  gap: 20px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
  padding-bottom: 12px;
}
.bb-slider__item {
  scroll-snap-align: center;
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius);
  background: var(--bb-white);
  overflow: hidden;
}
.bb .bb-slider__item img {
  display: block;
  width: 100%;
  height: auto;
}
.bb-slider__item h3,
.bb-slider__item p { padding: 18px 20px 0; }
.bb-slider__item > *:last-child { margin-bottom: 0; }
.bb-slider:focus-visible {
  outline: 3px solid var(--bb-petro-500);
  outline-offset: 4px;
}

/* ============================================================================
   16. UTILITÁRIOS DE SITE
   ============================================================================ */
/* Separador de título dentro de uma grelha (bloco tipo 1 do repeater). */
.bb-grid-full { grid-column: 1 / -1; }
/* Retrato dentro de bloco centralizado: o componente do DS trava a largura em
   160px, mas sem margem automática a imagem encosta na esquerda. */
.bb-center .bb-author__photo { display: block; margin-inline: auto; }
.bb-mt-8 { margin-top: 64px; }
.bb-stack > * + * { margin-top: 20px; }
.bb-flow-actions { display: flex; flex-wrap: wrap; gap: 14px; }
/* Fecho de bloco fora de uma .bb-section (ex.: a paginação da home, que vive
   num container solto entre duas seções e precisa do próprio respiro). */
.bb-pb-section { padding-bottom: var(--bb-space-section); }

/* ============================================================================
   17. CARROSSEL DE DESTAQUES DA HOME
   ----------------------------------------------------------------------------
   Faixa petróleo de largura total, primeira seção depois do cabeçalho.
   Três decisões de engenharia, todas anti-CLS:

   1. Os slides ficam empilhados na MESMA célula de grade (grid-area 1/1).
      A altura da faixa é a do slide mais alto e sai do layout CSS, antes de
      qualquer JavaScript. Nada salta quando o script carrega.
   2. O primeiro slide já chega do servidor com .is-active: sem JS, a home
      mostra o slide um, estático e completo. A troca é só crossfade de
      opacity + visibility (visibility tira os slides ocultos da ordem de
      tabulação e da árvore de acessibilidade, sem JS gerenciar tabindex).
   3. Os controles são inúteis sem JS, então ficam visibility:hidden até o
      script marcar .bb-carousel--js. visibility, e não display, porque o
      espaço deles precisa estar reservado desde o primeiro paint.

   Âmbar segue exclusivo de CTA de conversão: o dot ativo e o foco no escuro
   usam branco, e o botão do slide de artigo é o secundário on-dark.
   ============================================================================ */
.bb-carousel {
  color: var(--bb-white);
  background:
    radial-gradient(44rem 26rem at 78% -22%, rgba(26,130,153,.36), transparent 62%),
    radial-gradient(34rem 22rem at 6% 118%, rgba(13,85,104,.5), transparent 60%),
    linear-gradient(160deg, var(--bb-petro-900) 0%, var(--bb-petro-950) 100%);
}
.bb-carousel :focus-visible { outline-color: var(--bb-white); }

.bb-carousel__track { display: grid; }
.bb-carousel__slide {
  grid-area: 1 / 1;
  opacity: 0;
  visibility: hidden;
  transition: opacity .55s ease, visibility .55s;
}
.bb-carousel__slide.is-active { opacity: 1; visibility: visible; }
@media (prefers-reduced-motion: reduce) {
  .bb-carousel__slide { transition: none; }
}

.bb-carousel__grid {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  gap: 32px 56px;
  align-items: center;
  padding-block: clamp(2.75rem, 1.9rem + 3.5vw, 4.5rem) clamp(1.5rem, 1rem + 2vw, 2.5rem);
}
@media (max-width: 860px) {
  .bb-carousel__grid { grid-template-columns: 1fr; }
}

/* Slide só de texto (sem imagem): coluna única centralizada. A altura da
   faixa não muda, porque ela é a do slide mais alto da pilha (os slides com
   imagem); o conteúdo deste se centra verticalmente nesse espaço. */
.bb-carousel__grid--solo {
  grid-template-columns: 1fr;
  height: 100%;
  align-content: center;
}
.bb .bb-carousel__grid--solo .bb-carousel__title { max-width: 26ch; }
.bb-carousel__grid--solo .bb-carousel__lead { max-width: 56ch; }

.bb-carousel .bb-eyebrow { color: var(--bb-petro-300); }
.bb-carousel .bb-eyebrow::before { border-color: var(--bb-petro-400); }
.bb .bb-carousel__title {
  color: var(--bb-white);
  font-size: var(--bb-text-h2);
  letter-spacing: -0.016em;
  max-width: 22ch;
}
.bb-carousel__lead {
  color: var(--bb-mist-200);
  font-size: var(--bb-text-lead);
  line-height: 1.55;
  max-width: 52ch;
  margin-top: 16px;
}
.bb-carousel__slide .bb-btn { margin-top: 28px; }

.bb-carousel__media { max-width: 520px; }
.bb .bb-carousel__media img {
  width: 100%;
  height: auto;
  border-radius: var(--bb-radius-lg);
  box-shadow: var(--bb-shadow-lg);
}
@media (max-width: 860px) {
  .bb-carousel__media { max-width: 440px; }
}

/* Imagem em retrato (mockup de capa de produto). Os slides dividem a mesma
   área do grid, então a faixa toda tem a altura do mais alto: uma capa em pé
   ocupando os 520px da coluna esticaria o carrossel inteiro em cerca de 300px.
   O limite menor mantém a faixa na altura de antes e ainda deixa a capa
   legível. Centralizada na própria coluna no desktop, porque sobra espaço ao
   lado; no empilhamento mobile ela volta a alinhar com o texto. */
.bb-carousel__media--retrato {
  max-width: 300px;
  margin-inline: auto;
}
@media (max-width: 860px) {
  .bb-carousel__media--retrato {
    max-width: 240px;
    margin-inline: 0;
  }
}

/* Controles: setas, dots e pausa. Altura reservada mesmo sem JS. */
.bb-carousel__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding-bottom: 26px;
  visibility: hidden;
}
.bb-carousel--js .bb-carousel__controls { visibility: visible; }

.bb-carousel__arrow {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--bb-mist-200);
  cursor: pointer;
  transition: background .2s ease, color .2s ease;
}
.bb-carousel__arrow:hover {
  background: rgba(196,220,228,.16);
  color: var(--bb-white);
}
.bb-carousel__arrow svg { width: 18px; height: 18px; }

.bb-carousel__dot {
  display: grid;
  place-items: center;
  width: 28px;
  height: 44px; /* alvo de toque confortável; o ponto é só o desenho */
  border: 0;
  background: transparent;
  cursor: pointer;
  padding: 0;
}
.bb-carousel__dot::before {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(196,220,228,.42);
  transition: background .2s ease, transform .2s ease;
}
.bb-carousel__dot:hover::before { background: var(--bb-mist-200); }
.bb-carousel__dot[aria-current="true"]::before {
  background: var(--bb-white);
  transform: scale(1.25);
}

/* ----------------------------------------------------------------------------
   Variante --frases: carrossel claro de frases curtas (home, seção 3).
   Substitui a antiga tira de JPGs do avenger-slider; a frase é texto real,
   transcrita das imagens (ver comentário no front-page.php). Fundo papel
   para alternar com a faixa petróleo do carrossel de destaques.
   ---------------------------------------------------------------------------- */
.bb-carousel--frases {
  color: var(--bb-ink-700);
  background: linear-gradient(180deg, var(--bb-paper-50) 0%, var(--bb-white) 100%);
}
.bb-carousel--frases :focus-visible { outline-color: var(--bb-petro-500); }
.bb-carousel--frases .bb-carousel__grid {
  padding-block: clamp(2.5rem, 1.8rem + 3vw, 4rem) clamp(1rem, .75rem + 1vw, 1.5rem);
}
.bb .bb-carousel__frase {
  font-family: var(--bb-font-head);
  font-size: var(--bb-text-h2);
  font-weight: 700;
  letter-spacing: -0.014em;
  line-height: 1.3;
  color: var(--bb-petro-950);
  max-width: 26ch;
  margin-inline: auto;
}
.bb-carousel--frases .bb-carousel__arrow { color: var(--bb-ink-500); }
.bb-carousel--frases .bb-carousel__arrow:hover {
  background: var(--bb-petro-50);
  color: var(--bb-petro-900);
}
.bb-carousel--frases .bb-carousel__dot::before { background: rgba(18,34,42,.18); }
.bb-carousel--frases .bb-carousel__dot:hover::before { background: var(--bb-mist-400); }
.bb-carousel--frases .bb-carousel__dot[aria-current="true"]::before { background: var(--bb-petro-800); }

/* ============================================================================
   [NOVO 2026-08-13] COMENTÁRIOS: AVATAR DA LISTA
   Regra única e inevitável do comments.php: o gravatar de 40px que o
   wp_list_comments imprime dentro de .bb-prose não é imagem de artigo, e sem
   este ajuste a moldura .bb .bb-prose img (width 100%) o esticaria à largura
   da coluna. Seletor (0,3,1) para vencer os (0,2,1) da moldura.
   ============================================================================ */
.bb .bb-prose img.avatar {
  width: 40px;
  height: 40px;
}

/* ============================================================================
   [NOVO 2026-08-13] ÍCONES DE REDES SOCIAIS DO RODAPÉ
   Glifos oficiais como SVG inline (fill=currentColor), sem Font Awesome:
   o tema eliminou as três cargas dele e quatro ícones não justificam voltar.
   Monocromático claro sobre o petróleo do rodapé; branco no hover/foco.
   Área de toque de 44px (WCAG 2.5.8). 2 classes no link: o reset
   .bb :where(a) disputa a cor.
   ============================================================================ */
.bb-social {
  display: flex;
  gap: 12px;
  margin-top: 28px;
}
.bb .bb-social__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  color: var(--bb-mist-200);
  border: 1px solid color-mix(in oklch, var(--bb-mist-400), transparent 60%);
  transition: color 0.15s ease, border-color 0.15s ease;
}
.bb .bb-social__link:hover,
.bb .bb-social__link:focus-visible {
  color: var(--bb-white);
  border-color: var(--bb-white);
}
.bb .bb-social__link svg {
  width: 20px;
  height: 20px;
  display: block;
}

/* ============================================================================
   [NOVO 2026-08-13] FORMULÁRIO DE CONTATO (Contact Form 7, página /contato/)
   O CF7 emite <p><label> Texto<br><span.wpcf7-form-control-wrap><input>
   e traz CSS próprio com cores cruas (azul #00a0d2, verde #46b450, vermelho
   #dc3232) que não pertencem ao C4. Este bloco veste esse markup com a MESMA
   receita do .bb-field da seção 12 (que não pode ser editada: appends são
   blocos fechados no fim do arquivo), reescrita aqui com os mesmos tokens.

   Decisões:
   · Escopo .bb .wpcf7-form: o form de comentários e o de busca não têm essa
     classe, e as LPs nem carregam este arquivo. Nada vaza.
   · Base dos campos em :where() (especificidade 0,2,0) para os estados
     :hover/:focus/.wpcf7-not-valid empilharem de forma determinística.
   · Botão de envio em ÂMBAR (receita do .bb .bb-btn--primary): /contato/ tem
     um único CTA e o envio inicia uma conversa comercial com o negócio; é
     conversão, ao contrário do envio de comentário (que ficou .bb-btn--
     secondary no comments.php pela mesma régua). Rótulo em tinta petróleo,
     nunca branco.
   · Feedback: positivo é petróleo (form.sent), erro é --bb-alert-600; sem
     verde de sucesso e sem âmbar fora do CTA, regras do C4.
   ============================================================================ */

/* Wrappers <p> do CF7: ritmo próprio do formulário. */
.bb .wpcf7-form p { margin: 0; }
.bb .wpcf7-form p + p { margin-top: 20px; }
.bb .wpcf7-form p:has(.wpcf7-submit) { margin-top: 28px; }

/* Rótulo acima do campo. */
.bb .wpcf7-form label {
  font: 600 var(--bb-text-small)/1.4 var(--bb-font-head);
  color: var(--bb-ink-900);
}

/* O wrap inline vira bloco: dá o respiro entre rótulo e campo e ancora o
   .wpcf7-not-valid-tip que o plugin injeta dentro dele. */
.bb .wpcf7-form .wpcf7-form-control-wrap {
  display: block;
  margin-top: 8px;
}

/* Campos — receita do .bb-field (seção 12), tokens idênticos. */
.bb .wpcf7-form :where(input.wpcf7-form-control:not(.wpcf7-submit), textarea.wpcf7-form-control) {
  display: block;
  width: 100%;
  font: 400 var(--bb-text-body)/1.5 var(--bb-font-body);
  color: var(--bb-ink-900);
  background: var(--bb-white);
  border: 1px solid var(--bb-paper-200);
  border-radius: var(--bb-radius-sm);
  padding: 13px 15px;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.bb .wpcf7-form :where(input.wpcf7-form-control:not(.wpcf7-submit), textarea.wpcf7-form-control):hover {
  border-color: var(--bb-mist-400);
}
.bb .wpcf7-form :where(input.wpcf7-form-control:not(.wpcf7-submit), textarea.wpcf7-form-control):focus {
  border-color: var(--bb-petro-500);
  outline: none;
  box-shadow: 0 0 0 3px rgba(26, 130, 153, .18);
}
.bb .wpcf7-form textarea.wpcf7-form-control {
  resize: vertical;
  min-height: 150px;
}

/* Campo reprovado na validação: mesma anatomia, anel de alerta. */
.bb .wpcf7-form .wpcf7-not-valid { border-color: var(--bb-alert-600); }
.bb .wpcf7-form .wpcf7-not-valid:focus {
  border-color: var(--bb-alert-600);
  box-shadow: 0 0 0 3px rgba(179, 38, 30, .14);
}
.bb .wpcf7-form .wpcf7-not-valid-tip {
  color: var(--bb-alert-600);
  font: 400 var(--bb-text-small)/1.4 var(--bb-font-body);
  margin-top: 6px;
}

/* Botão de envio — receita do .bb .bb-btn--primary. <input> não tem filhos,
   então inline-block no lugar do inline-flex do .bb-btn. */
.bb .wpcf7-form .wpcf7-submit {
  display: inline-block;
  font: 600 1.0625rem/1 var(--bb-font-head);
  padding: 17px 28px;
  border: 0;
  border-radius: var(--bb-radius);
  cursor: pointer;
  background: linear-gradient(180deg, var(--bb-amber-400) 0%, var(--bb-amber-500) 78%);
  color: var(--bb-petro-950);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.5), var(--bb-shadow-cta);
  transition: background .18s ease, box-shadow .18s ease, transform .18s ease;
}
.bb .wpcf7-form .wpcf7-submit:hover {
  background: linear-gradient(180deg, var(--bb-amber-500) 0%, var(--bb-amber-600) 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34), 0 2px 6px rgba(120,72,0,.26), 0 12px 26px rgba(180,110,0,.34);
  transform: translateY(-2px);
}
.bb .wpcf7-form .wpcf7-submit:active { transform: translateY(0); }

/* Spinner do CF7 no lugar do cinza #23282d do plugin. */
.bb .wpcf7-form .wpcf7-spinner {
  background-color: var(--bb-petro-700);
  margin: 0 14px;
}

/* Mensagem de resposta: cartão do DS no lugar da borda crua de 2px.
   A forma vem daqui; a cor por estado precisa de .wpcf7-form.<estado> (0,4,0)
   para vencer os (0,3,1) do styles.css do plugin. Os estados init/resetting/
   submitting continuam ocultos pelo display:none do próprio plugin. */
.bb .wpcf7-form .wpcf7-response-output {
  margin: 24px 0 0;
  padding: 14px 18px;
  border: 1px solid var(--bb-mist-400);
  border-radius: var(--bb-radius-sm);
  background: var(--bb-paper-50);
  color: var(--bb-ink-900);
  font: 400 var(--bb-text-small)/1.5 var(--bb-font-body);
}
.bb .wpcf7-form.sent .wpcf7-response-output {
  border-color: var(--bb-petro-300);
  background: var(--bb-petro-50);
  color: var(--bb-petro-900);
}
.bb .wpcf7-form.invalid .wpcf7-response-output,
.bb .wpcf7-form.unaccepted .wpcf7-response-output,
.bb .wpcf7-form.payment-required .wpcf7-response-output,
.bb .wpcf7-form.failed .wpcf7-response-output,
.bb .wpcf7-form.aborted .wpcf7-response-output,
.bb .wpcf7-form.spam .wpcf7-response-output {
  border-color: var(--bb-alert-600);
  background: rgba(179, 38, 30, .05);
  color: var(--bb-ink-900);
}

/* ============================================================================
   [NOVO 2026-08-15] ARTIGOS ELEMENTOR: NEUTRALIZAÇÃO DO KIT DEFAULT (#6EC1E4)
   Três artigos antigos foram construídos no Elementor (bim-4d, vinculos-no-
   revit, notas-chave-revit) e herdam as cores globais de fábrica do kit
   default (post 104): primary #6EC1E4 (ciano, 2,02:1 sobre branco), accent
   #61CE70 (verde), text #7A7A7A. Nenhuma pertence ao C4. Correção pela pele,
   sem tocar no conteúdo dos posts nem no kit:

   1. As variáveis globais são redeclaradas em body.bb (0,1,1). O kit as
      define em .elementor-kit-104 (0,1,0) NO MESMO body, e o CSS dele
      carrega DEPOIS deste arquivo: especificidade maior é obrigatória,
      a ordem no head não basta.
   2. Headings de widget: a regra do Elementor (.elementor-widget-heading
      .elementor-heading-title, 0,2,0) vence os :where() de especificidade
      zero do CSS base. O bloco abaixo (0,3,0) devolve Archivo, peso e cor
      do C4. Cores definidas POR WIDGET no editor (0,3,0 em CSS de post que
      carrega depois) continuam vencendo, de propósito.
   3. Animated headline do /bim-4d/ (elemento e3ea8e6): o ciano está
      hardcoded no CSS do post 1153 (0,3,0 a 0,4,1). O prefixo .bb
      acrescenta um nível de classe e vence por especificidade.
   ============================================================================ */

body.bb {
  --e-global-color-primary: var(--bb-ink-900);
  --e-global-color-secondary: var(--bb-ink-700);
  --e-global-color-text: var(--bb-ink-700);
  --e-global-color-accent: var(--bb-petro-700);
}

/* Headings Elementor de volta à tipografia do C4. O font-weight do widget
   aponta para uma variável que o kit não define (declaração inválida em
   tempo de computação, o valor herda 400 do body), por isso o peso e o
   letter-spacing são reafirmados por nível, espelhando o CSS base. */
.bb .elementor-widget-heading .elementor-heading-title {
  font-family: var(--bb-font-head);
  color: var(--bb-ink-900);
}
.bb .elementor-widget-heading h1.elementor-heading-title { font-weight: 800; letter-spacing: -0.018em; }
.bb .elementor-widget-heading h2.elementor-heading-title { font-weight: 700; letter-spacing: -0.014em; }
.bb .elementor-widget-heading h3.elementor-heading-title { font-weight: 600; letter-spacing: -0.008em; }

/* Animated headline do /bim-4d/: texto, palavra dinâmica e círculo animado
   em petróleo no lugar do ciano hardcoded. */
.bb .elementor-1153 .elementor-element.elementor-element-e3ea8e6 {
  --dynamic-text-color: var(--bb-petro-700);
}
.bb .elementor-1153 .elementor-element.elementor-element-e3ea8e6 .elementor-headline-plain-text {
  color: var(--bb-petro-700);
}
.bb .elementor-1153 .elementor-element.elementor-element-e3ea8e6 .elementor-headline-dynamic-wrapper path {
  stroke: var(--bb-petro-700);
}

/* ============================================================================
   [NOVO 2026-08-15] CABEÇALHO MOBILE: HAMBURGER FORA DA TELA
   Reproduzido em iframes de 360/390/414 px (headless trava em ~500 px, onde o
   bug não existe). Causa raiz, medida: em 360 px o row precisa de ~400 px
   úteis contra 320 disponíveis, e NADA pode encolher:
     · .bb-logo 188 px com flex-shrink:0 (38 monograma + 12 gap + 138 wordmark)
     · o <nav> da navegação de desktop fica vazio abaixo de 860 px (.bb-nav é
       display:none), mas o ELEMENTO continua sendo flex item de largura zero
       e cobra um gap fantasma de 20 px a mais no row
     · CTA com white-space:nowrap dentro de .bb-header__actions flex-shrink:0
   O hamburger é o último item e transborda para fora da viewport: sem ele a
   navegação morre no mobile. Correção em três degraus:
     1. ≤859 px: some o wrapper <nav> (mata o gap fantasma; os links já vivem
        no painel do hamburger) e o row aperta o gap.
     2. ≤559 px (faixa do rótulo curto "Diagnóstico"): CTA compacto e gaps
        menores. Conta em 430 px: 188 + 12 + ~105 + 8 + 46 = 359 ≤ 390 úteis.
     3. ≤429 px: o CTA do cabeçalho sai de cena. Prioridade é o hamburger; a
        conversão segue no widget flutuante de WhatsApp (site-wide) e nos CTAs
        do corpo. Conta em 320 px: 188 + 12 + 46 = 246 ≤ 280 úteis.
   ============================================================================ */

@media (max-width: 859.98px) {
  .bb-header__row > nav { display: none; }
  .bb-header__row { gap: 16px; }
}
@media (max-width: 559.98px) {
  .bb-header__row { gap: 12px; }
  .bb-header__actions { gap: 8px; }
  .bb-header .bb-btn--sm { padding: 10px 14px; font-size: 0.875rem; }
}
@media (max-width: 429.98px) {
  .bb-header .bb-btn--primary { display: none; }
}
