  /* ============================================================
     IDENTIDADE VISUAL — cores e fontes da cliente
     Para adaptar o molde, mexa só neste bloco de variáveis:
     1. "paleta bruta": as cores da marca (tema claro).
     2. "tema escuro": aparece DUAS vezes logo abaixo
        (@media prefers-color-scheme e [data-theme="dark"]) —
        mantenha as duas cópias iguais.
     3. Fontes: --font-display e --font-body. Se trocar a família,
        troque também os arquivos de fonts/, os @font-face logo abaixo e os
        preloads do <head> do molde.html (e rode "npm run build").
     O resto do arquivo usa só as variáveis; não há cor solta nele.


     ATALHOS (ajustes manuais; procure o nome com Ctrl+F; todos ficam no 1º :root, logo abaixo):
     Vermelho do alto do rodapé no celular (logo e frase) - --rodape-topo-cor
     Cor dos títulos "Contato" e "Atendimento" do rodapé no celular - --rodape-titulo-cor
     Altura da faixa vermelha do rodapé no computador - --rodape-faixa-altura
     Perguntas frequentes: cards, largura e tempo de abrir e fechar - --faq-card, --faq-largura, --faq-acordeao
     Velocidade dos carrosséis no celular (serviços, frota, depoimentos e blog) - --carrossel-duracao
     Cor do cabeçalho (páginas internas e página inicial depois de rolar) - --topo-fundo
     Espaço abaixo da faixa do rodapé e entre os itens das listas (computador) - --rodape-respiro, --rodape-lista-espaco
     Topo com foto de ponta a ponta (altura no celular, enquadramento, degradês) - --hero-fundo-proporcao, --hero-foto-posicao-celular, --hero-foto-posicao-computador, --hero-foto-largura-computador, --hero-degrade-alto, --hero-degrade-base
     Espaço do bloco dos pilares e entre os cards; traço dourado no celular; ícone - --pilares-respiro, --pilares-espaco, --pilares-traco, --pilares-icone
     Enquadramento do retrato do Sobre - --sobre-foto-posicao
     Luz prateada no contorno do "Reservar" do topo (intervalo, espera, cor, espessura) - --brilho-ciclo, --brilho-atraso, --brilho-cor, --brilho-espessura
     Cards de serviço com foto (altura no computador e no celular, escurecimento ao abrir, duração) - --svc-altura, --svc-altura-celular, --svc-escurecer, --svc-duracao
     Tamanho do ícone dos selos abaixo do topo - --selo-icone
     Tamanho do ícone dos cards do Sobre - --cred-icone
     Nome no rodapé com a marca empilhada - --rodape-nome
     Tarja antes do formulário (espaço) - --tarja-respiro
     Tamanho da assinatura acima do título do blog - --marca-altura-blog
     Tamanho do logo na faixa do topo do blog e das dúvidas (computador) - --logo-faixa-escala
     Movimento dos cards do blog ao passar o cursor (computador) - --blog-card-elevacao, --blog-card-zoom
     Moldura da frase da faixa do formulário (fundo, letra, tamanho no celular, espaço interno) - --titulo-contorno-fundo, --titulo-contorno-texto, --titulo-contorno-celular, --titulo-contorno-respiro
     Topo no celular: foto até o fim do "Reservar" (alongamento, respiro, escurecimento da base); linha de luz depois do topo - --hero-foto-alongamento, --hero-foto-sob-texto, --hero-botoes-respiro, --hero-degrade-base-celular, --hero-linha-transicao
     Assinatura do nome (imagem) no cabeçalho e no rodapé - --marca-altura-topo, --marca-altura-rodape
     Largura do título e do texto de introdução das seções - --largura-texto
     Largura máxima dos títulos das seções no computador (sem limite = numa linha só) - --largura-titulo-computador
     Largura do texto de "Onde atendemos" no computador - --largura-texto-atendimento
     Traçado de rota no fundo do rodapé (intensidade e altura) - --rodape-rota-opacidade, --rodape-rota-altura
     Proporção da foto do artigo do blog (faixa de ponta a ponta) - --artigo-foto-proporcao
     Fundo prata do "Por que escolher" e espessura do filete dourado dos cards - --pilares-prata-claro, --pilares-prata-escuro, --pilares-filete
     Quantos cartões do "Leia também" aparecem de uma vez no computador - --leia-cartoes
     Cartões do blog (cantos, proporção da foto, largura da grade em /blog/) - --blog-card-raio, --blog-card-foto, --blog-grade-largura
     Até onde o grafite do "Por que escolher" fica inteiro antes de clarear - --pilares-escuro-ate
     Fundo dos cards do "Por que escolher" (degradê marfim) - --pilares-card-claro, --pilares-card-escuro
     Faixa vinho da marca no topo do blog (cor e espaço interno) - --blog-topo-cor, --blog-topo-respiro
     Recuo do texto do topo para a esquerda (computador) - --hero-texto-recuo
     Largura do texto dos artigos do blog e das páginas de termos e privacidade - --largura-leitura
     Velocidade de abrir e fechar as listas do menu do celular (Serviços, Frota, Blog) - --menu-acordeao
     Tamanho dos rótulos do formulário - --rotulo-form-tamanho
     Dourado no fundo do botão "Avalie no Google" - --google-preenchimento, --google-preenchimento-hover
     Luz dourada atrás dos cartões da frota (showroom) - --frota-brilho
     Cor do efeito dos cards do Quem somos ao passar o cursor - --sobre-prata
     Espaço da faixa preta acima dos cards do Quem somos - --sobre-transicao
     Depoimentos: cor da seção, estampa, passagens de cor, cards - --depo-fundo, --depo-estampa-opacidade, --depo-transicao, --depo-card, --depo-contorno
     Espaço acima do título de cada seção - --respiro-titulo
     Espaço entre as seções (em cima e embaixo) - --section-y
     Altura do cabeçalho no celular (espaço acima e abaixo do logo) - --topo-respiro-celular
     Folga entre o cabeçalho e a seção ao tocar num atalho - --respiro-ancora (sem JavaScript; com ele, RESPIRO no script.js)
     Peso, tamanho e espaço entre letras do menu e dos botões - --peso-menu, --peso-botao, --tamanho-menu, --tamanho-botao
     Revelação ao rolar (duração, distância, curva) - --revelar-duracao, --revelar-distancia, --revelar-curva
     Entrada do topo (duração, atraso entre itens, distância) - --hero-entrada-duracao, --hero-entrada-passo, --hero-entrada-distancia
     Entrada das páginas próprias (duração, distância) - --entrada-paginapropria-duracao, --entrada-paginapropria-distancia
     Dissolução das bordas da foto do topo no computador - --foto-topo-dissolucao (12% suave, 28% forte, 0% bordas retas)
     Amplitude da onda, curva ou diagonal entre seções - --divisor-altura (qual transição: divisores no config.js)
     Títulos longos no celular (quando reduzem para caber numa linha) - --largura-letra-titulo
     Tamanho do logo na faixa do formulário e no rodapé - --logo-faixa, --logo-rodape
     (as próximas ficam no bloco "Ajustes do dono (24/10/2026)", no fim do arquivo)
     Topo no computador: foto abaixo do cabeçalho, tamanho do slogan, largura dos botões - --hero-foto-recuo-computador, --hero-lead-computador, --hero-botao-largura
     Cor do título e do ícone do "Por que escolher"; animação ao passar o mouse - --pilares-titulo-cor, --pilares-subir, --pilares-hover-duracao
     Abertura lenta dos cards de serviço no computador - --svc-duracao-computador
     Largura mínima dos cards de depoimento no computador (abaixo dela, setas) - --depo-largura-min
     Fundo dos cards do Quem somos - --cred-fundo
     Frase da faixa do formulário no celular - --faixa-titulo-celular
     Topo no computador: enquadramento vertical da foto e largura da coluna do texto - --hero-foto-posicao-vertical, --hero-texto-largura
     Frota: enquadramento de cada foto (no card de cada veículo); tamanho das fotos horizontais no card - --frota-posicao, --frota-afastamento
     Tamanho das letras do seletor de idioma "PT | EN" (versão em inglês) - --idioma-tamanho
     Botão de idioma no cabeçalho do celular (globo + EN/PT) - --idioma-celular-tamanho e --idioma-celular-folga
     Largura do cabeçalho no computador - --maxw-topo
     Arredondamento dos cards de depoimento - --depo-raio
     Espaço abaixo da linha final do rodapé no celular - --rodape-respiro-final-celular
     Duração da transição entre páginas - --transicao-pagina
     Tom das seções alternadas (claro e escuro) - --fundo-secao-alt, --texto-dim-alt (nas listas de cores; onda antes do formulário: divisores.faq no config.js)
     Largura do botão "Agendar" do topo e distância até o Instagram - --botao-topo-lateral, --botao-topo-insta-espaco
     Destaque da galeria no computador (opacidade e saturação das demais fotos, elevação, duração) - --galeria-destaque-opacidade, --galeria-destaque-saturacao, --galeria-destaque-elevacao, --galeria-destaque-duracao
     Velocidade do menu do celular (abrir e fechar) - --menu-fundo, --menu-item, --menu-passo, --menu-saida-* (no bloco .mobile-menu)
     ============================================================ */

  /* ---------- Fontes (hospedadas no próprio site, pasta fonts/) ----------
     Os mesmos arquivos WOFF2 que o Google Fonts servia (fontes variáveis: um
     arquivo por estilo cobre todos os pesos), só "latin" e "latin-ext", com as
     mesmas faixas de caracteres (unicode-range): o navegador só baixa o arquivo
     de que precisa. Licença SIL Open Font License 1.1 (fonts/LICENCA.md).
     Ao trocar a família, troque estes arquivos, os blocos abaixo, --font-display e
     --font-body, e os <link rel="preload"> do molde.html. */
  @font-face { font-family: "Fraunces"; font-style: normal; font-weight: 400 500; font-display: swap; src: url("../fonts/fraunces-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
  @font-face { font-family: "Fraunces"; font-style: normal; font-weight: 400 500; font-display: swap; src: url("../fonts/fraunces-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
  @font-face { font-family: "Fraunces"; font-style: italic; font-weight: 400 500; font-display: swap; src: url("../fonts/fraunces-italic-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
  @font-face { font-family: "Fraunces"; font-style: italic; font-weight: 400 500; font-display: swap; src: url("../fonts/fraunces-italic-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
  /* Belleza (títulos da Faria, 21/10/2026): só peso 400, sem itálico (licença OFL, fonts/LICENCA.md) */
  @font-face { font-family: "Belleza"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/belleza-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
  @font-face { font-family: "Belleza"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/belleza-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
  @font-face { font-family: "Mulish"; font-style: normal; font-weight: 400 800; font-display: swap; src: url("../fonts/mulish-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
  @font-face { font-family: "Mulish"; font-style: normal; font-weight: 400 800; font-display: swap; src: url("../fonts/mulish-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }

  /* ---------- Tokens ---------- */
  :root {
    /* paleta bruta */
    /* Faria (21/10/2026, proposta A aprovada): marfim, grafite e dourado */
    --porcelain: #FFFFFF;   /* fundo branco total (dono, 03/11/2026; antes #F7F4EE, marfim amarelado): os cards se destacam pela linha fina e pela sombra */
    --cloud:     #FFFFFF;   /* cards */
    --ink:       #1E1C1A;   /* grafite, texto (15,5:1 sobre o marfim) */
    --ink-soft:  #3D3934;   /* texto secundário (10,4:1) */
    --stone:     #6A645B;   /* texto discreto (5,3:1 sobre o marfim; 5,9:1 sobre os cards) */
    --hairline:  #E3E0DA;   /* linhas finas, neutras (03/11/2026; antes #E2DCD1) */
    --grafite:   #1E1C1A;   /* botões das seções claras, cabeçalho e topo */
    --blush:     #EFE6CF;   /* dourado bem claro (fundos de destaque) */
    --gold:      #A88B4A;   /* dourado dos filetes e pontos (linha decorativa, 3,0:1) */
    --gold-texto: #7D6631;  /* dourado para texto sobre o marfim (destaque de título) */

    /* semânticos (usados pelos componentes) */
    --bg:              var(--porcelain);
    --surface:         var(--cloud);
    --text:            var(--ink);
    --text-2:          var(--ink-soft);
    --text-dim:        var(--stone);
    --line:            var(--hairline);
    --fundo-secao-alt: #FFFFFF;            /* seções alternadas também em branco (dono, 03/11/2026; antes #EEE9DF): o contraste vem das seções escuras; para voltar a alternar, use um tom 3% a 6% mais escuro que --bg */
    --texto-dim-alt:   #625C53;            /* texto discreto nas seções alternadas (5,5:1 sobre --fundo-secao-alt) */
    --accent:          var(--grafite);
    --accent-contrast: #EBD9A2;            /* texto e ícone sobre os botões grafite (dourado claro, 12,1:1) */
    --accent-tint:     var(--blush);
    --metal:           var(--gold);

    /* faixa de fechamento — cor assumida, igual nos dois temas */
    --band-bg:   var(--grafite);   /* topo, cabeçalho e faixa do formulário (grafite) */
    --band-text: #F3EEE4;          /* texto sobre o grafite */
    --band-metal:#CCB674;          /* dourado sobre o grafite */
    --band-btn-text: var(--band-bg);   /* texto do botão claro da faixa */
    --band-accent: #D9C48A;        /* destaque dourado sobre o grafite, no lugar do itálico */

    /* detalhes de componentes (iguais nos dois temas) */
    --sombra-botao-escuro: rgba(0, 0, 0, 0.45);   /* sombra ao passar o mouse nos botões do topo escuro */
    --sombra-galeria: rgba(30, 28, 26, 0.28);   /* sombra suave da foto destacada na galeria (computador) */
    --cookies-btn-line:  #CCB674;          /* contorno dos botões da faixa de cookies (dourado) */
    --nav-btn-text:      #EBD9A2;          /* texto do botão "Agendar" do topo */
    --form-field-text:   #1E1C1A;          /* texto digitado nos campos do formulário */
    --form-error-border: #E3A6A6;          /* borda do campo com erro */
    --form-error-text:   #FFD6D6;          /* mensagem de erro do formulário */
    --shadow-btn:        rgba(0,0,0,0.04);
    --shadow-menu:       rgba(0,0,0,0.28);
    --lightbox-fundo:    rgba(20,19,18,0.96);   /* fundo da foto ampliada */
    --lightbox-texto:    #F3EEE4;               /* X, setas, legenda e contador */
    --lightbox-botao:    rgba(255,255,255,0.10);/* fundo do X e das setas */

    /* logo exibido no site: img/logo.webp (320 px, gerado do img/logo.png pelo
       "npm run imagens"). O logo.png original continua como base da prévia de
       links (og.jpg) e dos ícones ("npm run og"). Outro arquivo: imagens.logo no config. */
    --logo-src: url("../img/logo.webp");
    /* nome do negócio como imagem (imagens.marca no config): img/marca.webp, branca com
       fundo transparente, desenhada na cor do texto (máscara). Proporção do arquivo em
       --marca-proporcao (largura / altura). */
    --marca-src: url("../img/marca.webp");
    --marca-proporcao: 2.9;   /* 1447 x 499 px do recorte da assinatura da Faria */
    --marca-altura-topo: 2.3rem;   /* altura da assinatura no cabeçalho (computador); recomendado 2rem a 2.6rem */
    --marca-altura-rodape: 2.6rem; /* altura da assinatura no rodapé; recomendado 2.2rem a 2.9rem (dono, 29/10: maior, equilibrando com o logo) */

    --maxw: 1140px;   /* largura máxima do conteúdo no computador; recomendado 1080px a 1240px */
    --maxw-topo: 1320px;   /* largura máxima do cabeçalho no computador (mais larga que o conteúdo: logo e nome à esquerda, botões mais à direita; dono, 28/10); recomendado 1240px a 1440px */
    --pad: clamp(1.55rem, 5vw, 1.75rem);   /* margem lateral do conteúdo (no celular, a distância do texto até a borda); recomendado entre 1.25rem e 2rem */
    --section-y: clamp(1.6rem, 3.4vw, 3rem);   /* espaço em cima e embaixo de cada seção (celular → computador); recomendado de 1.5rem a 4rem no máximo */
    --respiro-titulo: clamp(0.5rem, 1.5vw, 1rem);   /* espaço extra acima do título de cada seção (sem rótulo acima dele); recomendado 0.5rem a 1.25rem */
    --largura-letra-titulo: 0.49;   /* largura média de uma letra dos títulos (em "em"), usada no celular para reduzir só o título que não cabe numa linha; recomendado 0.46 a 0.5 (maior = reduz mais cedo) */
    --largura-texto: 80ch;   /* largura máxima do título e do texto de introdução de cada seção (.section__head). Leitura confortável: 60 a 75 caracteres por linha (60ch a 75ch); para ampliar, aumente o número (ex.: 85ch). 1ch = largura de um "0" da fonte */

    --font-display: "Belleza", "Optima", "Candara", sans-serif;   /* Faria: Belleza (estilo Aesop); no molde: "Fraunces", "Iowan Old Style", Georgia, serif */
    --italico-display: normal;   /* itálico dos textos na fonte dos títulos (destaque do título do topo, assinatura, subtítulos): "italic" com fonte que tem itálico; "normal" com a Belleza, que não tem (o destaque vira cor dourada) */
    --font-body: "Mulish", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

    /* ---------- Tipografia do menu, dos botões e do subtítulo do topo ----------
       Ajuste aqui, num só lugar (vale para todo o site e qualquer cliente).
       Pesos: use só os que existem nos arquivos de fonts/ (o build avisa se não existir). */
    --peso-menu:            400;      /* peso dos itens do menu (computador e celular); antes 700 */
    --tamanho-menu:         0.9rem;  /* tamanho dos itens do menu do computador (0.95rem até 29/10; menor com "Orçamento" no menu) */
    --tamanho-menu-celular: 1rem;     /* tamanho dos itens do menu do celular */
    --espaco-letras-menu:   0.01em;   /* espaço entre as letras do menu */
    --peso-botao:           400;      /* peso dos botões (inclusive os da faixa e do painel de cookies); antes 700 */
    --peso-link-acao:       500;      /* peso dos links de ação ("Ler artigo →", "Montar meu horário →"...); antes 700 */
    --tamanho-botao:        0.95rem;  /* tamanho dos botões e dos links de ação no computador */
    --tamanho-botao-celular: clamp(14px, 13.5px + 0.15vw, 15px);   /* no celular, em px (regra de uma linha) */
    --espaco-letras-botao:  0.01em;   /* espaço entre as letras dos botões e dos links de ação */
    --tamanho-subtitulo-topo: 1.125rem; /* subtítulo do topo a partir de 1024 px (18 px; peso 400; no topo escuro, creme a 85%) */
    --altura-linha-subtitulo-topo: 1.6; /* altura de linha do subtítulo do topo a partir de 1024 px */

    /* ---------- Revelação ao rolar (script.js + fim do style.css) ---------- */
    --revelar-duracao:   700ms;   /* tempo do esmaecer e subir de cada bloco; recomendado 400ms a 800ms */
    --revelar-distancia: 18px;    /* quanto o bloco sobe ao aparecer; recomendado 8px a 24px (0 = só esmaece) */
    --revelar-curva:     cubic-bezier(0.22, 0.61, 0.36, 1);   /* curva suave (desacelera no fim) */

    /* ---------- Entrada do topo (hero), só CSS ---------- */
    --hero-entrada-duracao:  450ms;   /* duração de cada item (título, subtítulo, botões); recomendado 300ms a 600ms */
    --hero-entrada-passo:    120ms;   /* atraso entre um item e o próximo; recomendado 60ms a 150ms (total ~0,6 s) */
    --hero-entrada-distancia: 10px;   /* quanto o texto sobe ao entrar; recomendado 6px a 16px */
    --hero-foto-opacidade:   0.85;    /* opacidade inicial da foto do topo; nunca abaixo de 0.7 (não piorar o LCP) */

    /* ---------- Foto do topo no computador (a partir de 1024 px) ---------- */
    --foto-topo-dissolucao: 12%;   /* quanto das bordas da foto se dissolve no fundo: 12% suave (escolhida); 28% forte; 0% = bordas retas, sem dissolver */

    /* ---------- Galeria no computador: destaque ao passar o mouse ou com o foco do teclado ---------- */
    --galeria-destaque-opacidade: 0.7;    /* opacidade das demais fotos enquanto uma está destacada; recomendado 0.6 a 0.85 (1 = sem esmaecer) */
    --galeria-destaque-saturacao: 0.85;   /* saturação das demais fotos; recomendado 0.7 a 0.95 (1 = cor normal) */
    --galeria-destaque-elevacao:  3px;    /* quanto a foto destacada sobe; recomendado 2px a 6px (0 = não sobe); com "reduzir movimento", não sobe */
    --galeria-destaque-duracao:   350ms;  /* duração da transição; recomendado 250ms a 450ms */
    --galeria-destaque-curva:     cubic-bezier(0.22, 0.61, 0.36, 1);   /* curva suave (desacelera no fim) */

    /* ---------- Logo repetido na faixa do formulário e no rodapé ---------- */
    --logo-faixa:  120px;    /* tamanho do logo acima do título da faixa do formulário (antes 88px); recomendado 96px a 140px */
    --logo-rodape: 4rem;     /* tamanho do logo no rodapé (Faria: 4rem, um pouco maior, 21/10; antes 3.25rem); recomendado 2.5rem a 4.5rem */
    --rodape-nome: 1.9rem;   /* tamanho do nome no rodapé com a marca empilhada (rodape.marcaEmpilhada); recomendado 1.5rem a 2.4rem */
    --rodape-respiro-final-celular: 1.25rem;   /* espaço abaixo da linha final do rodapé no celular (antes 1.5rem + 60px); recomendado 1rem a 2rem */

    /* ---------- Topo com foto de ponta a ponta (hero.fundo) ---------- */
    --hero-fundo-proporcao: 1.55;   /* (computador) referência de altura mínima; no celular, a foto aparece inteira (ver abaixo) */
    --hero-foto-proporcao-arquivo: 1086 / 1448;   /* proporção da foto do topo (largura / altura do arquivo); a foto aparece inteira, sem cortar os lados, no celular e no tablet */
    --hero-foto-alongamento: 1.07;   /* no celular e no tablet, a caixa da foto do topo fica 7% mais alta que a foto: ganha piso para os botões e um zoom leve só nas laterais, com o carro inteiro; recomendado 1 a 1.1 */
    --hero-foto-sob-texto: calc(100vw * 1448 / 1086 * var(--hero-foto-alongamento) * 0.36);    /* quanto do alto da foto fica atrás do título e do slogan no celular (36% da altura da foto: o teto); recomendado 30% a 40% */
    --hero-botoes-respiro: 0.6rem;   /* espaço entre o "Reservar" e o fim da foto no celular (a foto vai até o fim do botão); recomendado 0.5rem a 1.5rem */
    --hero-degrade-base-celular: 0.35;   /* escurecimento da base da foto no celular, atrás dos botões (a foto continua visível); recomendado 0.2 a 0.5 */
    --selo-icone: 3rem;   /* tamanho do quadrado do ícone dos selos abaixo do topo; recomendado 2.5rem a 3.5rem */
    --brilho-ciclo:  4s;        /* intervalo da luz prateada que contorna o botão "Reservar" do topo (hero.brilhoReservar); a volta ocupa 35% dele; recomendado 3s a 6s */
    --brilho-atraso: 1.5s;      /* espera antes da primeira passada do brilho; recomendado 1s a 3s */
    --brilho-cor:    #E8E8EA;   /* cor da luz (prata) */
    --brilho-espessura: 2px;    /* espessura da luz que contorna o botão; recomendado 1.5px a 3px */
    --hero-linha-transicao: 2px;     /* espessura da linha de luz dourada entre o topo e a faixa seguinte; recomendado 1px a 3px (0 = sem linha) */
    --hero-foto-posicao-celular: 50% 62%;     /* enquadramento da foto no celular (horizontal vertical) */
    --hero-foto-posicao-computador: 50% 72%;  /* enquadramento da foto no computador */
    --hero-foto-largura-computador: 58%;      /* largura da foto no computador (à direita, dissolvida no grafite à esquerda); recomendado 50% a 65% */
    --hero-degrade-alto: 0.88;      /* opacidade do degradê escuro no alto (leitura do título); recomendado 0.7 a 0.95 */
    --hero-degrade-base: 0.9;       /* opacidade do degradê escuro na base (leitura do botão); recomendado 0.7 a 0.95 */

    /* ---------- Pilares (secoes.pilares), logo depois do topo ---------- */
    --pilares-respiro: clamp(1.5rem, 4vw, 3rem);   /* espaço acima e abaixo do bloco dos pilares (celular → computador); recomendado 1.25rem a 3.5rem */
    --pilares-espaco:  clamp(1rem, 2vw, 1.5rem);   /* distância entre os cards no computador; recomendado 0.75rem a 2rem */
    --marca-altura-blog: clamp(2.6rem, 9vw, 3.4rem);   /* altura da assinatura acima do título do blog (blog.marca); recomendado 2.4rem a 3.6rem */
    --titulo-contorno-fundo: var(--band-text);   /* fundo da frase emoldurada da faixa do formulário (marfim); recomendado um tom claro da marca */
    --titulo-contorno-texto: var(--band-bg);     /* letra da frase emoldurada (grafite); contraste mínimo 4,5:1 com o fundo acima */
    --titulo-contorno-celular: 6.4vw;          /* tamanho da frase emoldurada no celular (até 720 px); recomendado 5.5vw a 7vw */
    --titulo-contorno-respiro: clamp(0.85rem, 2.5vw, 1.25rem);   /* espaço entre a frase da faixa do formulário e a moldura dourada (agendar.tituloContorno); recomendado 0.75rem a 1.5rem */
    --tarja-respiro:   clamp(0.9rem, 2.5vw, 1.25rem);   /* espaço acima e abaixo da frase da tarja antes do formulário (agendar.tarja); recomendado 0.75rem a 1.5rem */
    --sobre-foto-posicao: 50% 8%;   /* enquadramento do retrato do Sobre (horizontal vertical): 50% 50% = centro; valores menores no segundo número mostram mais o alto da foto */
    --cred-icone:      2.6rem;    /* tamanho do quadrado do ícone dos cards do Sobre (sobre.credenciais com ícone); recomendado 2.25rem a 3rem */
    --svc-altura:      27rem;     /* altura dos cards de serviço com foto no computador (servicos.cards); recomendado 24rem a 32rem */
    --svc-altura-celular: 31rem;  /* altura dos cards no celular (como no site atual, ~500 px); recomendado 28rem a 34rem */
    --svc-escurecer:   58%;       /* quanto a foto escurece com o card de serviço aberto (leitura da descrição); recomendado 45% a 70% */
    --svc-duracao:     0.55s;     /* duração da abertura do card de serviço; recomendado 0.4s a 0.8s */
    --pilares-icone:   3.25rem;   /* tamanho do círculo do ícone de cada pilar; recomendado 2.75rem a 4rem */
    --pilares-traco:   2rem;   /* largura do traço dourado acima do título no celular; recomendado 1.5rem a 3rem */

    /* ---------- Botões do cabeçalho no computador ---------- */
    --botao-topo-lateral:      1.55rem;   /* espaço à esquerda e à direita do texto no botão "Agendar" do topo (antes 1.3rem); recomendado 1.2rem a 1.8rem */
    --botao-topo-insta-espaco: 0.6rem;    /* distância entre o "Agendar" e o botão do Instagram; recomendado 0.5rem a 1rem */

    /* ---------- Cabeçalho no celular ---------- */
    --topo-respiro-celular: 0.4rem;   /* espaço acima e abaixo do logo no cabeçalho, até 720 px (antes 0.85rem); recomendado 0.3rem a 0.85rem */

    /* ---------- Divisores de seção (divisores no config) ---------- */
    --divisor-altura: clamp(18px, 3.2vw, 44px);   /* amplitude da onda, curva ou diagonal; recomendado 16px a 60px (discreto: até ~44px) */

    /* ---------- Transição entre páginas (View Transitions, fim do style.css) ---------- */
    --transicao-pagina: 0.30s;   /* esmaecimento ao trocar de página (inicial, blog, galeria...); recomendado 0.15s a 0.35s; soma esse tempo a cada troca */

    /* ---------- Entrada das páginas próprias (fim do style.css) ---------- */
    --entrada-paginapropria-duracao:   700ms;   /* tempo do esmaecer e subir do conteúdo ao abrir uma página própria (e ao voltar para a inicial); recomendado 400ms a 800ms */
    --entrada-paginapropria-distancia: 18px;    /* quanto o conteúdo sobe ao entrar; recomendado 8px a 24px (0 = só esmaece) */

    /* ---------- Rolagem dos atalhos (âncoras) ---------- */
    --altura-topo:     86px;   /* altura do cabeçalho; o script.js mede a real e atualiza */
    --respiro-ancora:  16px;   /* folga entre o cabeçalho e o começo da seção */
    --recuo-ancora:    calc(var(--altura-topo) + var(--respiro-ancora));   /* scroll-margin-top de todas as âncoras */

    --step--1: clamp(0.8rem, 0.77rem + 0.15vw, 0.875rem);
    --step-0:  1.0625rem;
    --step-1:  clamp(1.15rem, 1.05rem + 0.5vw, 1.35rem);
    --step-2:  clamp(1.5rem, 1.3rem + 1vw, 1.9rem);
    --step-3:  clamp(1.95rem, 1.6rem + 1.8vw, 2.75rem);
    --step-4:  clamp(2.3rem, 1.6rem + 3.2vw, 3.7rem);
  }

  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
      --bg:              #181716;
      --surface:         #211F1D;
      --text:            #EEE9E0;
      --text-2:          #D6CFC3;
      --text-dim:        #A9A296;
      --line:            #33302C;
    --fundo-secao-alt: #141312;            /* seções alternadas no tema escuro (um pouco mais escuro que --bg) */
    --texto-dim-alt:   #A9A296;            /* 6,9:1 sobre o fundo alternado escuro */
      --fundo-secao-alt: #141312;          /* seções alternadas no tema escuro (um pouco mais escuro que --bg) */
      --texto-dim-alt:   #A9A296;          /* 6,9:1 sobre o fundo alternado escuro */
      --accent:          #CCB674;   /* botões dourados no tema escuro */
      --accent-contrast: #181716;   /* 9,0:1 sobre o dourado */
      --nav-btn-text:    #181716;   /* botão do topo sobre o dourado */
      --accent-tint:     #4A4232;
      --metal:           #CCB674;
    }
  }

  :root[data-theme="dark"] {
    --fundo-secao-alt: #141312;            /* seções alternadas no tema escuro */
    --texto-dim-alt:   #A9A296;            /* texto discreto nas seções alternadas escuras */
    --bg:              #181716;
    --surface:         #211F1D;
    --text:            #EEE9E0;
    --text-2:          #D6CFC3;
    --text-dim:        #A9A296;
    --line:            #33302C;
    --accent:          #CCB674;   /* botões dourados no tema escuro */
    --accent-contrast: #181716;   /* 9,0:1 sobre o dourado */
    --nav-btn-text:    #181716;   /* botão do topo sobre o dourado */
    --accent-tint:     #4A4232;
    --metal:           #CCB674;
  }

  :root[data-theme="light"] {
    --bg:              var(--porcelain);
    --surface:         var(--cloud);
    --text:            var(--ink);
    --text-2:          var(--ink-soft);
    --text-dim:        var(--stone);
    --line:            var(--hairline);
    --fundo-secao-alt: #FFFFFF;            /* seções alternadas também em branco (dono, 03/11/2026; antes #EEE9DF): o contraste vem das seções escuras; para voltar a alternar, use um tom 3% a 6% mais escuro que --bg */
    --texto-dim-alt:   #625C53;            /* texto discreto nas seções alternadas (5,5:1 sobre --fundo-secao-alt) */
    --accent:          var(--grafite);
    --accent-contrast: #EBD9A2;            /* texto e ícone sobre os botões grafite (dourado claro, 12,1:1) */
    --accent-tint:     var(--blush);
    --metal:           var(--gold);
  }

  /* ---------- Base ---------- */
  * { box-sizing: border-box; }

  html { scroll-behavior: smooth; }
  html, body { overflow-x: clip; }

  body {
    margin: 0;
    background: var(--bg);
    color: var(--text);
    font-family: var(--font-body);
    font-size: var(--step-0);
    line-height: 1.65;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }

  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
  }

  h1, h2, h3 {
    font-family: var(--font-display);
    font-weight: 400;
    font-optical-sizing: auto;
    line-height: 1.08;
    text-wrap: balance;
    margin: 0;
    letter-spacing: -0.01em;
  }

  p { margin: 0; }

  a { color: inherit; }

  ::selection { background: var(--accent); color: var(--accent-contrast); }

  :focus-visible {
    outline: 2px solid var(--metal);
    outline-offset: 3px;
    border-radius: 2px;
  }

  .skip {
    position: absolute;
    left: -999px;
    top: 0;
    background: var(--surface);
    color: var(--text);
    padding: 0.75rem 1rem;
    z-index: 200;
  }
  .skip:focus { left: 0.75rem; top: 0.75rem; }

  .wrap {
    max-width: var(--maxw);
    margin-inline: auto;
    padding-inline: var(--pad);
  }

  .lead {
    font-size: var(--step-1);
    color: var(--text-2);
    max-width: 46ch;
    line-height: 1.55;
  }

  /* ---------- Buttons ---------- */
  .btn {
    --_bg: var(--accent);
    --_fg: var(--accent-contrast);
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    background: var(--_bg);
    color: var(--_fg);
    font-family: var(--font-body);
    font-weight: var(--peso-botao);
    font-size: var(--tamanho-botao);   /* só a primeira letra maiúscula (14/10/2026) */
    letter-spacing: var(--espaco-letras-botao);
    text-decoration: none;
    padding: 1rem 1.6rem;
    border: 1px solid transparent;
    border-radius: 999px;
    transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
    box-shadow: 0 1px 0 var(--shadow-btn);
  }
  .btn svg { width: 1.05em; height: 1.05em; flex: none; }
  .btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px -12px color-mix(in srgb, var(--accent) 60%, transparent);
  }
  .btn:active { transform: translateY(0); }

  .btn--ghost {
    --_bg: transparent;
    --_fg: var(--text);
    border-color: color-mix(in srgb, var(--metal) 55%, transparent);
    box-shadow: none;
  }
  .btn--ghost:hover {
    background: color-mix(in srgb, var(--metal) 12%, transparent);
    box-shadow: none;
  }

  .btn--light {
    --_bg: var(--band-text);
    --_fg: var(--band-btn-text);
    padding: 1.05rem 1.95rem;
    font-size: 0.9rem;
  }
  .btn--light svg { width: 1.7em; height: 1.7em; }

  /* ---------- Promoção (promocao no config): faixa fina acima do menu ----------
     Na cor da faixa do formulário (igual nos dois temas). O "X" fica à direita,
     com 44 px de toque, e só aparece com JavaScript (script.js). */
  .promo {
    position: relative;
    padding: 0.55rem calc(var(--pad) + 44px);
    background: var(--band-bg);
    color: var(--band-text);
    text-align: center;
  }
  .promo__texto { font-size: 1rem; line-height: 1.45; }
  .promo__link {
    position: relative;
    margin-left: 0.35rem;
    font-weight: 700;
    color: var(--band-text);
    text-underline-offset: 3px;
    white-space: nowrap;
  }
  .promo__link::before { content: ""; position: absolute; inset: -12px -6px; }   /* toque de 44px */
  .promo__fechar {
    position: absolute;
    top: 50%;
    right: max(4px, calc(var(--pad) - 14px));
    transform: translateY(-50%);
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--band-text);
    cursor: pointer;
  }
  .promo__fechar[hidden] { display: none; }
  .promo__fechar svg { width: 18px; height: 18px; }
  .promo__fechar:focus-visible { outline: 2px solid var(--band-metal); outline-offset: -4px; }

  /* ---------- Top bar ---------- */
  .topbar {
    position: sticky;
    top: 0;
    z-index: 100;
    background: color-mix(in srgb, var(--bg) 88%, transparent);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--line);
  }
  .topbar__inner {
    max-width: var(--maxw-topo, var(--maxw));
    margin-inline: auto;
    padding: 0.85rem var(--pad);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
  }
  .brand {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.8rem;
    line-height: 1;
    text-decoration: none;
    color: var(--text);
  }
  .brand__mark {
    /* Tamanho do logo no cabeçalho (desktop). Aumente/diminua livremente —
       é uma imagem vetorial-like em PNG de 560x560px, então ainda fica nítida
       bem maior que isto; o único limite real é não deixar o cabeçalho alto
       demais / espremer o menu. Se aumentar muito, ajuste também o padding
       vertical de .topbar__inner logo abaixo. */
    width: 3.75rem;
    height: 3.75rem;
    flex: none;
    background: var(--logo-src) center / contain no-repeat;
  }
  .brand__text { display: flex; flex-direction: column; }
  .brand__name {
    font-family: var(--font-body);
    font-weight: 800;
    letter-spacing: 0.2em;
    font-size: 1.2rem;
    text-transform: uppercase;
  }
  .brand__tag {
    font-family: var(--font-display);
    font-style: var(--italico-display);
    font-size: 0.92rem;
    color: var(--text-dim);
    letter-spacing: 0.02em;
    margin-top: 0.3rem;
  }
  .nav {
    display: flex;
    align-items: center;
    gap: 2.1rem;
  }
  .nav a:not(.btn) {
    position: relative;
    font-size: var(--tamanho-menu);
    font-weight: var(--peso-menu);
    letter-spacing: var(--espaco-letras-menu);
    text-decoration: none;
    color: var(--text);
    padding: 0.4rem 0;
    transition: color 0.18s ease;
  }
  .nav a:not(.btn)::after {
    content: "";
    position: absolute;
    left: 0;
    right: 100%;
    bottom: 0;
    height: 1.5px;
    background: currentColor;   /* a mesma cor do texto naquele momento */
    transition: right 0.28s cubic-bezier(0.4, 0.6, 0.2, 1);
  }
  .nav a:not(.btn):hover,
  .nav a[aria-current]:not(.btn) { color: var(--accent); }
  .nav a:not(.btn):hover::after,
  .nav a[aria-current]:not(.btn)::after { right: 0; }
  .mobile-menu a[aria-current]:not(.btn) { color: var(--accent); }

  /* Submenu de "Serviços" (render.js: menuServicos). Computador: abre ao passar
     o mouse ou com o foco do teclado, sem mudar a largura do menu (sem seta). */
  .nav__grupo { position: relative; display: flex; align-items: center; }
  .nav__sub {
    position: absolute;
    top: 100%;
    left: -1rem;
    z-index: 5;
    display: flex;
    flex-direction: column;
    min-width: 13.5rem;
    padding: 0.4rem 0;
    background: var(--surface);
    border: 1px solid var(--line);
    border-top: 2px solid var(--metal);
    border-radius: 3px;
    box-shadow: 0 18px 30px -18px var(--shadow-menu);
    opacity: 0;
    visibility: hidden;
    transform: translateY(4px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
  }
  .nav__grupo:hover .nav__sub,
  .nav__grupo:focus-within .nav__sub { opacity: 1; visibility: visible; transform: none; }
  .nav .nav__sub a:not(.btn) {
    display: block;
    padding: 0.6rem 1rem;
    font-size: 0.95rem;
    font-weight: var(--peso-menu);
    letter-spacing: 0;
    text-transform: none;
    white-space: nowrap;
  }
  .nav .nav__sub a::after,
  .nav .nav__sub a::before { display: none; }
  .nav .nav__sub a:hover,
  .nav .nav__sub a:focus-visible { color: var(--accent); background: color-mix(in srgb, var(--accent-tint) 30%, transparent); }
  @media (prefers-reduced-motion: reduce) {
    .nav__sub { transition: none; transform: none; }
  }

  /* Cabeçalho escuro (cabecalhoEscuro no config, 21/10/2026, réplica da Faria): o cabeçalho e o
     menu do celular usam o grafite do topo (--band-bg), com o nome e o menu em marfim e dourado;
     a translucidez ao rolar continua, agora sobre o grafite. */
  .topbar--escuro {
    --bg:          var(--band-bg);
    --surface:     color-mix(in srgb, var(--band-bg) 94%, #FFFFFF);
    --text:        var(--band-text);
    --text-2:      color-mix(in srgb, var(--band-text) 88%, var(--band-bg));
    --text-dim:    var(--band-metal);
    --line:        color-mix(in srgb, var(--band-text) 16%, var(--band-bg));
    --accent:      var(--band-metal);
    --accent-contrast: var(--band-bg);
    --nav-btn-text: var(--band-bg);
    --accent-tint: color-mix(in srgb, var(--band-metal) 22%, var(--band-bg));
    --shadow-menu: rgba(0, 0, 0, 0.5);
    color: var(--text);
  }

  /* Topo some ao descer e volta ao subir (script.js: .is-oculto) */
  .topbar { transition: transform 0.28s ease; }
  .topbar.is-oculto { transform: translateY(-100%); }
  @media (prefers-reduced-motion: reduce) {
    .topbar { transition: none; }
  }
  .nav .btn {
    --_fg: var(--nav-btn-text);
    padding: 0.72rem var(--botao-topo-lateral);   /* lateral um pouco maior (20/10/2026); texto e ícone no tamanho normal */
    letter-spacing: var(--espaco-letras-botao);
    border-color: color-mix(in srgb, var(--nav-btn-text) 32%, transparent);
  }

  /* Instagram à direita do "Agendar" (computador, 20/10/2026): círculo de 44 px com contorno
     fino e o ícone em traço, mais perto do "Agendar" que os links entre si */
  .nav a.nav__insta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 44px;
    height: 44px;
    margin-left: calc(var(--botao-topo-insta-espaco) - 2.1rem);   /* o gap do menu é 2.1rem */
    border: 1px solid var(--line);
    border-radius: 999px;
    color: var(--text);
    padding: 0;
    transition: color 0.18s ease, border-color 0.18s ease;
  }
  .nav a.nav__insta svg { width: 20px; height: 20px; }
  .nav a.nav__insta::after { display: none; }   /* sem a linha dos links do menu */
  .nav a.nav__insta:hover { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 45%, transparent); }
  .nav a.nav__insta:focus-visible { outline: 2px solid var(--metal); outline-offset: 2px; }

  /* ---------- Botão hambúrguer (duas linhas -> X) + menu mobile ----------
     Duas linhas finas na cor principal, a de baixo mais curta. Ao abrir o
     menu, giram e formam um X. Área de toque de 44 px. */
  .hamburger {
    display: none;
    flex: none;
    position: relative;
    width: 2.75rem;
    height: 2.75rem;
    margin-right: -0.55rem;   /* alinha as linhas com a margem do texto */
    padding: 0;
    background: transparent;
    border: 0;
    cursor: pointer;
  }
  .hamburger__linha {
    position: absolute;
    right: 0.55rem;
    width: 1.4rem;
    height: 1.5px;
    border-radius: 1px;
    background: var(--accent);
    transform-origin: center;
    transition: top 0.3s cubic-bezier(0.4, 0.6, 0.2, 1),
                width 0.3s cubic-bezier(0.4, 0.6, 0.2, 1),
                transform 0.3s cubic-bezier(0.4, 0.6, 0.2, 1);
  }
  .hamburger__linha:first-child { top: calc(50% - 4px); }
  .hamburger__linha:last-child  { top: calc(50% + 3px); width: 0.95rem; }
  .hamburger[aria-expanded="true"] .hamburger__linha { top: calc(50% - 0.75px); width: 1.4rem; }
  .hamburger[aria-expanded="true"] .hamburger__linha:first-child { transform: rotate(45deg); }
  .hamburger[aria-expanded="true"] .hamburger__linha:last-child  { transform: rotate(-45deg); }

  @media (prefers-reduced-motion: reduce) {
    .hamburger__linha { transition: none; }
  }

  .mobile-menu {
    display: none;
    position: absolute;
    top: calc(100% + 1px);   /* abaixo da linha do topo (a referência é o .topbar__inner, por causa da container query) */
    left: 0;
    right: 0;
    flex-direction: column;
    background: var(--surface);
    border-bottom: 1px solid var(--line);
    box-shadow: 0 18px 30px -18px var(--shadow-menu);
    padding: 0.5rem var(--pad) 1.25rem;
    height: calc(100dvh - 100% - 1px);   /* cobre a tela abaixo do topo; com as categorias abertas ou o texto aumentado, rola dentro do menu */
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .mobile-menu[hidden] { display: none; }

  /* ---------- Abertura do menu Hambúrguer do celular (efeito Apple, só CSS) ----------
     O script.js só tira e põe o atributo hidden. Ao abrir: o fundo desce cobrindo a
     tela (clip-path, --menu-fundo) e, quando está quase no fim, os itens entram um a um,
     de cima para baixo (--i = posição do item, --menu-passo entre eles). Ao fechar (14/10/2026):
     o fundo e os itens recolhem juntos e, no meio do recolhimento, o fundo vai ficando
     transparente, misturando-se com a página.
     PARA VOLTAR AO FECHAMENTO ANTERIOR (itens saindo um a um, de baixo para cima, e só
     depois o fundo subindo, sem esmaecer), troque as quatro variáveis --menu-saida-*:
       --menu-saida-passo: var(--menu-passo);
       --menu-saida-atraso-fundo: calc(var(--menu-item) + 6 * var(--menu-passo));
       --menu-saida-esmaecer: 0;
       --menu-saida-curva: var(--menu-curva);
     O menu continua tocável durante a animação (nada bloqueia o toque).
     "display" com allow-discrete mantém o menu na tela até a saída terminar
     (navegador sem suporte: fecha na hora). Com "reduzir movimento", sem efeito. */
  .mobile-menu {
    --menu-curva: cubic-bezier(0.32, 0.72, 0, 1);
    --menu-fundo: 250ms;
    --menu-item: 160ms;
    --menu-passo: 25ms;
    /* fechar: 0ms = itens saem juntos (antes var(--menu-passo): um a um, de baixo para cima) */
    --menu-saida-passo: 10ms;
    /* fechar: atraso do fundo; 0ms = recolhe junto com os itens (antes: calc(var(--menu-item) + 6 * var(--menu-passo))) */
    --menu-saida-atraso-fundo: 70ms;
    /* fechar: 1 = o fundo fica transparente no meio do recolhimento; 0 = sem esmaecer (antes) */
    --menu-saida-esmaecer: 1;
    /* fechar: curva do recolhimento, mais uniforme que a da abertura, para o esmaecimento aparecer (antes: var(--menu-curva)) */
    --menu-saida-curva: cubic-bezier(0.45, 0, 0.55, 1);
    clip-path: inset(0 0 0 0);
    opacity: 1;
    transition:
      clip-path var(--menu-fundo) var(--menu-curva),
      opacity 120ms ease,
      display var(--menu-fundo) allow-discrete;
  }
  .mobile-menu[hidden] {
    clip-path: inset(0 0 100% 0);
    opacity: calc(1 - var(--menu-saida-esmaecer));
    transition:
      clip-path var(--menu-fundo) var(--menu-saida-curva) var(--menu-saida-atraso-fundo),
      opacity calc(var(--menu-fundo) * 0.7) ease calc(var(--menu-saida-atraso-fundo) + var(--menu-fundo) * 0.3),
      display 0s allow-discrete calc(var(--menu-saida-atraso-fundo) + var(--menu-fundo));
  }
  @starting-style {
    .mobile-menu:not([hidden]) { clip-path: inset(0 0 100% 0); opacity: 1; }
  }
  .mobile-menu > *,
  .mobile-menu__sub > a {
    opacity: 0;
    transform: translateY(-8px);
    /* saída: junto com o fundo (com --menu-saida-passo > 0, de baixo para cima) */
    transition: opacity var(--menu-item) ease, transform var(--menu-item) var(--menu-curva);
    transition-delay: calc(var(--r, 0) * var(--menu-saida-passo));
  }
  .mobile-menu:not([hidden]) > *,
  .mobile-menu__sub:not([hidden]) > a {
    opacity: 1;
    transform: none;
    /* entrada: quando o fundo está quase no fim, de cima para baixo */
    transition-delay: calc(var(--menu-fundo) * 0.7 + var(--i, 0) * var(--menu-passo));
  }
  .mobile-menu__sub:not([hidden]) > a { transition-delay: calc(var(--i, 0) * var(--menu-passo)); }   /* categorias: logo ao abrir */
  @starting-style {
    .mobile-menu:not([hidden]) > *,
    .mobile-menu__sub:not([hidden]) > a { opacity: 0; transform: translateY(-8px); }
  }
  .mobile-menu > :nth-child(1), .mobile-menu__sub > a:nth-child(1) { --i: 0; }
  .mobile-menu > :nth-child(2), .mobile-menu__sub > a:nth-child(2) { --i: 1; }
  .mobile-menu > :nth-child(3), .mobile-menu__sub > a:nth-child(3) { --i: 2; }
  .mobile-menu > :nth-child(4), .mobile-menu__sub > a:nth-child(4) { --i: 3; }
  .mobile-menu > :nth-child(5), .mobile-menu__sub > a:nth-child(5) { --i: 4; }
  .mobile-menu > :nth-child(6), .mobile-menu__sub > a:nth-child(6) { --i: 5; }
  .mobile-menu > :nth-child(7), .mobile-menu__sub > a:nth-child(7) { --i: 6; }
  .mobile-menu > :nth-child(8), .mobile-menu__sub > a:nth-child(8) { --i: 7; }
  .mobile-menu > :nth-child(9), .mobile-menu__sub > a:nth-child(9) { --i: 8; }
  .mobile-menu > :nth-child(n+10) { --i: 9; }
  .mobile-menu > :nth-last-child(1) { --r: 0; }
  .mobile-menu > :nth-last-child(2) { --r: 1; }
  .mobile-menu > :nth-last-child(3) { --r: 2; }
  .mobile-menu > :nth-last-child(4) { --r: 3; }
  .mobile-menu > :nth-last-child(5) { --r: 4; }
  .mobile-menu > :nth-last-child(6) { --r: 5; }
  .mobile-menu > :nth-last-child(n+7) { --r: 6; }
  @media (prefers-reduced-motion: reduce) {
    .mobile-menu,
    .mobile-menu[hidden],
    .mobile-menu > *,
    .mobile-menu__sub > a { transition: none !important; }
  }
  .mobile-menu a:not(.btn),
  .mobile-menu .mobile-menu__linha {
    padding: 0.9rem 0.1rem;
    font-size: var(--tamanho-menu-celular);
    font-weight: var(--peso-menu);
    letter-spacing: var(--espaco-letras-menu);
    text-decoration: none;
    color: var(--text);
    border-bottom: 1px solid var(--line);
  }
  .mobile-menu a:not(.btn):last-of-type { border-bottom: none; }
  .mobile-menu .btn { margin-top: 1rem; justify-content: center; }
  /* Instagram no fim do menu (20/10/2026): discreto, centralizado, na cor secundária, 44 px de toque */
  .mobile-menu a.mobile-menu__insta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    min-height: 44px;
    margin-top: 0.6rem;
    padding: 0.4rem 0;
    border-bottom: 0;
    font-size: 0.875rem;
    color: var(--text-2);
  }
  .mobile-menu a.mobile-menu__insta:hover { color: var(--accent); }
  .mobile-menu__insta svg { width: 18px; height: 18px; flex: none; }
  /* Celular: "Serviços" com a seta ao lado, que abre as categorias (script.js) */
  .mobile-menu .mobile-menu__linha {   /* a linha inteira abre e fecha as categorias (acordeão); a seta só mostra o estado */
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-height: 44px;
    border: 0;
    border-bottom: 1px solid var(--line);
    background: transparent;
    color: var(--text);
    font-family: inherit;
    text-align: left;
    cursor: pointer;
  }
  .mobile-menu__linha svg { flex: none; width: 20px; height: 20px; color: var(--accent); transition: transform 0.2s ease; }
  .mobile-menu__linha[aria-expanded="true"] svg { transform: rotate(180deg); }
  .mobile-menu__grupo:has(a[aria-current]) .mobile-menu__linha { color: var(--accent); }   /* seção Serviços na tela */
  .mobile-menu__sub { display: flex; flex-direction: column; padding-left: 1rem; border-bottom: 1px solid var(--line); }
  .mobile-menu__sub[hidden] { display: none; }
  .mobile-menu .mobile-menu__sub a {
    padding: 0.75rem 0.1rem;
    font-size: 0.95rem;
    font-weight: var(--peso-menu);
    letter-spacing: 0;
    text-transform: none;
    border-bottom: 1px solid color-mix(in srgb, var(--line) 60%, transparent);
  }
  .mobile-menu .mobile-menu__sub a:last-of-type { border-bottom: none; }
  @media (prefers-reduced-motion: reduce) {
    .mobile-menu__linha svg { transition: none; }
  }

  /* Menu hambúrguer até 75em (1200px com a fonte padrão): o menu completo do
     computador (logo + 6 links + Agendar) precisa de ~1047px. Em "em", o limite
     cresce junto com a fonte do navegador. O script.js usa o mesmo limite. */
  @media (max-width: 75em) {
    .nav a:not(.btn), .nav .nav__grupo { display: none; }   /* inclui o Instagram (.nav__insta) */
    .nav { gap: 0.75rem; }
    .hamburger { display: inline-flex; }
    .mobile-menu:not([hidden]) { display: flex; }
  }
  /* E também quando o menu completo não cabe no próprio topo (máx. 1140px):
     a container query mede o espaço do topo em "em", que cresce com o texto
     aumentado (inclusive no Android, onde a media query acima não percebe).
     O topo usa a letra do corpo (17px). Com 6 links (com "Blog"), o menu
     completo precisa de ~61,6em (1047px) e cabe com a fonte padrão (o topo
     tem 63,8em). Antes do hambúrguer, a fonte e o espaço entre os links
     diminuem um pouco (63,5em): assim o menu precisa de ~55,4em e continua
     inteiro até ~110% de texto. Abaixo de 57,5em, hambúrguer. Ao acrescentar
     um link, refaça as contas. Só acima de 75em (onde a media query acima
     não vale), para não mudar o topo do tablet. */
  .topbar__inner { container: topo / inline-size; }
  @media (min-width: 75.0625em) {
    @container topo (max-width: 74em) {   /* 29/10/2026: com "Orçamento", o menu diminui mais cedo (antes 63.5em) */
      .nav { gap: 1.5rem; }
      .nav a.nav__insta { margin-left: calc(var(--botao-topo-insta-espaco) - 1.5rem); }
      .nav a:not(.btn) { font-size: calc(var(--tamanho-menu) * 0.93); letter-spacing: 0; }
    }
  }
  @container topo (max-width: 64em) {   /* 29/10/2026: com "Orçamento", o hambúrguer entra abaixo de 64em (antes 57.5em) */
    .nav a:not(.btn), .nav .nav__grupo { display: none; }
    .nav { gap: 0.75rem; }
    .hamburger { display: inline-flex; }
    .mobile-menu:not([hidden]) { display: flex; }
  }

  /* ---------- Hero ---------- */
  .hero {
    padding-block: clamp(1rem, 2.5vw, 1.75rem) clamp(1.5rem, 3vw, 2.25rem);
  }
  .hero__inner {
    display: grid;
    grid-template-columns: 1.12fr 0.88fr;
    gap: clamp(1.75rem, 4.5vw, 3.25rem);
    align-items: center;
  }
  .hero h1 {
    font-size: var(--step-4);
    margin-bottom: 1rem;
  }
  .hero h1 em {
    font-style: var(--italico-display);
    color: var(--accent);
  }
  .hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.9rem;
    margin-top: 1.4rem;
  }
  .hero__trust {
    grid-column: 1 / -1;
    margin-top: clamp(1.4rem, 3vw, 2.1rem);
    padding-top: 1.2rem;
    border-top: 1px solid var(--line);
    display: flex;
    flex-wrap: wrap;          /* com o texto aumentado, os selos descem para a linha de baixo */
    align-items: center;
    gap: 0.5rem 1.8rem;
    font-size: 0.95rem;
    color: var(--text-2);
    letter-spacing: 0.02em;
  }
  .hero__trust span { display: inline-flex; align-items: center; gap: 0.55rem; white-space: nowrap; }
  .hero__trust span::before {
    content: "";
    flex: none;
    width: 5px; height: 5px;
    border-radius: 50%;
    background: var(--metal);
  }
  @media (max-width: 900px) {
    .hero__trust { flex-wrap: wrap; gap: 0.5rem 1.3rem; font-size: 0.88rem; }
  }

  @media (prefers-reduced-motion: no-preference) {
    .hero__inner > * {
      animation: rise 0.7s cubic-bezier(0.2, 0.7, 0.2, 1) both;
    }
    .hero__inner > *:nth-child(2) { animation-delay: 0.12s; }
    .hero__inner > *:nth-child(3) { animation-delay: 0.22s; }
    @keyframes rise {
      from { opacity: 0.001; transform: translateY(14px); }
      to   { opacity: 1; transform: translateY(0); }
    }
  }

  /* ---------- Photo placeholders ---------- */
  .photo {
    position: relative;
    border-radius: 3px;
    overflow: hidden;
    background:
      linear-gradient(150deg,
        var(--wash1, var(--accent-tint)) 0%,
        var(--wash2, var(--surface)) 62%,
        color-mix(in srgb, var(--wash1, var(--accent-tint)) 40%, var(--surface)) 100%);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--metal) 45%, transparent);
  }
  .photo::before {
    /* granulado sutil de atelier */
    content: "";
    position: absolute;
    inset: 0;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
    mix-blend-mode: soft-light;
    opacity: 0.55;
    pointer-events: none;
  }
  .photo::after {
    content: attr(data-note);
    position: absolute;
    left: 0;
    bottom: 0;
    margin: 0.85rem;
    padding: 0.4rem 0.7rem;
    background: color-mix(in srgb, var(--surface) 92%, transparent);
    color: var(--text-2);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    backdrop-filter: blur(2px);
  }
  .photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .photo:has(img)::before,
  .photo:has(img)::after { display: none; }
  /* Prévia desfocada: a versão de 32 px da foto (embutida no HTML pelo build),
     ampliada pelo navegador, aparece borrada até a foto chegar e cobri-la. */
  .photo--previa { background: var(--surface); }
  .photo.photo--previa::before {   /* vence ".photo:has(img)::before" */
    display: block;
    content: "";
    position: absolute;
    inset: 0;
    background: var(--previa) center / cover no-repeat;
    filter: blur(14px);
    transform: scale(1.15);   /* esconde a borda clara que o blur cria */
    mix-blend-mode: normal;   /* desfaz o granulado do .photo::before */
    opacity: 1;
  }
  .photo--previa img { position: relative; }   /* a foto fica por cima da prévia */

  .hero__figure {
    margin: 0;
    position: relative;
    padding: 0.7rem;
    width: 100%;
    max-width: 360px;
    justify-self: end;
    align-self: center;
  }
  .hero__figure::before {
    content: "";
    position: absolute;
    inset: 0;
    border: 1px solid color-mix(in srgb, var(--metal) 50%, transparent);
    /* faixa entre a foto e a moldura preenchida com o rosado da marca (passe-partout);
       no tema escuro, o mesmo token vira um vinho apagado */
    background: color-mix(in srgb, var(--accent-tint) 45%, transparent);
    transform: translate(0.6rem, 0.6rem);
    pointer-events: none;
  }
  .hero__figure .photo { aspect-ratio: 4/5; max-height: none;}
  .hero__figure .photo img { width: 130%; height: 100%; object-fit: cover; object-position: center 65%; }


  /* ---------- Topo escuro (heroEscuro no config) ----------
     Fundo vinho da faixa do formulário (--band-bg, igual nos dois temas),
     com texto e botões claros (contraste AA) e a moldura da foto em dourado
     claro com passe-partout claro. render.js põe a classe .hero--escuro. */
  .hero--escuro {
    background: var(--band-bg);
    color: var(--band-text);
    padding-block: clamp(1.75rem, 4vw, 3rem) clamp(2rem, 4vw, 3rem);
  }
  .hero--escuro h1 { color: var(--band-text); }
  .hero--escuro h1 em { color: var(--band-accent); }
  h2 em, h3 em { font-style: var(--italico-display); color: var(--gold-texto); }   /* destaque de título nas seções claras (Faria: dourado, sem itálico) */
  .hero--escuro .lead { color: color-mix(in srgb, var(--band-text) 85%, transparent); }
  /* Subtítulo do topo no computador (versão A, escolhida em 14/10/2026): mais leve e nítido,
     sobretudo no topo escuro. Só a partir de 1024 px; o celular não muda. */
  @media (min-width: 1024px) {
    .hero .lead {
      font-family: var(--font-body);
      font-size: var(--tamanho-subtitulo-topo);
      font-weight: 400;
      letter-spacing: 0;
      line-height: var(--altura-linha-subtitulo-topo);
    }
  }
  /* Foto do topo dissolvida no fundo (versão suave, escolhida pelo Igor em 20/10/2026):
     a partir de 1024 px, a foto aparece inteira (sem corte), sem a moldura dourada nem o
     passe-partout, e as bordas se dissolvem no fundo por uma máscara com degradê nas quatro
     bordas. A máscara vale para a caixa da foto inteira (foto, prévia desfocada e o véu da
     entrada), então nada aparece em retângulo. Intensidade em --foto-topo-dissolucao, no
     topo. O celular não muda. Para voltar à foto com moldura, apague este bloco. */
  @media (min-width: 1024px) {
    .hero__figure { padding: 0; }
    .hero__figure::before { display: none; }   /* moldura dourada e passe-partout */
    .hero__figure .photo {
      aspect-ratio: auto;
      background: none;
      border-radius: 0;
      -webkit-mask-image:
        linear-gradient(to right, transparent, #000 var(--foto-topo-dissolucao), #000 calc(100% - var(--foto-topo-dissolucao)), transparent),
        linear-gradient(to bottom, transparent, #000 var(--foto-topo-dissolucao), #000 calc(100% - var(--foto-topo-dissolucao)), transparent);
      -webkit-mask-composite: source-in;
              mask-image:
        linear-gradient(to right, transparent, #000 var(--foto-topo-dissolucao), #000 calc(100% - var(--foto-topo-dissolucao)), transparent),
        linear-gradient(to bottom, transparent, #000 var(--foto-topo-dissolucao), #000 calc(100% - var(--foto-topo-dissolucao)), transparent);
              mask-composite: intersect;
    }
    .hero__figure .photo img { width: 100%; height: auto; object-fit: contain; }   /* foto inteira, na proporção dela */
  }
  .hero--escuro .btn:not(.btn--ghost) {                       /* botão principal claro, como o da faixa */
    --_bg: var(--band-text);
    --_fg: var(--band-btn-text);
  }
  /* Botão secundário (hero.mostrarBotaoServicos): contorno de 2 px, claro (mais de 3:1
     sobre o vinho), sem preencher como o principal. O 2º pixel é uma sombra interna,
     para o botão ficar com a mesma altura do "Agendar horário". */
  .hero--escuro .btn--ghost {
    --_fg: var(--band-text);
    --_contorno: color-mix(in srgb, var(--band-text) 75%, transparent);
    border-color: var(--_contorno);
    box-shadow: inset 0 0 0 1px var(--_contorno);
  }
  .hero--escuro .btn:hover { box-shadow: 0 10px 24px -12px var(--sombra-botao-escuro); }
  .hero--escuro .btn--ghost:hover {
    background: color-mix(in srgb, var(--band-text) 10%, transparent);
    box-shadow: inset 0 0 0 1px var(--_contorno);
  }
  .hero--escuro .hero__trust {
    border-top-color: color-mix(in srgb, var(--band-text) 18%, transparent);
    color: color-mix(in srgb, var(--band-text) 85%, transparent);
  }
  .hero--escuro .hero__trust span::before { background: var(--band-metal); }
  .hero--escuro .hero__figure::before {
    border-color: color-mix(in srgb, var(--band-metal) 70%, transparent);
    background: color-mix(in srgb, var(--band-text) 12%, transparent);
  }

  /* ---------- Seções (largura do texto de introdução: --largura-texto, no topo) ---------- */
  .section { padding-block: var(--section-y); }
  .section--line { border-top: 1px solid var(--line); }
  /* Fundos alternados (20/10/2026, proposta B escolhida pelo Igor): pela ordem das seções da
     página, uma sim, uma não ganha --fundo-secao-alt (o topo e a faixa do formulário, em vinho,
     ficam de fora e não contam). Vale para qualquer cliente e se refaz sozinho quando uma seção
     é desligada ou vira página própria. Com a mudança de tom marcando a troca de seção, a linha
     fina entre elas sai. Nas seções alternadas, o texto discreto usa --texto-dim-alt (contraste).
     Para voltar ao fundo único, apague as duas regras abaixo. */
  main > section:nth-child(even of .section:not(.band)) { background: var(--fundo-secao-alt); --text-dim: var(--texto-dim-alt); }
  main > .section.section--line { border-top: 0; }
  .section__head { max-width: var(--largura-texto); margin-bottom: clamp(1.1rem, 2.4vw, 1.6rem); padding-top: var(--respiro-titulo); }
  .section__head h2,
  .section__head h1 { font-size: var(--step-3); max-width: 20ch; }   /* h1: seção em página própria */
  .section__head p { margin-top: 0.9rem; color: var(--text-2); }
  /* Celular: o título que não cabe numa linha diminui só o necessário
     (--caracteres vem do render.js; os curtos ficam em --step-3). */
  @media (max-width: 720px) {
    .section__head h2,
    .section__head h1 { font-size: min(var(--step-3), calc((100vw - 2 * var(--pad)) / (var(--caracteres, 1) * var(--largura-letra-titulo)))); }
  }
  .section__head--row {
    max-width: none;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem 2.5rem;
    flex-wrap: wrap;
  }
  .section__head--row > div { max-width: 46ch; }

  /* Recuo das âncoras: a seção começa logo abaixo do topo, com --respiro-ancora de folga.
     --altura-topo é medida pelo script.js (os valores abaixo valem até ele medir). */
  [id] { scroll-margin-top: var(--recuo-ancora); }

  /* ---------- Carte de serviços ---------- */
  /* Botões de categoria dos serviços: só até 880 px, quando os grupos ficam
     em uma coluna e a lista fica longa (render.js: servicosCategorias). */
  /* Atalhos em uma linha só (.categorias--linha, com servicos.cards; 22/10/2026): no celular, uma
     linha deslizável, como abas, sincronizada com o carrossel (o atalho do card atual fica
     preenchido); no computador, a mesma linha, centralizada. As bordas esmaecem para indicar
     que a linha desliza. */
  .categorias.categorias--linha {
    display: flex;
    flex-wrap: nowrap;
    justify-content: safe center;
    gap: 8px;
    overflow-x: auto;
    scrollbar-width: none;
    margin: 0 0 clamp(1.25rem, 4vw, 1.75rem);
    padding-block: 2px;
  }
  .categorias--linha::-webkit-scrollbar { display: none; }
  .categorias--linha .categoria {
    flex: none;
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0 14px;
    border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent);
    border-radius: 999px;
    font-size: 15px;
    font-weight: 600;
    color: var(--accent);
    text-decoration: none;
    white-space: nowrap;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  }
  .categorias--linha .categoria:hover,
  .categorias--linha .categoria:focus-visible,
  .categorias--linha .categoria.is-atual { background: var(--accent); color: var(--accent-contrast); border-color: var(--accent); }
  @media (min-width: 721px) {   /* computador e tablet: uma linha quando cabe; senão, duas, centralizadas (nenhum escondido) */
    .categorias.categorias--linha { flex-wrap: wrap; justify-content: center; overflow: visible; gap: 6px; }
    .categorias--linha .categoria { font-size: 14px; padding: 0 12px; }
  }
  @media (max-width: 720px) {
    .categorias.categorias--linha {
      justify-content: flex-start;
      margin-inline: calc(-1 * var(--pad));
      padding-inline: var(--pad);
      scroll-padding-inline: var(--pad);
      -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--pad), #000 calc(100% - 2.5rem), transparent);
              mask-image: linear-gradient(to right, transparent 0, #000 var(--pad), #000 calc(100% - 2.5rem), transparent);
    }
  }
  /* a linha de atalhos da frota e do blog (galeria.atalhos, blog.atalhos) usa o mesmo desenho */
  .galeria__atalhos, .blog__atalhos { margin-top: 0; }
  .categorias:not(.categorias--linha) { display: none; }
  @media (max-width: 880px) {
    .categorias:not(.categorias--linha) {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin: 0 0 clamp(1.25rem, 4vw, 1.75rem);
    }
    .categoria {
      display: inline-flex;
      align-items: center;
      min-height: 44px;
      padding: 0 14px;
      border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent);
      border-radius: 999px;
      font-size: 15px;   /* em px, como os botões no celular (ver regra de uma linha) */
      font-weight: 700;
      color: var(--accent);
      text-decoration: none;
      white-space: nowrap;
      transition: background 0.18s ease, color 0.18s ease;
    }
    .categoria:hover,
    .categoria:focus-visible { background: var(--accent); color: var(--accent-contrast); }
  }

  /* ---------- Serviços em cards com foto (servicos.cards, 22/10/2026) ----------
     Card com a foto e o título centralizado; aberto (toque, ou mouse e foco no computador): o
     bloco sobe, o título vai para a esquerda e fica dourado, a linha dourada cresce, aparecem
     a descrição e o "Solicitar ›" (com atraso). Celular: carrossel com indicadores (o atual,
     comprido); computador: grade. Variáveis --svc-altura e --svc-duracao. */
  .carte.carte--cards { display: block; }
  .svc-trilho { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: 1rem; }
  /* Última linha centralizada (24/10/2026): com 3 colunas (ou 2), o card que sobra na última linha
     fica no centro, em vez de encostado à esquerda (ex.: 10 serviços em 3 colunas). A grade passa a
     ter o dobro de colunas, e cada card ocupa duas; a largura dos cards não muda. Mede a largura
     da área dos cards (container "servicos"), então acompanha o texto aumentado. Só a partir de
     721px (no celular, os cards são um carrossel). */
  .carte.carte--cards { container: servicos / inline-size; }
  @media (min-width: 721px) {
    @container servicos (min-width: 53rem) and (max-width: 70.9375rem) {
      .svc-trilho { grid-template-columns: repeat(6, minmax(0, 1fr)); }
      .svc-trilho > .svc { grid-column: span 2; }
      .svc-trilho > .svc:last-child:nth-child(3n+1) { grid-column: 3 / span 2; }
      .svc-trilho > .svc:nth-last-child(2):nth-child(3n+1) { grid-column: 2 / span 2; }
      .svc-trilho > .svc:last-child:nth-child(3n+2) { grid-column: 4 / span 2; }
    }
    @container servicos (min-width: 35rem) and (max-width: 52.9375rem) {
      .svc-trilho { grid-template-columns: repeat(4, minmax(0, 1fr)); }
      .svc-trilho > .svc { grid-column: span 2; }
      .svc-trilho > .svc:last-child:nth-child(2n+1) { grid-column: 2 / span 2; }
    }
  }
  .svc {
    position: relative;
    height: var(--svc-altura);
    border: 1px solid color-mix(in srgb, var(--metal) 35%, transparent);
    border-radius: 8px;
    overflow: hidden;
    isolation: isolate;
    background: var(--band-bg);
    color: var(--band-text);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .svc:focus-visible { outline: 2px solid var(--metal); outline-offset: 3px; }
  .svc > .photo { position: absolute; inset: 0; height: 100%; aspect-ratio: auto; border-radius: 0; box-shadow: none; z-index: 0; }
  .svc > .photo img { width: 100%; height: 100%; object-fit: cover; transition: transform calc(var(--svc-duracao) * 1.6) ease; }
  .svc::before {   /* ao abrir, a foto escurece por inteiro (leitura da descrição sobre fotos claras), como no site atual */
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: color-mix(in srgb, var(--band-bg) var(--svc-escurecer), transparent);
    opacity: 0;
    transition: opacity var(--svc-duracao) ease;
  }
  .svc.is-aberto::before, .svc:focus-within::before { opacity: 1; }
  .svc__sem-foto { background: linear-gradient(160deg, var(--wash1), var(--wash2)); }
  .svc__sem-foto::after { content: none; display: none; }   /* sem a etiqueta do bloco de exemplo */
  .svc__sem-foto::before {   /* sem foto: o selo da marca em marca d'água, até a foto chegar */
    content: "";
    position: absolute;
    inset: 0;
    background: var(--logo-src) center 36% / 38% no-repeat;
    opacity: 0.16;
    filter: grayscale(0.3);
  }
  .svc::after {   /* degradê escuro de baixo para cima, mais forte com o card aberto */
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(to top, color-mix(in srgb, var(--band-bg) 96%, transparent) 0%, color-mix(in srgb, var(--band-bg) 55%, transparent) 38%, transparent 70%);
    transition: opacity var(--svc-duracao) ease;
  }
  .svc__conteudo {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    padding: 1.25rem 1.25rem 4.25rem;
    transform: translateY(2.75rem);
    transition: transform var(--svc-duracao) cubic-bezier(0.22, 0.61, 0.36, 1);
  }
  .svc__titulo {
    font-size: var(--step-3);
    text-align: center;
    color: var(--band-text);
    text-shadow: 0 2px 14px color-mix(in srgb, var(--band-bg) 70%, transparent);
    transition: color var(--svc-duracao) ease;
  }
  .svc__linha { display: block; width: 0; height: 2px; margin: 0.7rem 0 0.8rem; background: var(--band-metal); transition: width var(--svc-duracao) ease; }
  .svc__desc { margin: 0; max-height: 0; overflow: hidden; opacity: 0; font-family: var(--font-display); font-size: 1.12rem; line-height: 1.6; color: color-mix(in srgb, var(--band-text) 92%, transparent); transition: opacity var(--svc-duracao) ease, max-height var(--svc-duracao) ease; }
  .svc__solicitar {
    position: absolute;
    left: 1.25rem;
    bottom: 1rem;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-weight: 700;
    font-size: var(--tamanho-botao);
    letter-spacing: 0.04em;
    color: var(--band-metal);
    text-decoration: none;
    opacity: 0;
    visibility: hidden;
    transform: translateY(0.75rem);
    transition: opacity var(--svc-duracao) ease 0.15s, transform var(--svc-duracao) ease 0.15s, visibility 0s linear var(--svc-duracao);
  }
  /* aberto: toque (.is-aberto, script.js) ou foco; no computador, também ao passar o mouse */
  .svc.is-aberto .svc__conteudo, .svc:focus-within .svc__conteudo { transform: none; }
  .svc.is-aberto .svc__titulo, .svc:focus-within .svc__titulo { text-align: left; color: var(--band-accent); }
  .svc.is-aberto .svc__linha, .svc:focus-within .svc__linha { width: 3rem; }
  .svc.is-aberto .svc__desc, .svc:focus-within .svc__desc { max-height: 24rem; opacity: 1; }
  .svc.is-aberto .svc__solicitar, .svc:focus-within .svc__solicitar { opacity: 1; visibility: visible; transform: none; transition-delay: 0.15s, 0.15s, 0s; }
  .svc.is-aberto > .photo img, .svc:focus-within > .photo img { transform: scale(1.06); }
  @media (hover: hover) and (pointer: fine) {
    .svc:hover .svc__conteudo { transform: none; }
    .svc:hover .svc__titulo { text-align: left; color: var(--band-accent); }
    .svc:hover .svc__linha { width: 3rem; }
    .svc:hover .svc__desc { max-height: 24rem; opacity: 1; }
    .svc:hover .svc__solicitar { opacity: 1; visibility: visible; transform: none; transition-delay: 0.15s, 0.15s, 0s; }
    .svc:hover > .photo img { transform: scale(1.06); }
    .svc:hover::before { opacity: 1; }
  }
  .svc-indicadores { display: none; }
  @media (max-width: 720px) {
    .svc-trilho {
      display: flex;
      gap: 0.75rem;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      overscroll-behavior-x: contain;
      margin-inline: calc(-1 * var(--pad));
      padding-inline: var(--pad);
      scroll-padding-inline: var(--pad);
      scrollbar-width: none;
    }
    .svc-trilho::-webkit-scrollbar { display: none; }
    .svc { flex: 0 0 86%; scroll-snap-align: start; height: var(--svc-altura-celular); }
    .svc-indicadores { display: flex; justify-content: center; flex-wrap: wrap; margin-top: 0.5rem; }
    .svc-indicador {
      display: grid;
      place-items: center;
      width: 2.15rem;
      height: 44px;
      padding: 0;
      border: 0;
      background: none;
      cursor: pointer;
    }
    .svc-indicador::before {   /* o traço: curto; o do card atual, comprido */
      content: "";
      width: 0.5rem;
      height: 0.5rem;
      border-radius: 999px;
      background: color-mix(in srgb, var(--metal) 40%, transparent);
      transition: width 0.3s ease, background 0.3s ease;
    }
    .svc-indicador.is-atual::before { width: 1.75rem; background: var(--metal); }
    .svc-indicador:focus-visible { outline: 2px solid var(--metal); outline-offset: -6px; border-radius: 6px; }
  }
  @media (prefers-reduced-motion: reduce) {
    .svc *, .svc::after { transition: none !important; }
    .svc > .photo img { transform: none !important; }
  }

  .carte {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(1.5rem, 4vw, 2.75rem);
  }
  .carte__group h3 {
    font-size: var(--step-1);
    padding-bottom: 0.8rem;
    border-bottom: 1px solid var(--metal);
    display: flex;
    align-items: baseline;
    justify-content: space-between;
  }
  .carte__group h3 span {
    font-family: var(--font-body);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--text-dim);
  }

  .item {
    display: grid;
    grid-template-columns: 1fr auto;
    column-gap: 1.25rem;
    row-gap: 0.35rem;
    padding-block: 1.15rem;
    border-bottom: 1px solid var(--line);
  }
  .item__name { font-weight: 700; }
  .item__price {
    text-align: right;
    font-weight: 700;
    color: var(--accent);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }
  .item__desc {
    grid-column: 1 / -1;
    color: var(--text-dim);
    font-size: 1rem;
    line-height: 1.5;
    max-width: 46ch;
  }
  .item__meta {
    grid-column: 1 / -1;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--text-dim);
  }
  /* "Agendar ›" de cada serviço (servicos.exibirPrecos: false), no lugar do preço:
     discreto, em letras normais, na cor da marca. Só o link é tocável; a área
     invisível (::before) completa os 44 px de toque sem mudar a altura da lista. */
  .item__agendar {
    position: relative;
    justify-self: end;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--accent);
    text-decoration: none;
    white-space: nowrap;
  }
  .item__agendar::before { content: ""; position: absolute; inset: -11px -10px; }
  .item__agendar:hover { text-decoration: underline; text-underline-offset: 3px; }
  .item__agendar:focus-visible { outline-offset: 4px; }

  /* Selo "Mais pedido" (maisPedido: true no serviço), ao lado do nome */
  .selo-mais-pedido {
    display: inline-block;
    vertical-align: 0.12em;
    margin-left: 0.15rem;
    padding: 0.15em 0.65em;
    border-radius: 999px;
    background: color-mix(in srgb, var(--accent-tint) 70%, transparent);
    color: var(--text);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    white-space: nowrap;
  }

  /* Vale-presente (servicos.valePresente), depois dos grupos de serviços */
  .carte__vale {
    grid-column: 1 / -1;
    display: grid;
    gap: 0.5rem;
    justify-items: start;
    padding: 1.4rem clamp(1.25rem, 3vw, 1.75rem);
    background: var(--surface);
    border: 1px solid var(--line);
    border-top: 2px solid var(--metal);
    border-radius: 3px;
  }
  .carte__vale h3 { font-size: var(--step-1); }
  .carte__vale p { color: var(--text-2); font-size: 1rem; max-width: 60ch; }
  .carte__vale .inline-cta { margin-top: 0.4rem; }

  .carte__note {
    grid-column: 1 / -1;
    margin-top: 0.5rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem 1.5rem;
    padding: 1.4rem 1.6rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 3px;
  }
  .carte__note p { color: var(--text-2); font-size: 1rem; }
  .carte__note strong { color: var(--text); font-family: var(--font-display); font-style: var(--italico-display); font-weight: 400; }
  /* Vale-presente e desconto juntos (20/10/2026): dois cards lado a lado, como os de
     "Onde eu atendo" (a grade .carte tem duas colunas; abaixo de 880 px, uma, e eles
     empilham). Mesma altura, filete dourado no topo e o link embaixo. Só um dos
     dois: continua na largura inteira. */
  .carte__vale:has(+ .carte__note),
  .carte__vale + .carte__note {
    grid-column: auto;
    margin-top: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 1.4rem clamp(1.25rem, 3vw, 1.75rem);
    border-top: 2px solid var(--metal);
  }
  .carte__vale:has(+ .carte__note) .inline-cta,
  .carte__vale + .carte__note .inline-cta { margin-top: auto; padding-top: 0.4rem; }

  .inline-cta {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-weight: var(--peso-link-acao);
    font-size: var(--tamanho-botao);
    letter-spacing: var(--espaco-letras-botao);
    text-decoration: none;
    color: var(--accent);
    border-bottom: 1px solid currentColor;
    padding-bottom: 2px;
    transition: opacity 0.15s ease;
  }
  .inline-cta:hover { opacity: 0.65; }

  /* Área de toque de 44px nos links pequenos (chamadas, contatos do rodapé,
     crédito), sem mudar o visual: uma área invisível em volta do texto. */
  .nav a:not(.btn)::before { content: ""; position: absolute; inset: -5px -0.6rem; }   /* menu do computador/tablet */
  .inline-cta,
  .foot ul a,
  .foot__legal a { position: relative; }
  .inline-cta::before,
  .foot ul a::before,
  .foot__legal a::before {
    content: "";
    position: absolute;
    inset: -12px -4px;
  }

  /* Botões, chamadas e o @ do Instagram: sempre numa linha só, nunca quebram
     (regra do molde, ver CLAUDE.md). Em tela estreita, o espaçamento e a
     fonte diminuem para caber; se ainda assim não couber, encurte o texto
     no config.
     No celular (até 720 px), botões e chamadas têm tamanho em px (os mesmos
     valores da fonte padrão de 16 px): com a fonte do sistema aumentada
     (115%, 130%), eles continuam cabendo numa linha. O restante do texto
     acompanha a fonte do sistema normalmente. */
  .btn, .inline-cta { white-space: nowrap; }
  @media (max-width: 720px) {
    .btn, .inline-cta { font-size: var(--tamanho-botao-celular); }
    .btn { gap: 9.6px; padding: 16px 25.6px; }
    .btn--light { font-size: 15px; padding: 16.8px 31.2px; }
    .inline-cta { gap: 7.2px; }
  }
  @media (max-width: 380px) {
    .btn, .inline-cta { letter-spacing: 0; }
    .btn { padding-inline: 17.6px; }
  }
  @media (max-width: 340px) {
    .btn, .inline-cta { font-size: 13px; }
  }

  /* ---------- Galeria ---------- */
  .gallery {
    display: grid;
    /* minmax(0, 1fr): a coluna não cresce com o conteúdo (sem isso a
       galeria passava da tela) */
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.9rem;
  }
  .gallery figure { margin: 0; display: flex; flex-direction: column; }
  .g-tall { grid-row: span 2; }
  .g-tall .photo { flex: 1; }   /* a vertical preenche as duas linhas */
  .gallery figure:not(.g-tall) .photo { aspect-ratio: 1 / 1; }
  .gallery figcaption {
    margin-top: 0.55rem;
    font-size: 1rem;
    letter-spacing: 0.05em;
    color: var(--text-dim);
  }
  .gallery__foot {
    margin-top: 2rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
  }
  .gallery__foot small { color: var(--text-dim); }
  /* Fim da galeria: o botão "Agendar horário" no centro. Com espaço (a largura da
     seção medida na letra do texto, que cresce com a fonte do sistema aumentada,
     inclusive no Android), o link do Instagram fica à direita, na mesma linha;
     sem espaço (celular, tablet ou texto muito aumentado), os dois empilhados no centro. */
  #galeria > .wrap { container: galeria / inline-size; }
  .gallery__foot { flex-direction: column; justify-content: center; }
  @container galeria (min-width: 46em) {
    .gallery__foot { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }
    .gallery__foot > .btn { grid-column: 2; }
    .gallery__foot > .inline-cta { grid-column: 3; justify-self: end; }
  }

  /* Link de ampliar dentro da foto (vai para a versão grande; com
     JavaScript abre a foto ampliada). Ocupa a foto inteira. */
  .photo__ampliar { display: block; width: 100%; height: 100%; cursor: zoom-in; }
  .photo__ampliar:focus-visible { outline: 2px solid var(--accent); outline-offset: -4px; }

  /* Destaque no computador (a partir de 721 px): com o cursor sobre uma foto
     (ou o foco do teclado no link dela), as demais esmaecem e perdem um pouco
     de cor, e a destacada sobe com sombra suave. Ao sair, todas voltam ao
     normal. O cursor de lupa com "+" (zoom-in) aparece só na foto destacada.
     Ajustes: --galeria-destaque-* no 1º :root. No celular (carrossel), nada muda. */
  @media (min-width: 721px) {
    .gallery .photo {
      transition:
        opacity var(--galeria-destaque-duracao) var(--galeria-destaque-curva),
        filter var(--galeria-destaque-duracao) var(--galeria-destaque-curva),
        transform var(--galeria-destaque-duracao) var(--galeria-destaque-curva),
        box-shadow var(--galeria-destaque-duracao) var(--galeria-destaque-curva);
    }
    .gallery:has(.photo__ampliar:focus-visible) .photo:not(:has(.photo__ampliar:focus-visible)) {
      opacity: var(--galeria-destaque-opacidade);
      filter: saturate(var(--galeria-destaque-saturacao));
    }
    .gallery .photo:has(.photo__ampliar:focus-visible) {
      transform: translateY(calc(var(--galeria-destaque-elevacao) * -1));
      box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--metal) 45%, transparent), 0 12px 24px -12px var(--sombra-galeria);
    }
  }
  @media (min-width: 721px) and (hover: hover) and (pointer: fine) {
    .gallery:has(.photo:hover) .photo:not(:hover) {
      opacity: var(--galeria-destaque-opacidade);
      filter: saturate(var(--galeria-destaque-saturacao));
    }
    .gallery .photo:hover {
      transform: translateY(calc(var(--galeria-destaque-elevacao) * -1));
      box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--metal) 45%, transparent), 0 12px 24px -12px var(--sombra-galeria);
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .gallery .photo:hover,
    .gallery .photo:has(.photo__ampliar:focus-visible) { transform: none; }   /* sem elevação; fica só o contraste */
  }

  /* Pontinhos do carrossel: criados pelo js/script.js, só aparecem no celular */
  .gallery__dots { display: none; }

  /* Celular: carrossel horizontal deslizável (scroll-snap). A próxima foto
     aparece na borda; sem JavaScript, desliza do mesmo jeito (só sem os
     pontinhos). */
  @media (max-width: 720px) {
    .gallery {
      display: flex;
      gap: 0.75rem;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      overscroll-behavior-x: contain;
      /* faixa de borda a borda da tela; a 1ª foto alinha com o texto */
      margin-inline: calc(var(--pad) * -1);
      padding-inline: var(--pad);
      scroll-padding-inline: var(--pad);
      scrollbar-width: none;
    }
    .gallery::-webkit-scrollbar { display: none; }
    .gallery figure { flex: 0 0 78%; scroll-snap-align: start; }
    .gallery .photo,
    .gallery figure:not(.g-tall) .photo { flex: none; aspect-ratio: 4 / 5; }

    .gallery__dots {
      display: flex;
      justify-content: center;
      gap: 0.45rem;
      margin-top: 0.9rem;
    }
    .gallery__dots span {
      width: 6px;
      height: 6px;
      border-radius: 50%;
      background: color-mix(in srgb, var(--metal) 45%, transparent);
      transition: background 0.2s ease, transform 0.2s ease;
    }
    .gallery__dots span.is-atual { background: var(--accent); transform: scale(1.3); }
  }
  @media (prefers-reduced-motion: reduce) {
    .gallery__dots span { transition: none; }
  }

  /* ---------- Sobre ---------- */
  .about__inner {
    display: grid;
    grid-template-columns: 0.85fr 1.15fr;
    gap: clamp(2.5rem, 6vw, 5rem);
    align-items: start;
  }
  .about__figure { margin: 0; padding: 0.7rem; position: relative; }
  .about__figure::before {
    content: "";
    position: absolute;
    inset: 0;
    border: 1px solid color-mix(in srgb, var(--metal) 50%, transparent);
    transform: translate(-0.7rem, 0.7rem);
  }
  .about__figure .photo { aspect-ratio: 4 / 5; }
  .about__figure .photo img { object-position: var(--sobre-foto-posicao); }   /* enquadramento do retrato (Faria: o alto da foto, para não cortar a cabeça) */
  .about__titulo { font-size: var(--step-3); max-width: 20ch; margin-bottom: clamp(1.1rem, 2.4vw, 1.6rem); }   /* mesmo estilo dos títulos das seções (.section__head h2) */
  .about__body p + p { margin-top: 1.15rem; color: var(--text-2); }
  .about__body p:first-of-type { font-size: var(--step-1); color: var(--text); line-height: 1.5; }
  .sign {
    margin-top: 1.8rem;
    font-family: var(--font-display);
    font-style: var(--italico-display);
    font-size: 1.6rem;
    color: var(--accent);
  }
  .creds {
    margin: 2rem 0 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 0.75rem;
  }
  .creds li {
    display: flex;
    gap: 0.8rem;
    font-size: 1rem;
    color: var(--text-2);
  }
  /* Credenciais em cards (sobre.credenciais com objetos, 21/10/2026): como no site original
     da Faria, um card por atributo, com ícone, título em destaque e complemento; 2 colunas
     (celular comum e computador), uma por linha só em tela muito estreita ou com o texto aumentado. */
  .creds--cards { grid-template-columns: repeat(auto-fill, minmax(max(8.75em, calc(50% - 0.5rem)), 1fr)); gap: 0.75rem; }   /* no máximo 2 colunas (2 + 2); uma por linha só quando cada coluna ficaria abaixo de 8.75em */
  .creds--cards .cred {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.9rem 0.9rem 1rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-top: 2px solid var(--metal);
    border-radius: 3px;
  }
  .creds--cards .cred::before { content: none; display: none; }
  .cred__icone {
    display: grid;
    place-items: center;
    width: var(--cred-icone);
    height: var(--cred-icone);
    margin-bottom: 0.3rem;
    border-radius: 10px;
    background: color-mix(in srgb, var(--metal) 16%, transparent);
    color: var(--gold-texto);
  }
  .cred__icone svg { width: 54%; height: 54%; }
  .cred__titulo { font-family: var(--font-display); font-weight: 400; font-size: var(--step-1); line-height: 1.2; color: var(--text); }
  .cred__texto { font-size: 1rem; line-height: 1.45; color: var(--text-2); }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .cred__icone { color: var(--metal); }
  }
  :root[data-theme="dark"] .cred__icone { color: var(--metal); }
  .creds li::before {
    content: "";
    flex: none;
    width: 1.1rem;
    height: 1.1rem;
    margin-top: 0.2rem;
    background: var(--metal);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") no-repeat center / contain;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") no-repeat center / contain;
  }

  /* ---------- Prova social ---------- */
  .quotes {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1.25rem, 3vw, 2rem);
  }
  .quote {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
    margin: 0;                                /* a <figure> tem 40px de margem padrão */
    background: var(--surface);
    border: 1px solid var(--line);
    border-top: 2px solid var(--metal);
    border-radius: 3px;
    padding: clamp(1.5rem, 3vw, 2rem);
  }
  .quote blockquote {
    margin: 0;
    font-family: var(--font-display);
    font-size: var(--step-1);
    line-height: 1.4;
    color: var(--text);
  }
  .quote blockquote::before {
    content: "\201C";
    display: block;
    font-size: 2.6rem;
    line-height: 0.6;
    color: var(--accent);
    margin-bottom: 0.4rem;
  }
  .quote figcaption {
    font-size: 1rem;
    letter-spacing: 0.06em;
    color: var(--text-dim);
    margin-top: auto;
  }
  .quote figcaption strong {
    display: block;
    color: var(--text);
    font-family: var(--font-body);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    font-size: 1rem;
    margin-bottom: 0.2rem;
  }
  .rating {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.6rem;
    margin-top: clamp(1.25rem, 3vw, 2rem);
    padding: 1.1rem clamp(1.25rem, 3vw, 1.75rem);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 3px;
    font-size: var(--step-1);
    color: var(--text-2);
  }
  .rating b { color: var(--text); font-weight: 700; }
  .rating .stars { color: var(--metal); letter-spacing: 0.1em; }
  .rating a { color: var(--accent); text-underline-offset: 3px; white-space: nowrap; }

  /* Botão "Avalie no Google": discreto (contorno fino na cor da marca, fundo
     transparente, "G" colorido), para não competir com o de agendar */
  .avaliar { margin: clamp(1.25rem, 3vw, 1.75rem) 0 0; }
  .sem-quebra { white-space: nowrap; }   /* telefone: nunca em duas linhas */

  /* Abertura dos depoimentos: "G" do Google, estrelas e nota (20/10/2026) */
  .nota-google-topo { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0.75rem; margin: 0 0 0.6rem; }
  .nota-google {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 44px;                  /* toque de 44 px */
    color: var(--text-2);
    text-decoration: none;
    font-size: 0.95rem;
  }
  .nota-google svg { width: 1.2em; height: 1.2em; flex: none; }
  .nota-google__texto { color: var(--text); font-weight: 600; }
  a.nota-google:hover .nota-google__texto { text-decoration: underline; text-underline-offset: 3px; }
  a.nota-google:focus-visible { outline: 2px solid var(--metal); outline-offset: 4px; border-radius: 3px; }
  /* estrelas proporcionais à nota: 5 de fundo, apagadas, e por cima as cheias, cortadas
     em (nota / 5) da largura (ex.: 4,9 = 98%); decorativas (aria-hidden), a nota em número ao lado */
  .estrelas { position: relative; display: inline-block; line-height: 1; letter-spacing: 0.08em; color: color-mix(in srgb, var(--metal) 32%, transparent); }
  .estrelas::before { content: "★★★★★"; }
  .estrelas::after {
    content: "★★★★★";
    position: absolute;
    inset: 0 auto 0 0;
    width: calc(var(--nota) / 5 * 100%);
    overflow: hidden;
    white-space: nowrap;
    color: var(--metal);
  }

  .btn--google {
    --_bg: transparent;
    --_fg: var(--text);
    border-color: color-mix(in srgb, var(--accent) 55%, transparent);
    box-shadow: none;
    min-height: 44px;
  }
  .btn--google svg { width: 1.25em; height: 1.25em; }
  .btn--google:hover {
    background: color-mix(in srgb, var(--accent) 8%, transparent);
    box-shadow: none;
  }
  /* modo "demonstracao" sem link: tracejado e sem ação (pedido do Igor, 13/10/2026) */
  .btn--provisorio {
    border-style: dashed;
    cursor: default;
    opacity: 0.85;
  }
  .btn--provisorio:hover { transform: none; background: transparent; }

  /* Modo "demonstracao": exemplos ilustrativos e espaços a preencher, com o
     mesmo acabamento final dos dados reais (a prévia vende o site). Só a
     etiqueta discreta "Exemplo ilustrativo" sinaliza o exemplo; nunca
     aparecem no modo "cliente" (render.js). */
  .etiqueta-exemplo {
    align-self: flex-start;
    display: inline-block;
    font-family: var(--font-body);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--text-2);
    border: 1px solid var(--line);
    border-radius: 999px;
    padding: 0.2em 0.8em;
  }
  .rating--exemplo .etiqueta-exemplo { order: 9; margin-left: auto; }   /* no fim da faixa */
  .provisorio {
    margin: clamp(1.25rem, 3vw, 2rem) 0 0;
    padding: 1.4rem clamp(1.25rem, 3vw, 1.75rem);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 3px;
    font-size: 1rem;
    font-style: italic;
    color: var(--text-dim);
    text-align: center;
  }
  .provisorio--largo { grid-column: 1 / -1; margin-top: 0; }
  /* Texto de exemplo do config ([Bairro]...) e foto ainda sem arquivo, só no modo "demonstracao" */
  .a-preencher {
    text-decoration: underline dotted color-mix(in srgb, var(--accent) 55%, transparent);
    text-decoration-thickness: 1.5px;
    text-underline-offset: 0.2em;
  }

  @media (max-width: 800px) {
    .quotes { grid-template-columns: 1fr; }
  }
  /* Celular (até 720 px): depoimentos em carrossel deslizável, como a galeria.
     O próximo card aparece na borda; os pontinhos vêm do script.js (sem
     JavaScript, desliza igual). No computador e no tablet, nada muda. */
  @media (max-width: 720px) {
    .quotes {
      display: flex;
      gap: 0.9rem;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      overscroll-behavior-x: contain;
      margin-inline: calc(var(--pad) * -1);
      padding-inline: var(--pad);
      scroll-padding-inline: var(--pad);
      scrollbar-width: none;
    }
    .quotes::-webkit-scrollbar { display: none; }
    .quotes > .quote { flex: 0 0 85%; scroll-snap-align: start; margin: 0; }
    .quotes > .provisorio { flex: 1 0 100%; }
  }

  /* ---------- Atendimento ---------- */
  .attend {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(1.5rem, 4vw, 3rem);
  }
  /* ---------- Pilares (secoes.pilares) ----------
     Logo depois do topo, no fundo das seções alternadas (fora da alternância). Com pouco
     espaço (celular, ou tablet com o texto aumentado): lista vertical compacta, sem card,
     centralizada, com um traço curto dourado acima de cada título. Com espaço (container query em "em", que acompanha
     o texto aumentado também no Android): três cards lado a lado, com o acabamento dos
     cards de atendimento. Limite em --: 38em (~646 px de conteúdo com a fonte padrão). */
  .pilares { background: var(--fundo-secao-alt); --text-dim: var(--texto-dim-alt); padding-block: var(--pilares-respiro); }
  .pilares > .wrap { container: pilares / inline-size; }
  .pilares__lista { display: grid; grid-template-columns: minmax(0, 1fr); }
  /* lista (celular): título e texto centralizados, com um traço curto dourado acima do título
     (Faria, 21/10/2026; antes, um ponto dourado à esquerda) */
  .pilares__item { position: relative; border-bottom: 1px solid var(--line); padding: 1.1rem 0; text-align: center; }
  .pilares__item:first-child { padding-top: 0; }
  .pilares__item:last-child { border-bottom: 0; padding-bottom: 0; }
  .pilares__item::before {
    content: "";
    display: block;
    width: var(--pilares-traco);
    height: 2px;
    margin: 0 auto 0.7rem;
    background: var(--metal);
  }
  .pilares__item p { max-width: 34ch; margin-inline: auto; }
  .pilares__item h3 { font-size: var(--step-0); margin-bottom: 0.2rem; }
  .pilares__item p { color: var(--text-2); }
  /* Título visível e ícones (pilares.mostrarTitulo e icone, 21/10/2026): título centralizado;
     com ícone, cada pilar fica centralizado (celular e computador), o ícone num círculo de
     linha dourada fina acima do título, e o traço dourado do celular sai. */
  .pilares__titulo { text-align: center; font-size: var(--step-3); margin: 0 0 clamp(1.25rem, 3.5vw, 2rem); }
  .pilares__item--icone { text-align: center; }
  .pilares__item--icone::before { content: none; }
  .pilares__icone {
    display: grid;
    place-items: center;
    width: var(--pilares-icone);
    height: var(--pilares-icone);
    margin: 0 auto 0.75rem;
    border: 1px solid color-mix(in srgb, var(--metal) 70%, transparent);
    border-radius: 50%;
    color: var(--gold-texto);
  }
  .pilares__icone svg { width: 50%; height: 50%; }
  .pilares__linhas { line-height: 1.6; }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .pilares__icone { color: var(--metal); }
  }
  :root[data-theme="dark"] .pilares__icone { color: var(--metal); }

  @container pilares (min-width: 38em) {
    .pilares__lista { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--pilares-espaco); }
    .pilares__item,
    .pilares__item:first-child,
    .pilares__item:last-child {
      background: var(--surface);
      border: 1px solid var(--line);
      border-top: 2px solid var(--metal);
      border-radius: 3px;
      padding: clamp(1.3rem, 2.4vw, 1.9rem);
    }
    .pilares__item::before { content: none; }
    .pilares__item { text-align: left; }
    .pilares__item--icone { text-align: center; }
    .pilares__item p { max-width: none; margin-inline: 0; }
    .pilares__item h3 { font-size: var(--step-1); margin-bottom: 0.6rem; }
  }

  .attend__card {
    background: var(--surface);
    border: 1px solid var(--line);
    border-top: 2px solid var(--metal);
    border-radius: 3px;
    padding: clamp(1.6rem, 3vw, 2.2rem);
  }
  .attend__card h3 {
    font-size: var(--step-1);
    margin-bottom: 0.9rem;
  }
  .attend__card p { color: var(--text-2); }
  .attend__card p + p { margin-top: 0.75rem; }
  .attend__card .muted { font-size: 1rem; color: var(--text-dim); }
  /* "Como chegar" (negocio.comoChegar), abaixo dos cards de atendimento */
  .como-chegar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.9rem 1.75rem; margin-top: 1.25rem; }

  /* Centralizados em todas as larguras (20/10/2026): nota do Google com as estrelas
     e "Avalie no Google" (depoimentos), "Como chegar" e a linha dos horários
     (atendimento). A etiqueta "Exemplo ilustrativo" fica na linha de baixo. */
  .nota-google-topo { flex-direction: column; justify-content: center; }
  .section__head:has(.nota-google-topo) { max-width: none; }   /* a nota fica no meio da seção, não do bloco do título; o título mantém o limite dele */
  .avaliar { text-align: center; }
  .como-chegar { flex-direction: column; gap: 0.5rem; }
  .como-chegar .etiqueta-exemplo,
  .nota-google-topo .etiqueta-exemplo { align-self: center; }
  .hours { justify-content: center; text-align: center; }
  /* Celular (até 720 px): também o botão do topo e o @perfil da galeria */
  @media (max-width: 720px) {
    .hero__actions { justify-content: center; }
    .section__head--row > .inline-cta { margin-inline: auto; }
  }
  .hours {
    margin-top: clamp(1.25rem, 2.5vw, 1.75rem);
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem 2rem;
    font-size: 1rem;
    color: var(--text-2);
  }
  .hours b { color: var(--text); }
  @media (max-width: 680px) { .attend { grid-template-columns: 1fr; } }

  /* ---------- FAQ ---------- */
  .faq { max-width: 760px; }
  /* Acordeão: todas fechadas; ao abrir uma, a anterior fecha (details name="faq") */
  .faq__item { border-bottom: 1px solid var(--line); }
  .faq__item:last-child { border-bottom: 0; }
  .faq__item summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 44px;
    padding: 1.1rem 0;
    font-family: var(--font-display);
    font-size: var(--step-1);
    color: var(--text);
    cursor: pointer;
    list-style: none;
  }
  .faq__item summary::-webkit-details-marker { display: none; }
  .faq__item summary::after {            /* "+" que vira "−" ao abrir */
    content: "+";
    flex: none;
    width: 1em;
    text-align: center;
    font-family: var(--font-body);
    font-size: 1.4em;
    line-height: 1;
    color: var(--accent);
  }
  .faq__item[open] summary::after { content: "\2212"; }
  .faq__item summary:hover { color: var(--accent); }
  .faq__item summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
  .faq__resposta { margin: -0.3rem 0 0; padding-bottom: 1.3rem; color: var(--text-2); }

  /* ---------- Faixa CTA final ---------- */
  .band {
    background: var(--band-bg);
    color: var(--band-text);
    text-align: center;
  }
  .band .wrap { padding-block: clamp(2.5rem, 5vw, 4rem); }
  .band__mark {
    display: block;
    width: var(--logo-faixa);
    height: var(--logo-faixa);
    margin: 0 auto 1.4rem;
    background: var(--logo-src) center / contain no-repeat;
  }
  .band h2 {
    font-size: var(--step-3);
    margin-inline: auto;
    color: var(--band-text);
    text-wrap: balance;   /* se quebrar, duas linhas equilibradas */
  }
  /* Celular: o título em no máximo duas linhas (--caracteres = a maior das duas, do render.js) */
  @media (max-width: 720px) {
    .band h2 { font-size: min(var(--step-3), calc((100vw - 2 * var(--pad)) / (var(--caracteres, 1) * var(--largura-letra-titulo)))); }
  }
  .band p { margin: 1rem auto 1.8rem; max-width: 64ch; color: color-mix(in srgb, var(--band-text) 82%, transparent); }
  /* Título da faixa com contorno (agendar.tituloContorno, 21/10/2026, réplica da Faria): moldura
     dourada fina dupla em volta da frase, em vez de uma faixa de fundo (a tarja logo antes já é
     uma faixa sólida). Espaço interno em --titulo-contorno-respiro. */
  .band--titulo-contorno h2 {
    width: fit-content;
    max-width: min(calc(100% - 12px), 14.5em);   /* a moldura abraça a frase em duas linhas, sem ocupar a largura toda no computador */
    margin-block: 0.5rem;
    padding: var(--titulo-contorno-respiro) calc(var(--titulo-contorno-respiro) * 1.4);
    border: 1px solid color-mix(in srgb, var(--band-metal) 80%, transparent);
    border-radius: 2px;
    background: var(--titulo-contorno-fundo);   /* fundo claro: a frase é o ponto de decisão da página e precisa saltar do fundo escuro (dono, 22/10) */
    color: var(--titulo-contorno-texto);
    outline: 1px solid color-mix(in srgb, var(--band-metal) 35%, transparent);
    outline-offset: 5px;
  }
  @media (max-width: 720px) {
    /* no celular, a frase em até três linhas, com letra de título (antes, duas linhas deixavam a letra pequena demais) */
    .band--titulo-contorno h2 { max-width: calc(100% - 12px); font-size: min(var(--step-3), var(--titulo-contorno-celular)); }
  }

  /* ---------- Formulário de agendamento (CTA final) ---------- */
  .booking-form {
    margin: 0.5rem auto 0;
    max-width: 700px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.1rem 1.25rem;
    text-align: left;
  }
  .booking-form__row { display: flex; flex-direction: column; gap: 0.45rem; }
  .booking-form__row--full { grid-column: 1 / -1; }
  .booking-form label {
    font-size: 0.76rem;   /* rótulo decorativo (caixa alta); os campos ficam em 1rem */
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: color-mix(in srgb, var(--band-text) 88%, transparent);
  }
  .booking-form__optional {
    text-transform: none;
    letter-spacing: 0;
    font-weight: 400;
    color: color-mix(in srgb, var(--band-text) 65%, transparent);
  }
  .booking-form input,
  .booking-form select,
  .booking-form textarea {
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--form-field-text);
    background: var(--band-text);
    border: 1px solid transparent;
    border-radius: 3px;
    padding: 0.8rem 0.9rem;
    width: 100%;
  }
  .booking-form textarea { resize: vertical; min-height: 3.4rem; }
  .booking-form input:focus-visible,
  .booking-form select:focus-visible,
  .booking-form textarea:focus-visible {
    outline: 2px solid var(--band-metal);
    outline-offset: 2px;
  }
  .booking-form [aria-invalid="true"] { border-color: var(--form-error-border); }
  .booking-form__error {
    display: block;
    min-height: 1.1em;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--form-error-text);
  }
  .booking-form__submit {
    grid-column: 1 / -1;
    justify-self: center;
    margin-top: 0.5rem;
    border: none;
    cursor: pointer;
  }
  @media (max-width: 640px) {
    .booking-form { grid-template-columns: 1fr; }
  }

  /* ---------- Rodapé ---------- */
  .foot {
    background: var(--surface);
    border-top: 1px solid var(--line);
  }
  .foot .wrap {
    padding-block: clamp(2rem, 4vw, 3rem);
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr;
    gap: 1rem;
  }
  .foot h2,   /* páginas sem h2 no conteúdo (ex.: 404): o build troca h3 por h2, mesmo visual */
  .foot h3 {
    font-family: var(--font-body);
    font-weight: 700;        /* mesmo visual de quando era h4 */
    line-height: inherit;
    text-wrap: wrap;
    font-size: 0.75rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--text-dim);
    margin: 0 0 1rem;
  }
  .foot a { color: var(--text-2); text-decoration: none; }
  .foot a:hover { color: var(--accent); }
  /* Compartilhar o site / Salvar contato: discretos, com área de toque de 44px */
  .foot__acoes {
    display: flex;
    flex-wrap: wrap;
    column-gap: 1.4rem;
    margin: 0.6rem 0 0;
  }
  .foot__acao {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    min-height: 44px;
    font-size: 0.875rem;
    white-space: nowrap;
  }
  .foot__acao svg { width: 1.05em; height: 1.05em; flex: none; }
  .foot__acao:hover,
  .foot__acao:focus-visible { text-decoration: underline; text-underline-offset: 3px; }

  /* Página 404 (dist/404.html, gerada pelo build a partir do molde) */
  .pagina-404 { text-align: center; padding-block: clamp(4rem, 12vw, 8rem); }
  .pagina-404 h1 { font-size: var(--step-4); margin-bottom: 1rem; }
  .pagina-404 p { max-width: 36rem; margin-inline: auto; color: var(--text-2); }
  .foot__privacidade { white-space: nowrap; }

  /* Página /avaliar (dist/avaliar.html): leve, centralizada, com o logo,
     o título e o botão "Avaliar no Google" (ou o aviso, sem link) */
  .pagina-avaliar {
    min-height: 100vh;
    min-height: 100svh;
    display: grid;
    place-content: center;
    justify-items: center;
    gap: 1.1rem;
    padding: 2rem var(--pad);
    text-align: center;
  }
  .pagina-avaliar__logo { width: 96px; height: 96px; }
  .pagina-avaliar h1 { font-size: var(--step-3); max-width: 18ch; }
  .pagina-avaliar p { color: var(--text-2); max-width: 36ch; }
  .pagina-avaliar .provisorio { margin: 0; }

  /* Redes sociais na coluna Contato, abaixo do telefone: ícone discreto + @,
     na cor do texto do rodapé, com o mesmo espaçamento da lista. Se o @ não
     couber numa linha da coluna, o script.js deixa só o ícone. */
  .foot__redes {
    display: grid;
    justify-items: start;
    gap: 0.6rem;
    margin-top: 0.6rem;
    font-size: 0.875rem;
  }
  .foot__rede {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    max-width: 100%;
    overflow-wrap: anywhere;
  }
  .foot__rede::before { content: ""; position: absolute; inset: -12px -4px; }   /* toque de 44px */
  .foot__rede--medir { white-space: nowrap; overflow-wrap: normal; max-width: none; }
  .foot__rede svg { width: 1.15em; height: 1.15em; flex: none; opacity: 0.85; }
  .foot__rede:hover svg, .foot__rede:focus-visible svg { opacity: 1; }

  /* E-mail na coluna Contato (contato.email): ícone de carta + endereço, como as redes */
  .foot__email { display: inline-flex; align-items: center; gap: 0.5rem; max-width: 100%; overflow-wrap: anywhere; }
  .foot__email svg { width: 1.15em; height: 1.15em; flex: none; opacity: 0.85; }
  .foot__email:hover svg, .foot__email:focus-visible svg { opacity: 1; }

  /* E-mail longo em texto corrido (ex.: contato dos Termos): quebra dentro do endereço, para o rótulo "E-mail:" não ficar sozinho na linha */
  .email-quebra { overflow-wrap: anywhere; }

  /* Texto só para leitor de tela (ex.: "Instagram:" antes do @) */
  .sr {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
  }

  /* Página de texto (dist/privacidade.html, gerada pelo build a partir do molde) */
  .pagina-texto .wrap { max-width: 46rem; }
  .pagina-texto h1 { font-size: var(--step-4); margin: 0.4rem 0 0.6rem; }
  .pagina-texto h2 { font-size: var(--step-2); margin: 2.2rem 0 0.7rem; }
  .pagina-texto p { color: var(--text-2); }
  .pagina-texto p + p { margin-top: 0.8rem; }
  .pagina-texto__data { color: var(--text-dim); }
  .pagina-texto ul { margin: 0; padding-left: 1.3rem; color: var(--text-2); }   /* regras do atendimento (/termos) */
  .pagina-texto li + li { margin-top: 0.5rem; }
  .pagina-texto li::marker { color: var(--metal); }
  .pagina-texto li strong { color: var(--text); }
  .pagina-texto .pagina-404__acoes { justify-content: flex-start; }
  .pagina-404__acoes { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.9rem; margin-top: 2rem; }

  /* ---------- Blog (dist/blog/index.html e dist/blog/<artigo>.html, gerados pelo build) ----------
     Página /blog/: etiqueta com o nome do negócio, título, subtítulo e os
     artigos em cartões (fundo --surface, linha fina e filete dourado, como
     os depoimentos). Computador e tablet: cartões lado a lado, em colunas
     de no mínimo 17em (empilham sozinhas com o texto aumentado). Celular
     (até 720 px): carrossel deslizável, com pontinhos do script.js. */
  .blog__head { max-width: 46rem; }
  .blog__head h1 { font-size: var(--step-4); }
  .blog__head p { font-family: var(--font-display); font-style: var(--italico-display); font-size: var(--step-1); color: var(--text-2); }
  /* Marca acima do título do blog (blog.marca): a assinatura do negócio e o complemento na linha
     de baixo, centralizados; blog.centralizado: título e subtítulo no centro (22/10/2026) */
  .blog__marca { display: flex; flex-direction: column; align-items: center; gap: 0.35rem; margin: 0 auto 1.5rem; text-align: center; color: var(--text); }
  .blog__marca .brand__name--imagem { height: var(--marca-altura-blog); -webkit-mask-position: center; mask-position: center; }
  .blog__marca-nome { font-family: var(--font-display); font-size: var(--step-3); line-height: 1.1; }
  .blog__head .blog__complemento { font-family: var(--font-body); font-style: normal; font-size: 0.8125rem; letter-spacing: 0.04em; color: var(--text-dim); }
  .blog__head--centro { margin-inline: auto; text-align: center; }
  .blog__head--centro h1, .blog__head--centro p { margin-inline: auto; }
  .blog__cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 17em), 1fr));
    gap: clamp(1.25rem, 3vw, 2rem);
  }
  .blog-card {
    display: flex;
    flex-direction: column;
    background: var(--surface);
    border: 1px solid var(--line);
    border-top: 2px solid var(--metal);
    border-radius: 3px;
    overflow: hidden;
    container-type: inline-size;   /* o título acompanha a largura do cartão (cqi) */
  }
  .blog-card__foto { display: block; }
  .blog-card__foto .photo { aspect-ratio: 4 / 3; border-radius: 0; box-shadow: none; }
  .blog-card__corpo {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    padding: clamp(1.25rem, 3vw, 1.6rem) 1.25rem;
  }
  .blog-card__meta,
  .artigo__meta { font-size: var(--step--1); letter-spacing: 0.04em; color: var(--text-dim); }
  /* título com no máximo 2 linhas e resumo sempre com 2 linhas (reticências no corte):
     os cartões ficam alinhados, com o "Ler artigo" na mesma altura */
  .blog-card__titulo {
    font-size: clamp(1rem, 5.4cqi, 1.15rem);   /* cartão estreito, letra um pouco menor: o título inteiro cabe em 2 linhas */
    line-height: 1.25;
    text-wrap: pretty;
    min-height: 2.5em;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
  }
  .blog-card__titulo a { color: var(--text); text-decoration: none; }
  .blog-card__titulo a:hover { color: var(--accent); }
  .blog-card__resumo {
    font-size: 1rem;
    line-height: 1.6;
    height: 3.2em;
    color: var(--text-2);
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
  }
  .blog-card__ler { align-self: flex-start; margin-top: auto; }
  @media (max-width: 720px) {
    .blog__cards {
      display: flex;
      gap: 0.9rem;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      overscroll-behavior-x: contain;
      margin-inline: calc(var(--pad) * -1);
      padding-inline: var(--pad);
      scroll-padding-inline: var(--pad);
      scrollbar-width: none;
    }
    .blog__cards::-webkit-scrollbar { display: none; }
    .blog__cards > .blog-card { flex: 0 0 88%; scroll-snap-align: start; }
    .blog-card__corpo { padding-inline: 1rem; }   /* com 88% e 1rem, o título inteiro cabe em 2 linhas a partir de ~375 px */
  }

  /* Página do artigo: largura confortável de leitura (texto em 1.0625rem) */
  .artigo .wrap { max-width: 46rem; }
  .artigo__figura { margin: 1.5rem 0 1.4rem; }
  .artigo__figura .photo { aspect-ratio: 3 / 2; }
  .artigo h1 { font-size: var(--step-3); margin: 0.5rem 0 1.6rem; }
  .artigo__texto { color: var(--text-2); }
  .artigo__texto > * + * { margin-top: 1rem; }
  .artigo__texto h2 { font-size: var(--step-2); color: var(--text); margin-top: 2.2rem; }
  .artigo__texto h3 { font-size: var(--step-1); color: var(--text); margin-top: 1.8rem; }
  .artigo__texto h2 + *,
  .artigo__texto h3 + * { margin-top: 0.7rem; }
  .artigo__texto ul,
  .artigo__texto ol { margin-bottom: 0; padding-left: 1.3rem; }
  .artigo__texto li + li { margin-top: 0.45rem; }
  .artigo__texto li::marker { color: var(--metal); }
  .artigo__texto strong { color: var(--text); }
  .artigo__texto a { color: var(--accent); text-underline-offset: 3px; }
  .artigo__agendar { margin-top: 2.4rem; }
  .blog--leia .section__head h2 { font-size: var(--step-2); }
  .foot__brand .brand-lockup { display: flex; align-items: center; gap: 0.7rem; }
  .foot__brand .brand__mark--sm {
    width: var(--logo-rodape);
    height: var(--logo-rodape);
    flex: none;
    background: var(--logo-src) center / contain no-repeat;
  }
  .foot__brand .brand__name { font-size: 1.15rem; }
  /* Nome como imagem (imagens.marca): máscara na cor do texto, sem caixa alta */
  .brand__name--imagem {
    display: block;
    height: var(--marca-altura-topo);
    aspect-ratio: var(--marca-proporcao);
    background-color: currentColor;
    -webkit-mask: var(--marca-src) left center / contain no-repeat;
    mask: var(--marca-src) left center / contain no-repeat;
    letter-spacing: 0;
  }
  .foot__brand .brand__name--imagem { height: var(--marca-altura-rodape); }
  /* Marca empilhada no rodapé (rodape.marcaEmpilhada): logo, nome (a assinatura em imagem,
     com imagens.marca), complemento menor e a descrição, centralizados na coluna. Do
     "Compartilhar" em diante, tudo à esquerda, como o resto do rodapé. */
  .foot__brand--empilhada { text-align: center; }
  .foot__brand--empilhada .brand-lockup { flex-direction: column; gap: 0.55rem; }
  .foot__brand--empilhada .brand__name,
  .foot__brand--empilhada .brand__name:not(.brand__name--imagem) {
    font-family: var(--font-display);
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0.02em;
    font-size: var(--rodape-nome);
    line-height: 1.1;
    color: var(--text);
  }
  .foot__complemento { display: block; margin-top: -0.25rem; font-size: 0.8125rem; letter-spacing: 0.04em; color: var(--text-dim); }
  .foot__brand--empilhada p { margin-inline: auto; }
  .foot__brand--empilhada .brand__name--imagem { -webkit-mask-position: center; mask-position: center; }
  .foot__brand--empilhada .foot__acoes { justify-content: flex-start; margin-inline: 0; max-width: none; }   /* do "Compartilhar" em diante, à esquerda (sem a margem automática da frase) */
  /* Rodapé: texto em 14px (0.875rem) e linha final em 13px (0.8125rem); a regra de
     16px vale para o texto de leitura do corpo do site, não para o rodapé. */
  .foot__brand p { margin-top: 0.9rem; color: var(--text-dim); font-size: 0.875rem; max-width: 32ch; }
  .foot ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; font-size: 0.875rem; }
  .foot__legal {
    border-top: 1px solid var(--line);
    text-align: center;
    font-size: 0.8125rem;
    color: var(--text-dim);
    padding: 1.5rem var(--pad);
  }
  /* Crédito do site: discreto, na cor da linha; destaca só no hover/foco.
     Quebra como um bloco (vai inteiro para a linha de baixo, se precisar). */
  .foot__credito { white-space: nowrap; }
  .foot__legal a { color: inherit; text-decoration: none; }
  .foot__legal a:hover,
  .foot__legal a:focus-visible { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
  /* Até 60em (960 px com a fonte padrão): a marca ocupa a linha toda; "Contato" e "Atendimento" ficam
     lado a lado só se cada coluna tiver ao menos 14em. Senão, empilham
     sozinhas (no celular, sempre). Como o limite está no tamanho da coluna
     em "em", ele acompanha a letra, inclusive com o texto aumentado no
     Android, que não muda os limites em "em" das media queries. */
  @media (max-width: 60em) {
    .foot .wrap { grid-template-columns: repeat(auto-fit, minmax(min(100%, 14em), 1fr)); }
    .foot__brand { grid-column: 1 / -1; }
    .foot ul a { overflow-wrap: anywhere; }   /* o @ do Instagram só quebra se não houver outro jeito */
  }

  /* ---------- Botão flutuante do WhatsApp (só no celular) ----------
     Sempre na cor principal da marca (--accent), nunca no verde do
     WhatsApp. O ícone usa --accent-contrast, que já garante contraste nos
     dois temas. Aparece depois do hero e some no topo, no formulário de
     agendamento e no rodapé (classe is-visivel, controlada pelo script.js). */
  .topo-voltar {
    position: fixed;
    right: calc(1.5rem + env(safe-area-inset-right, 0px));
    bottom: calc(1.5rem + var(--aviso-cookies, 0px) + env(safe-area-inset-bottom, 0px));
    z-index: 89;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--surface);
    border: 1px solid var(--line);
    color: var(--text-2);
    box-shadow: 0 6px 16px -10px var(--shadow-menu);
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s, bottom 0.25s ease;
  }
  .topo-voltar::before { content: ""; position: absolute; inset: -2px; }   /* toque de 44px */
  .topo-voltar svg { width: 18px; height: 18px; }
  .topo-voltar:hover { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 40%, transparent); }
  .topo-voltar.is-visivel { opacity: 1; visibility: visible; transform: none; }
  @media (max-width: 720px) {
    /* centralizado sobre o botão do WhatsApp (52px): 6px a mais da borda, 12px acima dele */
    .topo-voltar {
      right: calc(1rem + 6px + env(safe-area-inset-right, 0px));
      bottom: calc(1rem + 52px + 12px + var(--aviso-cookies, 0px) + env(safe-area-inset-bottom, 0px));
    }
    /* WhatsApp escondido (outro botão de WhatsApp na tela): desce para o lugar dele */
    .topo-voltar.sem-wa { bottom: calc(1rem + 6px + var(--aviso-cookies, 0px) + env(safe-area-inset-bottom, 0px)); }
    /* respiro no fim da página: os botões flutuantes não cobrem a linha final */
    .foot__legal { padding-bottom: calc(var(--rodape-respiro-final-celular) + env(safe-area-inset-bottom, 0px)); }
  }
  @media (prefers-reduced-motion: reduce) {
    .topo-voltar { transition: none; }
  }

  /* ---------- Aviso de cookies (só com ferramenta em "cookies" no config) ----------
     Faixa discreta na parte de baixo. Enquanto aberta, o script.js põe a altura dela
     em --aviso-cookies: o botão do WhatsApp e o "voltar ao topo" sobem, e a página
     ganha o mesmo espaço embaixo, para a faixa não cobrir o conteúdo.
     Computador: texto, links e botões numa linha (~68 px). Celular: texto (até 2 linhas),
     links pequenos e os dois botões lado a lado, com a mesma largura (~125 px).
     "Somente o necessário" e "Aceitar todos" com o mesmo destaque: vinho da marca com
     texto claro nos dois temas (--wine e --band-text, ~8,9:1). */
  body { padding-bottom: var(--aviso-cookies, 0px); }
  .cookies {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 95;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem 1.25rem;
    padding: 0.75rem var(--pad) calc(0.75rem + env(safe-area-inset-bottom, 0px));
    background: var(--surface);
    border-top: 1px solid var(--line);
    box-shadow: 0 -10px 24px -18px var(--shadow-menu);
  }
  .cookies[hidden] { display: none; }
  .cookies__texto { font-size: 0.9375rem; line-height: 1.45; color: var(--text-2); }
  .cookies__links { margin-left: 1.25rem; font-size: 0.875rem; }   /* links na sequência do texto, no mesmo parágrafo */
  .cookies__links .cookies__config { margin-left: 1.1rem; }
  .cookies__sep { display: none; }
  .cookies__etiqueta {                 /* modo demonstração: etiqueta no canto, sobre a linha do topo */
    position: absolute;
    top: 0;
    right: var(--pad);
    transform: translateY(-75%);      /* mais acima da linha, para não encostar no texto */
    background: var(--surface);
    font-size: 0.625rem;
    line-height: 1.5;
  }
  .cookies__links a,
  .cookies__config {
    position: relative;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--accent);
    font: inherit;
    font-weight: 400;
    letter-spacing: 0;
    text-transform: none;
    text-decoration: underline;
    text-underline-offset: 3px;
    white-space: nowrap;
    cursor: pointer;
  }
  .cookies__links a::before,
  .cookies__config::before { content: ""; position: absolute; inset: -12px -6px; }   /* toque de 44px */
  .cookies__links a:hover,
  .cookies__config:hover { color: var(--text); }
  .cookies__acoes { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 0.75rem; }
  .cookies__btn {                      /* os dois com o mesmo destaque: preenchidos com o vinho da marca */
    --_bg: var(--band-bg);               /* 20/10/2026: o vinho mais escuro, que antes só aparecia ao passar o cursor (texto mais nítido, ~10:1); antes var(--wine) */
    --_fg: var(--band-text);
    border-color: var(--cookies-btn-line);   /* contorno rosado, levemente mais claro, nos dois temas */
    box-shadow: none;
    padding: 0.6rem 1.1rem;
    min-height: 40px;
    font-size: 14px;
    letter-spacing: 0.02em;
    text-transform: none;
    cursor: pointer;
  }
  .cookies__btn:hover { box-shadow: none; }   /* ao passar o cursor: só sobe 2 px (.btn:hover), sem trocar a cor */
  @media (max-width: 720px) {          /* celular: texto, links e botões em três linhas */
    .cookies {                         /* bloco comum: num flex em coluna, o Chrome calcula a altura dos botões como se estivessem empilhados */
      display: block;
      padding: 0.5rem 16px calc(0.5rem + env(safe-area-inset-bottom, 0px));
    }
    .cookies__texto { font-size: 0.875rem; line-height: 1.4; }
    .cookies__links { margin-left: 0; font-size: 0.8125rem; }
    .cookies__links .cookies__config { margin-left: 0; }
    .cookies__sep { display: inline; color: var(--text-dim); }
    .cookies__links a::before,
    .cookies__links .cookies__config::before { inset: -23px -4px -5px; }   /* 44 px sem invadir os botões */
    .cookies__etiqueta { right: 16px; }
    .cookies__acoes { margin-top: 0.375rem; gap: 0.5rem; }
    .cookies__acoes .cookies__btn {    /* mesma base e mesmo crescimento: lado a lado com a mesma largura a partir de ~352 px; abaixo, empilhados */
      flex: 1 1 156px;
      justify-content: center;
      padding-inline: 0.4rem;
      font-size: 13px;
      white-space: nowrap;
    }
  }
  /* Painel "Sua privacidade": cabeçalho com "Voltar" e título, corpo com rolagem
     interna e rodapé fixo com "Salvar". No celular, ocupa quase a tela toda. */
  .cookies-prefs {
    width: min(30rem, calc(100vw - 2rem));
    max-height: calc(100dvh - 3rem);
    padding: 0;
    border: 1px solid var(--line);
    border-top: 2px solid var(--metal);
    border-radius: 3px;
    background: var(--surface);
    color: var(--text);
    overflow: hidden;
  }
  .cookies-prefs[open] { display: flex; flex-direction: column; }
  .cookies-prefs::backdrop { background: rgba(22, 15, 20, 0.55); }   /* cor fixa: ::backdrop não herda variáveis do :root em navegadores mais antigos */
  .cookies-prefs__cabeca {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) 44px;   /* a coluna vazia à direita centraliza o título */
    align-items: center;
    padding: 0.5rem 0.5rem;
    border-bottom: 1px solid var(--line);
  }
  .cookies-prefs__cabeca h2 { grid-column: 2; text-align: center; font-size: var(--step-1); margin: 0; }
  .cookies-prefs__voltar {
    grid-column: 1;
    grid-row: 1;
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--text);
    cursor: pointer;
  }
  .cookies-prefs__voltar svg { width: 22px; height: 22px; }
  .cookies-prefs__voltar:hover { color: var(--accent); }
  .cookies-prefs__voltar:focus-visible { outline: 2px solid var(--metal); outline-offset: 0; }
  .cookies-prefs__corpo {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 1rem clamp(1rem, 4vw, 1.5rem) 0.25rem;
  }
  .cookies-prefs__info {
    display: flex;
    gap: 0.7rem;
    align-items: flex-start;
    margin-bottom: 0.5rem;
    padding: 0.8rem 0.9rem;
    border-radius: 8px;
    background: color-mix(in srgb, var(--accent-tint) 35%, var(--surface));
    font-size: 0.9375rem;
    line-height: 1.5;
    color: var(--text);
  }
  .cookies-prefs__info svg { flex: none; width: 22px; height: 22px; margin-top: 1px; color: var(--accent); }
  .cookies-prefs__info a { position: relative; color: var(--accent); text-underline-offset: 3px; }
  .cookies-prefs__info a::before { content: ""; position: absolute; inset: -12px -4px; }   /* toque de 44px */
  .cookies-prefs__item {
    display: block;
    padding: 0.9rem 0;
    border-top: 1px solid var(--line);
  }
  .cookies-prefs__info + .cookies-prefs__item { border-top: 0; }
  .cookies-prefs__teste {   /* só no teste real (?teste=cookies): o que foi gravado neste navegador */
    margin: 0 0 0.75rem;
    padding: 0.5rem 0.75rem;
    border: 1px dashed var(--metal);
    border-radius: 6px;
    font-size: 0.875rem;
    line-height: 1.45;
    color: var(--text-2);
  }
  label.cookies-prefs__item { cursor: pointer; }
  .cookies-prefs__item--fixo { cursor: default; }
  .cookies-prefs__topo { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 26px; }
  .cookies-prefs__estado { flex: none; font-size: 0.875rem; font-weight: 700; color: var(--text-2); }
  .cookies-prefs__desc { display: block; margin-top: 0.35rem; font-size: 1rem; line-height: 1.5; color: var(--text-2); }
  .cookies-prefs__rodape {
    flex: none;
    padding: 0.75rem clamp(1rem, 4vw, 1.5rem) calc(0.75rem + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--line);
    background: var(--surface);
  }
  .cookies-prefs__salvar { width: 100%; min-height: 44px; padding-block: 0.55rem; justify-content: center; }
  @media (max-width: 720px) {          /* celular: quase a tela toda, "Salvar" sempre visível */
    .cookies-prefs { width: calc(100vw - 16px); max-width: none; height: calc(100dvh - 16px); max-height: none; }
  }
  /* Liga/desliga: o próprio checkbox, desenhado como chave (44x26 px) */
  .cookies-prefs input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    flex: none;
    position: relative;
    width: 44px;
    height: 26px;
    margin: 0;
    border-radius: 999px;
    background: color-mix(in srgb, var(--text-dim) 45%, transparent);
    cursor: pointer;
    transition: background 0.2s ease;
  }
  .cookies-prefs input[type="checkbox"]::before {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--surface);
    transition: transform 0.2s ease;
  }
  .cookies-prefs input[type="checkbox"]:checked { background: var(--accent); }
  .cookies-prefs input[type="checkbox"]:checked::before { transform: translateX(18px); background: var(--accent-contrast); }
  .cookies-prefs input[type="checkbox"]:focus-visible { outline: 2px solid var(--metal); outline-offset: 3px; }
  @media (prefers-reduced-motion: reduce) {
    .cookies-prefs input[type="checkbox"],
    .cookies-prefs input[type="checkbox"]::before { transition: none; }
  }

  /* Link "Ver todos os depoimentos no Google" (28/10/2026): centralizado, entre os cards e o
     "Avalie no Google" */
  .ver-google { margin: clamp(1.25rem, 3vw, 1.75rem) 0 0; text-align: center; }
  .ver-google + .avaliar { margin-top: 1rem; }
  /* WhatsApp flutuante em todas as larguras (dono, 28/10/2026; antes só no celular): no
     computador, mais um ponto de contato rápido, no canto inferior direito, com o "voltar ao
     topo" logo acima; as regras de quando aparece e some são as mesmas (script.js) */
  @media all {
    .wa-float {
      display: flex;
      position: fixed;
      right: calc(1rem + env(safe-area-inset-right, 0px));
      bottom: calc(1rem + var(--aviso-cookies, 0px) + env(safe-area-inset-bottom, 0px));
      z-index: 90;
      width: 52px;
      height: 52px;
      align-items: center;
      justify-content: center;
      border-radius: 50%;
      background: var(--accent);
      color: var(--accent-contrast);
      box-shadow: 0 8px 22px -8px color-mix(in srgb, var(--accent) 70%, transparent),
                  0 2px 6px -2px var(--shadow-menu);
      opacity: 0;
      visibility: hidden;
      transform: translateY(12px);
      transition: opacity 0.25s ease, transform 0.25s ease, visibility 0s linear 0.25s;
    }
    .wa-float svg { width: 26px; height: 26px; }
    .wa-float.is-visivel {
      opacity: 1;
      visibility: visible;
      transform: none;
      transition: opacity 0.25s ease, transform 0.25s ease, visibility 0s;
    }
  }
  @media (min-width: 721px) {
    .wa-float { right: calc(1.5rem + env(safe-area-inset-right, 0px)); bottom: calc(1.5rem + var(--aviso-cookies, 0px) + env(safe-area-inset-bottom, 0px)); width: 56px; height: 56px; }
    .wa-float svg { width: 28px; height: 28px; }
    /* "voltar ao topo" centralizado sobre o WhatsApp (56px), 12px acima dele; com o WhatsApp
       escondido, desce para o lugar dele */
    .topo-voltar { right: calc(1.5rem + 8px + env(safe-area-inset-right, 0px)); bottom: calc(1.5rem + 56px + 12px + var(--aviso-cookies, 0px) + env(safe-area-inset-bottom, 0px)); }
    .topo-voltar.sem-wa { bottom: calc(1.5rem + 8px + var(--aviso-cookies, 0px) + env(safe-area-inset-bottom, 0px)); }
  }
  @media (prefers-reduced-motion: reduce) {
    .wa-float { transform: none; }
  }

  /* ---------- Foto ampliada (lightbox da galeria) ----------
     Criada pelo js/script.js num <dialog> nativo. Deslizar troca de foto
     (scroll-snap); zoom com os dedos e toque duplo ampliam só a foto.
     Fecha pelo X, tocando fora da foto, com Esc ou com o voltar do celular.
     Setas ‹ › só em dispositivos com mouse. */
  .lightbox {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    margin: 0;
    padding: 0;
    border: 0;
    background: var(--lightbox-fundo);
    color: var(--lightbox-texto);
    overflow: hidden;
  }
  .lightbox::backdrop { background: var(--lightbox-fundo); }
  .lightbox__trilho {
    display: flex;
    width: 100%;
    height: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    overscroll-behavior: contain;
    scrollbar-width: none;
    touch-action: pan-x;
  }
  .lightbox__trilho::-webkit-scrollbar { display: none; }
  .lightbox--zoom .lightbox__trilho { overflow-x: hidden; touch-action: none; }
  .lightbox__slide {
    flex: 0 0 100%;
    height: 100%;
    margin: 0;
    overflow: hidden;
    scroll-snap-align: center;
    scroll-snap-stop: always;
  }
  .lightbox__img {
    display: block;
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    padding: 3.75rem 0.75rem 4.5rem;   /* espaço para o X e a legenda */
    object-fit: contain;
    transform-origin: center center;
    user-select: none;
    -webkit-user-drag: none;
  }
  .lightbox__fechar,
  .lightbox__seta {
    position: absolute;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: var(--lightbox-botao);
    color: var(--lightbox-texto);
    cursor: pointer;
  }
  .lightbox__fechar { top: calc(0.6rem + env(safe-area-inset-top, 0px)); right: 0.6rem; }
  .lightbox__fechar svg,
  .lightbox__seta svg { width: 22px; height: 22px; }
  .lightbox__fechar:focus-visible,
  .lightbox__seta:focus-visible { outline: 2px solid var(--lightbox-texto); outline-offset: 2px; }
  .lightbox__seta { display: none; top: 50%; transform: translateY(-50%); }
  .lightbox__seta--ant { left: 1rem; }
  .lightbox__seta--prox { right: 1rem; }
  .lightbox__seta[disabled] { opacity: 0.3; cursor: default; }
  @media (hover: hover) and (pointer: fine) {
    .lightbox__seta { display: flex; }
    .lightbox__img { padding-inline: 4.5rem; }
  }
  .lightbox__info {
    position: absolute;
    left: 0;
    right: 0;
    bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
    margin: 0;
    padding-inline: 1rem;
    text-align: center;
    font-size: 0.85rem;
    line-height: 1.4;
    pointer-events: none;
  }
  .lightbox__contador { display: block; margin-top: 0.2rem; opacity: 0.7; font-variant-numeric: tabular-nums; }
  html.lightbox-aberto { overflow: hidden; }

  /* ---------- Responsivo hero / sobre ---------- */
  @media (max-width: 880px) {
    .hero__inner { grid-template-columns: 1fr; }
    .hero__figure { order: -1; max-width: 340px; justify-self: center; }
    .hero__figure .photo { max-height: none; }
    .about__inner { grid-template-columns: 1fr; }
    .about__figure { max-width: 360px; }
    .carte { grid-template-columns: 1fr; }
  }

  /* Celular: sem o botão "Agendar" no topo (o botão flutuante do WhatsApp
     faz esse papel); o logo e o nome ganham o espaço. O teto em vw impede
     que a fonte aumentada do sistema empurre o topo para fora da tela. */
  /* Celular com a fonte do sistema aumentada (115%, 130%): margem lateral
     em px (mesmo valor da fonte padrão), selos e títulos podem quebrar
     linha e as colunas não crescem além da tela (minmax(0, 1fr)). Com a
     fonte padrão, nada muda. */
  @media (max-width: 720px) {
    :root { --pad: clamp(24.8px, 5vw, 28px); }
    .hero__trust span { white-space: normal; }
    .carte__group h3 { flex-wrap: wrap; column-gap: 0.75rem; }
    .item { grid-template-columns: minmax(0, 1fr) auto; }
    .item__price { white-space: normal; }   /* "R$ 5" continua junto (&nbsp;) */
    .booking-form { grid-template-columns: minmax(0, 1fr); }
    .booking-form input,
    .booking-form select,
    .booking-form textarea { min-width: 0; max-width: 100%; }
  }
  @media (max-width: 880px) {
    .hero__inner,
    .about__inner,
    .carte { grid-template-columns: minmax(0, 1fr); }
  }

  @media (max-width: 720px) {
    .nav .btn { display: none; }
    .topbar__inner { padding-block: var(--topo-respiro-celular); }   /* menos espaço acima e abaixo; logo, texto e ícone do menu no mesmo tamanho */
    .topbar .brand__mark { width: min(3.75rem, 16vw); height: min(3.75rem, 16vw); }
    .topbar .brand__name { font-size: min(1.2rem, 5vw); }
    .topbar .brand__name--imagem { height: min(var(--marca-altura-topo), 8.5vw); }
    .topbar .brand__tag { font-size: min(0.92rem, 3.8vw); }
  }
  @media (max-width: 400px) {
    .topbar__inner { padding-inline: 1.1rem; gap: 0.5rem; }
    .topbar .brand { gap: 0.55rem; }
    .topbar .brand__name { letter-spacing: 0.14em; }
    .foot__brand .brand__name { letter-spacing: 0.02em; }   /* rodapé como antes */
  }

  /* ---------- Divisores de seção (divisores no config, 15/10/2026) ----------
     A borda de baixo da seção ganha a forma escolhida ("onda", "curva",
     "diagonal") por uma máscara: a seção ganha --divisor-altura a mais embaixo,
     sobe sobre o começo da seguinte (margem negativa) e a parte recortada deixa
     ver a seção seguinte, com a cor ou a foto dela, nos dois temas. A seguinte
     ganha a mesma altura a mais em cima e perde a linha de cima (.section--line).
     O render.js só põe as classes .divisor e .divisor--<forma>. */
  .divisor {
    position: relative;
    z-index: 1;
    margin-bottom: calc(-1 * var(--divisor-altura));
    --divisor-forma: none;
    -webkit-mask: linear-gradient(#000, #000) top / 100% calc(100% - var(--divisor-altura) + 1px) no-repeat, var(--divisor-forma) bottom / 100% var(--divisor-altura) no-repeat;
            mask: linear-gradient(#000, #000) top / 100% calc(100% - var(--divisor-altura) + 1px) no-repeat, var(--divisor-forma) bottom / 100% var(--divisor-altura) no-repeat;
  }
  .divisor::after { content: ""; display: block; height: var(--divisor-altura); }   /* altura a mais, recortada pela forma */
  .divisor--onda     { --divisor-forma: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 100' preserveAspectRatio='none'%3E%3Cpath d='M0 0H1200V45C1000 100 800 100 600 55S200 10 0 60Z'/%3E%3C/svg%3E"); }
  .divisor--curva    { --divisor-forma: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 100' preserveAspectRatio='none'%3E%3Cpath d='M0 0H1200V0Q600 200 0 0Z'/%3E%3C/svg%3E"); }
  .divisor--diagonal { --divisor-forma: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 100' preserveAspectRatio='none'%3E%3Cpath d='M0 0H1200V0L0 100Z'/%3E%3C/svg%3E"); }
  .divisor + * {
    padding-top: calc(var(--section-y) + var(--divisor-altura));
    border-top: 0;
  }

  /* ---------- Revelação suave ao rolar (padrão do molde, 15/10/2026) ----------
     Um único efeito no site todo: o bloco esmaece e sobe --revelar-distancia em
     --revelar-duracao, uma única vez, quando entra na tela. O script.js marca com
     .revelar só os blocos que ainda estão abaixo da tela ao carregar (nada já visível
     some) e acrescenta .is-visivel pelo IntersectionObserver. Sem JavaScript ou com
     "reduzir movimento", nenhuma classe é posta e o conteúdo aparece direto.
     Elementos com id (destino de atalho) nunca são deslocados: o script.js revela
     os filhos deles. */
  @media (prefers-reduced-motion: no-preference) {
    .revelar {
      opacity: 0;
      transform: translateY(var(--revelar-distancia));
      transition: opacity var(--revelar-duracao) var(--revelar-curva), transform var(--revelar-duracao) var(--revelar-curva);
    }
    .revelar.is-visivel { opacity: 1; transform: none; }
  }

  /* ---------- Entrada do topo (hero), só CSS, 15/10/2026 ----------
     Começa no carregamento, sem esperar o JavaScript. Título, subtítulo e botões
     (com os selos) esmaecem e sobem --hero-entrada-distancia, um depois do outro
     (--hero-entrada-passo entre eles): cerca de 0,6 s no total. A foto parece
     esmaecer a partir de --hero-foto-opacidade (nunca 0): na verdade, um véu na cor
     do fundo do topo some por cima dela, e a imagem em si não é animada. Animar a
     opacidade da própria foto fazia o Chrome registrar o LCP só no fim do efeito
     (medido em 15/10/2026: algumas cargas de ~0,7 s para ~1,1 s no computador).
     Com "reduzir movimento", sem efeito. */
  @media (prefers-reduced-motion: no-preference) {
    .hero h1,
    .hero .lead,
    .hero__actions,
    .hero__trust {
      animation: hero-entrar var(--hero-entrada-duracao) var(--revelar-curva) both;
    }
    .hero .lead     { animation-delay: var(--hero-entrada-passo); }
    .hero__actions,
    .hero__trust    { animation-delay: calc(2 * var(--hero-entrada-passo)); }
    .hero__figure .photo:has(img)::after {   /* véu sobre a foto (o ::after da etiqueta fica fora quando há foto) */
      display: block;
      content: "";
      inset: 0;
      margin: 0;
      padding: 0;
      background: var(--hero-fundo, var(--bg));
      backdrop-filter: none;
      pointer-events: none;
      animation: hero-veu var(--hero-entrada-duracao) ease-out both;
    }
  }
  .hero--escuro { --hero-fundo: var(--band-bg); }

  /* ---------- Topo com foto de ponta a ponta (hero.fundo, 21/10/2026, réplica da Faria) ----------
     A foto cobre o topo inteiro, atrás do texto, com degradê escuro no alto e na base para a
     leitura (o meio fica livre para o assunto da foto). O topo sobe por baixo do cabeçalho
     (margem negativa de --altura-topo), e o cabeçalho fica transparente até rolar (.is-rolado,
     script.js); depois, volta à leve translucidez. Celular: título e subtítulo no alto, o
     assunto da foto no meio, o botão e o link do WhatsApp embaixo. Computador (a partir de
     1024 px): texto à esquerda e a foto à direita, dissolvida no fundo à esquerda. Os selos
     viram uma faixa logo abaixo (.hero-selos). */
  .hero--fundo {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    background: var(--band-bg);
    margin-top: calc(-1 * var(--altura-topo));
    padding-top: calc(var(--altura-topo) + clamp(1.25rem, 4vw, 2.5rem));
    padding-bottom: clamp(1.75rem, 5vw, 3rem);
    min-height: min(calc(100vw * var(--hero-fundo-proporcao)), 100svh);   /* no tablet em pé, no máximo a altura da tela */
    display: flex;
  }
  /* o .hero__inner fica sem posição: a foto (dentro dele) se posiciona pelo topo inteiro */
  .hero--fundo .hero__inner { display: flex; flex-direction: column; align-items: stretch; width: 100%; }
  .hero--fundo .hero__inner > div:first-child { flex: 1; display: flex; flex-direction: column; position: relative; z-index: 2; }
  .hero--fundo .hero__actions { margin-top: auto; padding-top: 1.5rem; flex-direction: column; align-items: center; gap: 0.35rem; }
  .hero--fundo h1 { margin-bottom: 0.6rem; }
  .hero__bordao { display: block; margin-top: 0.5rem; font-size: 0.92em; color: var(--band-accent); }   /* frase de apoio depois do slogan (hero.texto) */
  .hero--fundo h1, .hero--fundo .lead { text-shadow: 0 1px 12px color-mix(in srgb, var(--band-bg) 70%, transparent); }   /* leitura sobre a foto */
  .hero--fundo .hero__figure {
    position: absolute;
    inset: 0;
    z-index: 0;
    max-width: none;
    padding: 0;
    align-self: stretch;     /* o molde centraliza a figura (align-self: center), e o Chrome aplica isso */
    justify-self: stretch;   /* também à posição absoluta: sem isto, a foto fica com altura zero */
  }
  .hero--fundo .hero__figure::before { display: none; }
  .hero--fundo .hero__figure .photo {
    position: absolute;
    inset: 0;
    aspect-ratio: auto;
    height: 100%;
    border-radius: 0;
    -webkit-mask-image: none;
            mask-image: none;
  }
  .hero--fundo .hero__figure .photo img { width: 100%; height: 100%; object-fit: cover; object-position: var(--hero-foto-posicao-celular); }
  .hero--fundo::after {   /* degradê escuro no alto e na base, sem cobrir o meio */
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(to bottom,
      color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-alto) * 100%), transparent) 0%,
      color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-alto) * 80%), transparent) 30%,
      transparent 44%,
      transparent 62%,
      color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-base) * 75%), transparent) 82%,
      color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-base) * 100%), transparent) 100%);
  }
  /* Link do WhatsApp do topo (hero.linkWhatsapp) como botão transparente de contorno, com a
     mesma forma e o mesmo tamanho do botão principal (dono, 21/10/2026) */
  .hero__link-wa {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    padding: 1rem 1.6rem;
    border: 1px solid color-mix(in srgb, var(--band-text) 60%, transparent);
    border-radius: 999px;
    background: transparent;
    color: var(--band-text);
    font-family: var(--font-body);
    font-weight: var(--peso-botao);
    font-size: var(--tamanho-botao);
    letter-spacing: var(--espaco-letras-botao);
    text-decoration: none;
    white-space: nowrap;
    transition: border-color 0.18s ease, color 0.18s ease;
  }
  .hero__link-wa svg { width: 1.05em; height: 1.05em; flex: none; color: var(--band-metal); }
  /* Brilho prateado no botão (hero.brilhoReservar; 22/10/2026, segunda versão a pedido do dono):
     uma luz prateada percorre o contorno do botão, dá uma volta em ~35% do --brilho-ciclo,
     esmaece e repete, sem parar. Feita com um gradiente cônico girando (@property) e uma
     máscara que deixa só a borda. Com "reduzir movimento", não anima. */
  @property --brilho-angulo { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
  .hero__link-wa--brilho { position: relative; }
  .hero__link-wa--brilho::before,
  .hero__link-wa--brilho::after {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    padding: var(--brilho-espessura);
    pointer-events: none;
    background: conic-gradient(from var(--brilho-angulo), transparent 0deg 190deg, color-mix(in srgb, var(--brilho-cor) 25%, transparent) 260deg, color-mix(in srgb, var(--brilho-cor) 75%, transparent) 320deg, #FFFFFF 352deg, transparent 360deg);   /* rastro longo, como um cometa: a cabeça branca e a cauda prateada */
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
            mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
    filter: drop-shadow(0 0 5px color-mix(in srgb, var(--brilho-cor) 85%, transparent));
    opacity: 0;
  }
  .hero__link-wa--brilho::before {   /* halo: a mesma luz, mais grossa e desfocada, por trás do traço */
    padding: calc(var(--brilho-espessura) * 3);
    inset: -4px;
    filter: blur(5px);
  }
  @media (prefers-reduced-motion: no-preference) {
    .hero__link-wa--brilho::before,
    .hero__link-wa--brilho::after { animation: brilho-contorno var(--brilho-ciclo) linear var(--brilho-atraso) infinite; }
  }
  @keyframes brilho-contorno {
    0%   { --brilho-angulo: 0deg;   opacity: 0; }
    4%   { opacity: 1; }
    31%  { opacity: 1; }
    35%  { --brilho-angulo: 360deg; opacity: 0; }
    100% { --brilho-angulo: 360deg; opacity: 0; }
  }
  .hero__link-wa:hover,
  .hero__link-wa:focus-visible { border-color: var(--band-metal); color: var(--band-metal); }
  @media (max-width: 720px) { .hero__link-wa { font-size: var(--tamanho-botao-celular); } }
  /* Celular e tablet (até 1023 px): a foto ocupa a largura toda, inteira (sem cortar os lados,
     para o carro aparecer completo), e entra por baixo do título: o alto da foto
     (--hero-foto-sob-texto, a parte do teto) fica atrás do título e do slogan; os botões ficam
     presos à base da foto, sobre o piso, e a foto vai inteira até o fim do "Reservar"
     (--hero-botoes-respiro), sem esfumaçar; depois do topo, a linha de luz dourada
     (.hero-selos::before). O título e o slogan ficam centralizados. */
  @media (max-width: 1023px) {
    .hero--fundo { display: block; min-height: 0; padding-bottom: 0; }   /* a foto vai até o fim do topo */
    /* grade de uma coluna: título, slogan e, na mesma linha, a foto e os botões (os botões
       ficam presos à base da foto, sobre o piso, em qualquer largura) */
    .hero--fundo .hero__inner { display: grid; grid-template-columns: minmax(0, 1fr); }
    .hero--fundo .hero__inner > div:first-child { display: contents; }
    .hero--fundo h1,
    .hero--fundo .lead { position: relative; z-index: 2; text-align: center; }
    .hero--fundo .lead { margin-inline: auto; }   /* o parágrafo tem largura máxima: centralizado como o título */
    .hero--fundo .hero__figure {
      position: relative;
      inset: auto;
      order: 3;
      align-self: auto;
      justify-self: auto;
      grid-row: 3;
      grid-column: 1;
      width: calc(100% + 2 * var(--pad));
      margin: calc(-1 * var(--hero-foto-sob-texto)) calc(-1 * var(--pad)) 0;
    }
    .hero--fundo .hero__figure .photo {
      position: relative;
      inset: auto;
      aspect-ratio: auto;
      height: calc(100vw * 1448 / 1086 * var(--hero-foto-alongamento));   /* largura da tela × proporção da foto × alongamento */
      -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 24%);   /* só o alto se dissolve no grafite; a base vai inteira até o fim do topo */
              mask-image: linear-gradient(to bottom, transparent 0%, #000 24%);
    }
    .hero--fundo .hero__figure .photo img { object-fit: cover; object-position: 50% 100%; }   /* a caixa mais alta corta só as laterais (zoom leve), e a base fica inteira */
    .hero--fundo .hero__actions {
      grid-row: 3;
      grid-column: 1;
      align-self: end;
      position: relative;
      z-index: 2;
      margin: 0;
      padding: 0 0 var(--hero-botoes-respiro);
      align-items: center;
      gap: 0.4rem;
    }
    .hero--fundo .hero__actions > .btn,
    .hero--fundo .hero__actions > .hero__link-wa { width: min(100%, 19rem); justify-content: center; }   /* os dois botões com a mesma largura */
    .hero--fundo .hero__actions > .btn,
    .hero--fundo .hero__actions > .hero__link-wa { padding-block: 0.8rem; }   /* um pouco mais baixos (~50 px, acima dos 44 px de toque), para caberem no piso sem cobrir as rodas */
  }
  @media (max-width: 1023px) {
    .hero--fundo::after {   /* celular: alto escuro para o título; base só levemente escurecida, a foto continua visível */
      background: linear-gradient(to bottom,
        color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-alto) * 100%), transparent) 0%,
        color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-alto) * 80%), transparent) 30%,
        transparent 44%,
        transparent 74%,
        color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-base-celular) * 100%), transparent) 100%);
    }
  }
  /* Selos com ícone (hero.selos com objetos, 21/10/2026): grade de 2 colunas no celular (o selo
     de destaque ocupa a linha inteira) e uma linha só no computador; ícone num quadrado de cantos
     arredondados, em dourado sobre um fundo dourado bem claro; valor em destaque e rótulo abaixo. */
  .hero-selos .hero__trust--icones,
  .hero__trust--icones {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 12.5em), 1fr));   /* colunas de pelo menos 12.5em: no tablet, 3 colunas; no computador, uma linha */
    gap: 1.1rem 1rem;
    padding-block: clamp(1.25rem, 4vw, 1.75rem);
    text-align: left;
    justify-content: stretch;
    letter-spacing: 0;
  }
  /* as regras dos selos de texto (ponto antes, inline-flex, centralizado) não valem aqui */
  .hero-selos .hero__trust--icones span:not(.estrelas)::before,
  .hero__trust--icones span:not(.estrelas)::before { content: none; display: none; }
  .hero-selos .hero__trust--icones .selo,
  .hero__trust--icones .selo { display: flex; align-items: center; gap: 0.75rem; min-width: 0; white-space: normal; text-align: left; }
  .hero-selos .hero__trust--icones .selo__icone,
  .selo__icone {
    flex: none;
    display: grid;
    place-items: center;
    width: var(--selo-icone);
    height: var(--selo-icone);
    border-radius: 12px;
    background: color-mix(in srgb, var(--metal) 16%, transparent);
    color: var(--gold-texto);
  }
  .selo__icone svg { width: 52%; height: 52%; }
  .selo__icone--google { background: color-mix(in srgb, var(--metal) 10%, var(--surface)); }
  .hero-selos .hero__trust--icones .selo__texto,
  .selo__texto { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; line-height: 1.25; white-space: normal; }   /* quebra linha se não couber (os selos de texto não quebram) */
  .hero__trust--icones .estrelas { display: inline-block; white-space: nowrap; }
  .hero-selos .hero__trust--icones .estrelas::before,
  .hero__trust--icones .estrelas::before { content: "★★★★★"; display: inline; width: auto; height: auto; background: none; border-radius: 0; margin: 0; }   /* desfaz o ponto dos selos de texto */
  .selo__texto b { font-size: 1.02rem; font-weight: 800; color: var(--text); }
  .selo__texto b .estrelas { font-size: 0.85em; color: color-mix(in srgb, var(--metal) 32%, transparent); }
  .selo__texto small { font-size: 0.875rem; color: var(--text-dim); }
  @media (max-width: 720px) {
    .hero-selos .hero__trust--icones { grid-template-columns: repeat(auto-fit, minmax(min(100%, 9.8em), 1fr)); --selo-icone: 2.6rem; }   /* 2 colunas quando cabem; em tela estreita ou com o texto aumentado, uma por linha */
    .hero__trust--icones .selo--destaque { grid-column: 1 / -1; }
  }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .selo__icone { color: var(--metal); }
  }
  :root[data-theme="dark"] .selo__icone { color: var(--metal); }

  /* Transição depois do topo de foto: uma linha de luz dourada fina, mais intensa no centro,
     com brilho suave (no lugar da onda). Espessura em --hero-linha-transicao. */
  .hero-selos { position: relative; }
  .hero-selos::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: var(--hero-linha-transicao);
    background: linear-gradient(90deg, transparent 0%, var(--band-metal) 22%, color-mix(in srgb, var(--band-metal) 55%, #FFFFFF) 50%, var(--band-metal) 78%, transparent 100%);
    box-shadow: 0 0 14px 1px color-mix(in srgb, var(--band-metal) 55%, transparent);
    pointer-events: none;
  }
  @media (min-width: 1024px) {
    .hero--fundo { min-height: min(88svh, 760px); align-items: center; }
    .hero--fundo .hero__inner { max-width: var(--maxw); }
    .hero--fundo .hero__inner > div:first-child { flex: none; max-width: 34rem; }
    .hero--fundo .hero__actions { margin-top: 1.6rem; padding-top: 0; flex-direction: row; align-items: center; gap: 1.4rem; }
    .hero--fundo .hero__figure { left: auto; width: var(--hero-foto-largura-computador); }
    .hero--fundo .hero__figure .photo {
      -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 38%);
              mask-image: linear-gradient(to right, transparent 0%, #000 38%);
    }
    .hero--fundo .hero__figure .photo img { object-position: var(--hero-foto-posicao-computador); }
    .hero--fundo::after {
      background: linear-gradient(to bottom,
        color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-alto) * 80%), transparent) 0%,
        transparent 28%,
        transparent 74%,
        color-mix(in srgb, var(--band-bg) calc(var(--hero-degrade-base) * 80%), transparent) 100%);
    }
  }
  /* Tarja antes do formulário (agendar.tarja): faixa horizontal curta, dourada, com a frase
     de alerta na fonte dos títulos, centralizada (texto grafite sobre o dourado, 8,4:1) */
  .tarja-agendar { background: var(--band-metal); color: var(--band-bg); }
  .tarja-agendar p {
    margin: 0;
    padding-block: var(--tarja-respiro);
    text-align: center;
    font-family: var(--font-display);
    font-size: var(--step-1);
    letter-spacing: 0.04em;
    line-height: 1.3;
  }

  /* Cabeçalho transparente sobre o topo até rolar (com o menu aberto, volta ao normal). Só com
     JavaScript (.js-rolagem): sem ele, o cabeçalho fica no grafite translúcido o tempo todo. */
  .topbar--sobre-hero.js-rolagem:not(.is-rolado) { background: transparent; backdrop-filter: none; border-bottom-color: transparent; }
  .topbar--sobre-hero { transition: transform 0.28s ease, background-color 0.3s ease; }

  /* Selos logo abaixo do topo (hero.fundo): faixa clara, centralizada, com os pontos dourados */
  .hero-selos { background: var(--bg); border-bottom: 1px solid var(--line); }
  .hero-selos .hero__trust {
    margin: 0;
    padding-block: 1rem;
    border-top: 0;
    justify-content: center;
    text-align: center;
    gap: 0.4rem 2rem;
    color: var(--text-2);
  }
  @media (max-width: 720px) {
    .hero-selos .hero__trust { flex-direction: column; gap: 0.35rem; padding-block: 0.9rem; }
    .hero-selos .hero__trust span { display: block; }   /* com o texto aumentado, o ponto acompanha o texto ao quebrar a linha */
    .hero-selos .hero__trust span::before { display: inline-block; vertical-align: middle; margin: -0.15em 0.55rem 0 0; }
  }
  @keyframes hero-entrar {
    from { opacity: 0; transform: translateY(var(--hero-entrada-distancia)); }
    to   { opacity: 1; transform: none; }
  }
  @keyframes hero-veu {
    from { opacity: calc(1 - var(--hero-foto-opacidade)); }
    to   { opacity: 0; }
  }

  /* ---------- Entrada das páginas próprias (20/10/2026) ----------
     Ao abrir uma página própria (ex.: /galeria) e ao voltar dela para a inicial, o conteúdo
     principal esmaece e sobe --entrada-paginapropria-distancia em --entrada-paginapropria-duracao.
     É uma animação da própria página (não da transição entre páginas), então o toque não fica
     preso. A classe vem do build (páginas próprias) ou de um script mínimo no <head> da inicial
     (só quando a página anterior era uma página própria). Com "reduzir movimento", sem efeito. */
  @media (prefers-reduced-motion: no-preference) {
    .entrada-pagina main { animation: entrada-pagina var(--entrada-paginapropria-duracao) var(--revelar-curva) both; }
  }
  @keyframes entrada-pagina {
    from { opacity: 0; transform: translateY(var(--entrada-paginapropria-distancia)); }
    to   { opacity: 1; transform: none; }
  }

  /* ---------- Transição suave entre páginas (View Transitions, só CSS) ----------
     Ao ir da página inicial para o blog, um artigo ou as páginas legais (e de
     volta), a página nova aparece com um esmaecimento curto. Navegadores sem
     suporte trocam de página normalmente. Desligada com "reduzir movimento". */
  @media (prefers-reduced-motion: no-preference) {
    @view-transition { navigation: auto; }
    ::view-transition-old(root),
    ::view-transition-new(root) { animation-duration: var(--transicao-pagina); }
  }

  /* =====================================================================
     Ajustes do dono (24/10/2026, réplica da Faria)
     Topo, selos, "Por que escolher", serviços, frota, Sobre, depoimentos,
     faixa do formulário e rodapé. Variáveis ajustáveis logo abaixo.
     ===================================================================== */
  :root {
    --hero-foto-recuo-computador: 0px;   /* no computador, quanto a foto do topo começa abaixo do alto da página; 0 = a foto passa por baixo do cabeçalho transparente (dono, 24/10) */
    --hero-foto-posicao-vertical: 58%;   /* enquadramento vertical da foto do topo no computador: menor = o carro desce, maior = sobe (o de antes era 72%); de 58% a 72% sem cortar as rodas */
    --hero-texto-largura: 31rem;   /* largura da coluna do título e dos botões do topo no computador (menor = mais à esquerda, longe do carro); recomendado 29rem a 36rem */
    --hero-lead-computador: 1.3rem;   /* slogan e bordão do topo no computador (antes 1.125rem); recomendado 1.2rem a 1.45rem */
    --hero-botao-largura: 13.5rem;    /* largura igual dos dois botões do topo no computador (sem encostar no carro); recomendado 12.5rem a 15rem */
    --pilares-titulo-cor: var(--gold-texto);   /* cor do título e do ícone dos cards "Por que escolher" (dourado escuro, 5,6:1 sobre o marfim) */
    --pilares-subir: 6px;             /* quanto o card "Por que escolher" sobe ao passar o mouse; recomendado 4px a 10px */
    --pilares-hover-duracao: 0.5s;    /* duração da animação ao passar o mouse; recomendado 0.35s a 0.7s */
    --svc-duracao-computador: 0.9s;   /* abertura lenta dos cards de serviço ao passar o mouse; recomendado 0.7s a 1.2s */
    --cred-fundo: #24211E;            /* fundo dos cards do Quem somos (grafite, como no site atual) */
    --faixa-titulo-celular: 1.55rem;  /* frase da faixa do formulário no celular; recomendado 1.4rem a 1.75rem */
    --depo-card-fundo: #F4F2EE;       /* fundo dos cards de depoimento (cinza-marfim claro, como no site atual); no tema escuro, o fundo dos cards do tema */
  }
  /* tema escuro: dourado claro nos títulos do "Por que escolher" e no detalhe dos depoimentos (o dourado escuro ficava abaixo de 4,5:1) */
  @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --depo-card-fundo: color-mix(in srgb, var(--surface) 85%, var(--metal)); --pilares-titulo-cor: var(--band-metal); --depo-detalhe-cor: var(--band-metal); } }
  :root[data-theme="dark"] { --depo-card-fundo: color-mix(in srgb, var(--surface) 85%, var(--metal)); --pilares-titulo-cor: var(--band-metal); --depo-detalhe-cor: var(--band-metal); }

  /* ---------- Topo no computador ---------- */
  @media (min-width: 1024px) {
    .hero--fundo .hero__figure { top: var(--hero-foto-recuo-computador); }
    .hero--fundo .hero__inner > div:first-child { max-width: var(--hero-texto-largura); margin-left: var(--hero-texto-recuo); text-align: center; }
    .hero--fundo .hero__figure .photo img { object-position: 50% var(--hero-foto-posicao-vertical); }
    .hero--fundo h1 { white-space: nowrap; }
    .hero--fundo h1 em { display: block; }   /* "Transporte Executivo" numa linha e "Campinas" embaixo */
    .hero--fundo .lead { font-size: var(--hero-lead-computador); margin-inline: auto; }
    .hero--fundo .hero__actions { justify-content: center; }
    .hero--fundo .hero__actions > .btn,
    .hero--fundo .hero__actions > .hero__link-wa { width: var(--hero-botao-largura); justify-content: center; padding-block: 1rem; }
  }

  /* ---------- Selos logo abaixo do topo ---------- */
  /* computador e tablet: ícone em cima, título em negrito e descrição abaixo, tudo centralizado */
  @media (min-width: 721px) {
    .hero-selos .hero__trust--icones { align-items: start; }   /* ícones na mesma linha, mesmo com descrição de duas linhas */
    .hero-selos .hero__trust--icones .selo { flex-direction: column; justify-content: flex-start; gap: 0.6rem; text-align: center; }
    .hero-selos .hero__trust--icones .selo__texto { align-items: center; text-align: center; }
  }
  /* celular: um por linha, ícone à esquerda e o texto centralizado na altura dele; descrição
     curta na frente do título; longa, na linha de baixo. O Google, centralizado: ícone, nota,
     estrelas e "Avaliação" numa linha. */
  @media (max-width: 720px) {
    .hero-selos .hero__trust--icones { grid-template-columns: minmax(0, 1fr); gap: 0.8rem; --selo-icone: 2.5rem; }
    .hero-selos .hero__trust--icones .selo { align-items: center; }
    .hero-selos .hero__trust--icones .selo__texto { flex-direction: row; flex-wrap: wrap; align-items: baseline; column-gap: 0.55rem; row-gap: 0.1rem; }
    .hero-selos .hero__trust--icones .selo__texto small { font-size: 0.9rem; }
    .hero-selos .hero__trust--icones .selo--destaque { justify-content: flex-start; }   /* o ícone do Google na mesma coluna dos demais (dono, 24/10) */
    .hero-selos .hero__trust--icones .selo--destaque .selo__texto { flex-wrap: nowrap; }
    .hero-selos .hero__trust--icones .selo--destaque b { white-space: nowrap; }   /* "5,0" e as estrelas na mesma linha */
    .hero-selos .hero__trust--icones .selo--destaque b .estrelas { display: inline-block; margin-left: 0.3rem; }
  }

  /* ---------- Por que escolher a Faria? ---------- */
  .pilares__item h3 { color: var(--pilares-titulo-cor); }
  .pilares__icone { color: var(--pilares-titulo-cor); }
  .pilares__item { position: relative; overflow: hidden; }
  /* celular (lista): ícone e título na mesma linha, título maior; descrição num quadro claro
     de contorno fino dourado, com a letra um pouco menor */
  @container pilares (max-width: 37.99em) {
    .pilares__item,
    .pilares__item:first-child { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; column-gap: 0.7rem; border-bottom: 0; padding: 0 0 1.1rem; }
    .pilares__item:last-child { padding-bottom: 0; }
    .pilares__item .pilares__icone { width: 2.6rem; height: 2.6rem; margin: 0; }
    .pilares__item h3 { font-size: var(--step-1); margin: 0; text-align: left; }
    .pilares__item p {
      flex: 0 0 100%;
      max-width: 30rem;
      margin: 0.75rem auto 0;
      padding: 0.85rem 1rem;
      background: var(--surface);
      border: 1px solid color-mix(in srgb, var(--metal) 45%, transparent);
      border-radius: 4px;
      font-size: 0.95rem;
    }
  }
  /* computador: ao passar o mouse, o card sobe, uma luz dourada atravessa o card, a borda
     acende e o ícone se preenche de dourado com um brilho suave */
  @container pilares (min-width: 38em) {
    .pilares__item { transition: transform var(--pilares-hover-duracao) var(--revelar-curva), box-shadow var(--pilares-hover-duracao) var(--revelar-curva), border-color var(--pilares-hover-duracao) ease; }
    .pilares__item::after {
      content: "";
      position: absolute;
      inset: 0;
      pointer-events: none;
      background: linear-gradient(110deg, transparent 35%, color-mix(in srgb, var(--metal) 22%, transparent) 50%, transparent 65%);
      background-size: 260% 100%;
      background-position: 130% 0;
      transition: background-position 1.1s var(--revelar-curva);
    }
    .pilares__icone { transition: background-color var(--pilares-hover-duracao) ease, color var(--pilares-hover-duracao) ease, box-shadow var(--pilares-hover-duracao) ease, transform var(--pilares-hover-duracao) var(--revelar-curva); }
  }
  @media (hover: hover) and (pointer: fine) {
    @container pilares (min-width: 38em) {
      .pilares__item:hover { transform: translateY(calc(-1 * var(--pilares-subir))); border-color: color-mix(in srgb, var(--metal) 70%, transparent); box-shadow: 0 22px 40px -22px rgba(30, 28, 26, 0.45); }
      .pilares__item:hover::after { background-position: -30% 0; }
      .pilares__item:hover .pilares__icone { background: var(--metal); color: var(--band-bg); border-color: var(--metal); box-shadow: 0 0 0 6px color-mix(in srgb, var(--metal) 16%, transparent), 0 0 22px color-mix(in srgb, var(--metal) 55%, transparent); transform: scale(1.06); }
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .pilares__item, .pilares__item::after, .pilares__icone { transition: none !important; }
    .pilares__item:hover { transform: none !important; }
  }
  /* separação entre "Por que escolher" e "Nossos serviços": linha de luz dourada, como a do topo */
  .pilares { position: relative; }
  .pilares::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, var(--metal) 25%, color-mix(in srgb, var(--metal) 55%, #FFFFFF) 50%, var(--metal) 75%, transparent 100%);
    box-shadow: 0 0 10px color-mix(in srgb, var(--metal) 45%, transparent);
  }

  /* ---------- Títulos das seções ----------
     Celular: todos no mesmo tamanho (a redução do molde para caber numa linha deixava
     "O que dizem nossos clientes" menor que os outros); os longos quebram em duas linhas.
     Computador: Serviços, Frota e Depoimentos com título e texto centralizados, o texto
     numa linha só quando couber. */
  @media (max-width: 720px) {
    .section__head h2, .section__head h1 { font-size: var(--step-3); }
  }
  @media (min-width: 721px) {
    #servicos .section__head,
    #galeria .section__head,
    #depoimentos .section__head { max-width: none; text-align: center; margin-inline: auto; }
    #servicos .section__head h2,
    #galeria .section__head h2,
    #depoimentos .section__head h2 { max-width: none; margin-inline: auto; }
    #galeria .section__head--row { flex-direction: column; align-items: center; }
    #galeria .section__head--row > div { max-width: none; }
    #depoimentos .nota-google-topo { justify-content: center; }
    #servicos .categorias, #galeria .categorias { justify-content: center; }
  }

  /* ---------- Cards de serviço: abertura lenta e elegante no computador ---------- */
  @media (hover: hover) and (pointer: fine) {
    .svc { --svc-duracao: var(--svc-duracao-computador); }
    .svc__desc { transition: opacity var(--svc-duracao) ease 0.12s, max-height var(--svc-duracao) ease; }
  }

  /* ---------- Frota no celular: cards do mesmo tamanho dos de serviço ---------- */
  @media (max-width: 720px) {
    .gallery figure { flex: 0 0 86%; }
    .gallery .photo,
    .gallery figure:not(.g-tall) .photo { aspect-ratio: auto; height: var(--svc-altura-celular); }
  }

  /* ---------- Quem somos ---------- */
  /* moldura nova: cantos dourados em L (alto à esquerda e base à direita) e uma linha fina
     interna, no lugar da moldura deslocada do molde */
  .about__figure { padding: 0.9rem; }
  .about__figure::before {
    inset: 0;
    transform: none;
    border: 0;
    background:
      linear-gradient(var(--metal), var(--metal)) top left / 3.2rem 2px no-repeat,
      linear-gradient(var(--metal), var(--metal)) top left / 2px 3.2rem no-repeat,
      linear-gradient(var(--metal), var(--metal)) bottom right / 3.2rem 2px no-repeat,
      linear-gradient(var(--metal), var(--metal)) bottom right / 2px 3.2rem no-repeat;
  }
  .about__figure::after {
    content: "";
    position: absolute;
    inset: 0.9rem;
    border: 1px solid color-mix(in srgb, var(--metal) 55%, transparent);
    box-shadow: 0 24px 50px -28px rgba(30, 28, 26, 0.55);
    pointer-events: none;
  }
  .about__figure .photo { border-radius: 0; }
  @media (min-width: 721px) {
    .about__titulo { text-align: center; max-width: none; }
  }
  .sign { text-align: center; }
  /* destaques em cards grafite, como no site atual, mais compactos: ícone num círculo de
     contorno dourado com brilho, título dourado e texto claro, centralizados */
  .creds--cards .cred {
    align-items: center;
    text-align: center;
    gap: 0.3rem;
    padding: 1rem 0.8rem 1.1rem;
    background: var(--cred-fundo);
    border: 1px solid color-mix(in srgb, var(--band-metal) 35%, transparent);
    border-radius: 2px;
    transition: border-color 0.4s ease, transform 0.4s var(--revelar-curva), box-shadow 0.4s ease;
  }
  .creds--cards .cred__icone {
    width: 2.6rem;
    height: 2.6rem;
    margin-bottom: 0.35rem;
    border-radius: 50%;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--band-metal) 75%, transparent);
    color: var(--band-metal);
    box-shadow: 0 0 14px color-mix(in srgb, var(--band-metal) 30%, transparent);
  }
  .creds--cards .cred__titulo { color: var(--band-metal); font-size: 1.12rem; }
  .creds--cards .cred__texto { color: color-mix(in srgb, var(--band-text) 85%, transparent); font-size: 0.95rem; }
  @media (hover: hover) and (pointer: fine) {
    .creds--cards .cred:hover { border-color: var(--band-metal); transform: translateY(-3px); box-shadow: 0 16px 30px -18px rgba(0, 0, 0, 0.6); }
  }
  @media (prefers-reduced-motion: reduce) {
    .creds--cards .cred { transition: none; }
    .creds--cards .cred:hover { transform: none; }
  }

  /* ---------- Depoimentos ---------- */
  #depoimentos { background: var(--surface); }
  /* --depo-raio: arredondamento dos cards de depoimento (dono, 28/10); recomendado 12px a 20px (antes 2px) */
  :root { --depo-raio: 16px; }
  .quote {
    gap: 0.9rem;
    padding: 1.4rem 1.3rem 1.2rem;
    background: var(--depo-card-fundo);
    border: 1px solid color-mix(in srgb, var(--metal) 50%, transparent);
    border-radius: var(--depo-raio);
    box-shadow: 0 10px 24px -16px rgba(30, 28, 26, 0.35);
    text-align: center;
  }
  .quote blockquote { font-size: 1.05rem; line-height: 1.55; }
  .quote blockquote::before { color: var(--metal); text-align: center; margin-bottom: 0.2rem; }
  .quote figcaption {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.7rem;
    padding-top: 0.9rem;
    border-top: 1px solid color-mix(in srgb, var(--text) 35%, transparent);   /* a linha no fim do depoimento */
    letter-spacing: 0;
    text-align: left;
  }
  .quote__inicial {
    flex: none;
    display: grid;
    place-items: center;
    width: 2.4rem;
    height: 2.4rem;
    border-radius: 50%;
    background: var(--metal);
    color: var(--band-bg);
    font-family: var(--font-display);
    font-size: 1.15rem;
  }
  .quote__quem { display: flex; flex-direction: column; line-height: 1.3; }
  .quote figcaption strong { margin: 0; letter-spacing: 0.02em; text-transform: none; font-weight: 700; }
  .quote__detalhe { font-size: 0.75rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--depo-detalhe-cor, var(--gold-texto)); }

  /* ---------- Faixa do formulário: frase de decisão ----------
     Como nos sites de serviços premium: sem caixa sólida, a frase em letra de título clara,
     entre dois filetes dourados curtos, com o trecho principal em dourado. */
  .band--titulo-contorno h2 {
    max-width: 18em;
    padding: 0;
    border: 0;
    outline: 0;
    background: none;
    color: var(--band-text);
    font-size: clamp(1.55rem, 1.1rem + 1.6vw, 2.35rem);
    line-height: 1.3;
    letter-spacing: 0.01em;
    text-wrap: balance;
  }
  .band--titulo-contorno h2 em { font-style: normal; color: var(--band-accent); }
  .band--titulo-contorno h2::before,
  .band--titulo-contorno h2::after {
    content: "";
    display: block;
    width: 3.5rem;
    height: 1px;
    margin: 0 auto 1.1rem;
    background: linear-gradient(90deg, transparent, var(--band-metal), transparent);
  }
  .band--titulo-contorno h2::after { margin: 1.1rem auto 0; }
  @media (max-width: 720px) {
    .band--titulo-contorno h2 { max-width: 100%; font-size: var(--faixa-titulo-celular); }
  }
  @media (max-width: 720px) {   /* Quem somos no celular: um destaque por linha, ícone à esquerda (compacto) */
    .creds--cards { grid-template-columns: minmax(0, 1fr); gap: 0.6rem; }
    .creds--cards .cred { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 0.85rem; row-gap: 0.1rem; align-items: center; text-align: left; padding: 0.8rem 1rem; }
    .creds--cards .cred__icone { grid-row: span 2; margin: 0; }
  }
  @media (max-width: 720px) { .sign { font-size: 1.25rem; } }   /* assinatura numa linha no celular */
  /* Selos no celular: o último ("Previsibilidade", descrição longa) com o título centralizado na
     altura do ícone, como os demais, e a descrição na linha de baixo */
  @media (max-width: 720px) {
    .hero-selos .hero__trust--icones .selo:last-child { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 0.75rem; align-items: center; }
    .hero-selos .hero__trust--icones .selo:last-child .selo__texto { display: contents; }
    .hero-selos .hero__trust--icones .selo:last-child b { grid-column: 2; grid-row: 1; }
    .hero-selos .hero__trust--icones .selo:last-child small { grid-column: 2; grid-row: 2; margin-top: 0.1rem; }
    .hero-selos .hero__trust--icones .selo:last-child .selo__icone { grid-row: 1; }
  }

  /* ---------- Nossa frota em cards, como os de serviço (24/10/2026, 2ª rodada) ----------
     Cada veículo num card do tamanho dos de serviço (--svc-altura no computador,
     --svc-altura-celular no celular), com o nome sobre a foto, num degradê escuro, na letra
     dos títulos. Computador: carrossel com 3 cards por vez e setas nas laterais (script.js);
     celular: o carrossel de deslizar com o dedo, com os traços tocáveis. O enquadramento de
     cada foto mostra o veículo inteiro sempre que possível (--frota-posicao em cada card). */
  .gallery figure { position: relative; border: 1px solid color-mix(in srgb, var(--metal) 35%, transparent); border-radius: 8px; overflow: hidden; background: var(--band-bg); }
  .gallery .photo,
  .gallery figure:not(.g-tall) .photo { aspect-ratio: auto; height: var(--svc-altura); border-radius: 0; }
  .gallery .photo img { object-position: var(--frota-posicao, 50% 60%); transition: transform 0.9s var(--revelar-curva); }
  .gallery figcaption {
    position: absolute;
    inset: auto 0 0;
    z-index: 2;
    margin: 0;
    padding: 4.5rem 1rem 1.3rem;
    text-align: center;
    font-family: var(--font-display);
    font-size: var(--step-2);
    letter-spacing: 0.01em;
    color: var(--band-text);
    background: linear-gradient(to top, color-mix(in srgb, var(--band-bg) 82%, transparent), transparent);
    pointer-events: none;
  }
  #frota-seda         { --frota-posicao: 62% 72%; }
  #frota-suv          { --frota-posicao: 50% 60%; }
  #frota-spin         { --frota-posicao: 40% 66%; }
  #frota-blindado     { --frota-posicao: 32% 60%; }
  #frota-minivan      { --frota-posicao: 62% 55%; }
  #frota-van          { --frota-posicao: 24% 55%; }
  #frota-micro-onibus { --frota-posicao: 70% 55%; }
  @media (max-width: 720px) {
    .gallery .photo,
    .gallery figure:not(.g-tall) .photo { height: var(--svc-altura-celular); }
    #frota-blindado .photo img, #frota-minivan .photo img, #frota-van .photo img, #frota-micro-onibus .photo img { object-position: var(--frota-posicao); }
  }
  @media (min-width: 721px) {
    .carrossel { position: relative; }
    .gallery {
      display: flex;
      gap: 1rem;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      scrollbar-width: none;
      overscroll-behavior-x: contain;
    }
    .gallery::-webkit-scrollbar { display: none; }
    .gallery figure { flex: 0 0 calc((100% - 2rem) / 3); scroll-snap-align: start; }
    .g-tall { grid-row: auto; }
    .gallery .photo:hover img { transform: scale(1.05); }
    .carrossel__seta {
      position: absolute;
      top: calc(var(--svc-altura) / 2);
      z-index: 3;
      display: grid;
      place-items: center;
      width: 3rem;
      height: 3rem;
      margin-top: -1.5rem;
      border: 1px solid color-mix(in srgb, var(--band-metal) 70%, transparent);
      border-radius: 50%;
      background: color-mix(in srgb, var(--band-bg) 78%, transparent);
      color: var(--band-metal);
      cursor: pointer;
      backdrop-filter: blur(6px);
      transition: opacity 0.3s ease, background-color 0.3s ease, transform 0.3s ease;
    }
    .carrossel__seta svg { width: 1.3rem; height: 1.3rem; }
    .carrossel__seta--ant { left: -1.5rem; }
    .carrossel__seta--prox { right: -1.5rem; }
    .carrossel__seta:hover { background: var(--band-bg); transform: scale(1.06); }
    .carrossel__seta:focus-visible { outline: 2px solid var(--metal); outline-offset: 3px; }
    .carrossel__seta:disabled { opacity: 0; pointer-events: none; }
  }
  @media (max-width: 720px) { .carrossel__seta { display: none; } }
  @media (prefers-reduced-motion: reduce) { .gallery .photo img { transition: none; } .gallery .photo:hover img { transform: none; } }

  /* ---------- Onde atendemos, no estilo da faixa do formulário (24/10/2026, 2ª rodada) ----------
     Fundo grafite; título centralizado entre filetes dourados; texto claro; cards translúcidos
     de contorno dourado, com ícone (alfinete de mapa e avião) num círculo com brilho; a linha
     "Atendimento 24/7" vira um selo de contorno dourado. Igual nos dois temas. */
  #atendimento { background: var(--band-bg); color: var(--band-text); --text: var(--band-text); --text-2: color-mix(in srgb, var(--band-text) 82%, transparent); --text-dim: color-mix(in srgb, var(--band-text) 72%, transparent); }
  #atendimento .section__head { max-width: none; text-align: center; margin-inline: auto; }
  #atendimento .section__head h2 { max-width: none; margin-inline: auto; color: var(--band-text); }
  #atendimento .section__head h2::before,
  #atendimento .section__head h2::after {
    content: "";
    display: block;
    width: 3.5rem;
    height: 1px;
    margin: 0 auto 1rem;
    background: linear-gradient(90deg, transparent, var(--band-metal), transparent);
  }
  #atendimento .section__head h2::after { margin: 1rem auto 0; }
  #atendimento .section__head p { max-width: 60ch; margin-inline: auto; }
  #atendimento .attend { gap: 1rem; }
  #atendimento .attend__card {
    position: relative;
    padding: 1.5rem 1.4rem 1.4rem 5rem;
    background: color-mix(in srgb, var(--band-text) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--band-metal) 40%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--band-metal) 40%, transparent);
    border-radius: 4px;
    transition: border-color 0.4s ease, transform 0.4s var(--revelar-curva);
  }
  #atendimento .attend__card::before {
    content: "";
    position: absolute;
    left: 1.3rem;
    top: 1.4rem;
    width: 2.6rem;
    height: 2.6rem;
    border: 1px solid color-mix(in srgb, var(--band-metal) 75%, transparent);
    border-radius: 50%;
    box-shadow: 0 0 14px color-mix(in srgb, var(--band-metal) 30%, transparent);
  }
  #atendimento .attend__card::after {   /* o círculo (contorno) fica no ::before; o ícone em si, aqui */
    content: "";
    position: absolute;
    left: 1.3rem;
    top: 1.4rem;
    width: 2.6rem;
    height: 2.6rem;
    background: var(--band-metal);
    -webkit-mask: var(--icone-atende) center / 1.2rem no-repeat;
            mask: var(--icone-atende) center / 1.2rem no-repeat;
  }
  #atendimento .attend__card:nth-child(1) { --icone-atende: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-6.5-5.6-6.5-11a6.5 6.5 0 0 1 13 0C18.5 15.4 12 21 12 21z'/%3E%3Ccircle cx='12' cy='10' r='2.4'/%3E%3C/svg%3E"); }
  #atendimento .attend__card:nth-child(2) { --icone-atende: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15.5l-8-4.5V5.5a1.5 1.5 0 0 0-3 0V11l-8 4.5V17l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-4.5l8 2.5z'/%3E%3C/svg%3E"); }
  #atendimento .attend__card h3 { font-family: var(--font-display); font-weight: 400; font-size: var(--step-1); color: var(--band-metal); margin-bottom: 0.5rem; }
  #atendimento .attend__card p { color: var(--text-2); }
  #atendimento .attend__card .muted { color: var(--band-accent); font-size: 0.95rem; margin-top: 0.6rem; }
  @media (hover: hover) and (pointer: fine) {
    #atendimento .attend__card:hover { border-color: var(--band-metal); transform: translateY(-3px); }
  }
  @media (prefers-reduced-motion: reduce) { #atendimento .attend__card { transition: none; } #atendimento .attend__card:hover { transform: none; } }
  #atendimento .hours { justify-content: center; }
  #atendimento .hours span {
    display: inline-block;
    padding: 0.55rem 1.4rem;
    border: 1px solid color-mix(in srgb, var(--band-metal) 70%, transparent);
    border-radius: 999px;
    color: var(--band-text);
    letter-spacing: 0.04em;
  }
  #atendimento .hours b { color: var(--band-metal); font-weight: 600; }
  @media (max-width: 720px) {
    #atendimento .attend__card { padding: 1.2rem 1.1rem 1.2rem 4.4rem; }
    #atendimento .attend__card::before, #atendimento .attend__card::after { left: 1rem; top: 1.15rem; }
  }

  /* Frota: fotos horizontais (Minivan, Blindado, Van e Micro-ônibus) com o veículo inteiro,
     afastado, sobre a prévia desfocada da própria foto (sem ampliar nem cortar, o que deixava a
     foto sem nitidez e o carro "colado" no card). --frota-afastamento: quanto da largura do card
     o veículo ocupa; recomendado 0.9 a 1 (dono, 24/10) */
  :root { --frota-afastamento: 1.12; }   /* largura da foto em relação ao card (acima de 1, as laterais saem um pouco do card, e o veículo fica maior); recomendado 1 a 1.3 */
  #frota-minivan .photo img, #frota-blindado .photo img, #frota-van .photo img, #frota-micro-onibus .photo img {
    position: absolute;
    top: 46%;
    left: 50%;
    width: calc(100% * var(--frota-afastamento));
    height: auto;
    max-width: none;
    object-fit: fill;
    transform: translate(-50%, -50%);
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 18%, #000 82%, transparent 100%);
            mask-image: linear-gradient(to bottom, transparent 0%, #000 18%, #000 82%, transparent 100%);
  }
  #frota-minivan .photo::before, #frota-blindado .photo::before, #frota-van .photo::before, #frota-micro-onibus .photo::before { filter: blur(18px) brightness(0.55); transform: scale(1.15); }
  @media (min-width: 721px) {
    #frota-minivan .photo:hover img, #frota-blindado .photo:hover img, #frota-van .photo:hover img, #frota-micro-onibus .photo:hover img { transform: translate(-50%, -50%) scale(1.04); }
  }

  @media (max-width: 720px) { :root { --frota-afastamento: 1.38; } }   /* celular: card mais alto, o veículo pode ocupar mais (recomendado 1.25 a 1.5) */

  /* ---------- Depoimentos no computador: cards parados lado a lado, setas se não couberem (24/10/2026) ----------
     Substitui o carrossel contínuo: movimento automático prejudica a leitura e a acessibilidade.
     --depo-largura-min: largura mínima de cada card; quando os cards não cabem, viram uma linha
     deslizável com setas (script.js, carrosselComSetas). */
  :root { --depo-largura-min: 16rem; }   /* recomendado 15rem a 20rem */
  @media (min-width: 721px) {
    .quotes {
      display: flex;
      gap: 1.25rem;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      scrollbar-width: none;
      overscroll-behavior-x: contain;
      padding-block: 0.4rem 1.2rem;   /* espaço para a sombra dos cards */
    }
    .quotes::-webkit-scrollbar { display: none; }
    .quotes > .quote { flex: 0 0 max(var(--depo-largura-min), calc((100% - 3 * 1.25rem) / 4)); scroll-snap-align: start; margin: 0; }
    .carrossel--depoimentos .carrossel__seta { top: calc(50% - 0.4rem); }
  }

  /* ---------- Seletor de idioma "PT | EN" (idiomas.en.ligado, 24/10/2026) ----------
     Discreto: no computador, à direita dos itens do menu e antes do botão principal; no celular,
     o último item do menu. O idioma atual na cor de destaque. Área de toque de 44 px.
     --idioma-tamanho: tamanho das letras; recomendado 0.75rem a 0.85rem. */
  :root { --idioma-tamanho: 0.78rem; }
  .idioma { display: inline-flex; align-items: center; gap: 0.15rem; font-size: var(--idioma-tamanho); letter-spacing: 0.08em; white-space: nowrap; }
  .idioma a,
  .nav .idioma a,
  .mobile-menu .idioma a {
    position: relative;
    display: inline-flex;
    align-items: center;
    padding: 0 0.6rem;
    border: 0;
    font-size: inherit;
    letter-spacing: inherit;
    color: color-mix(in srgb, var(--text) 62%, transparent);
    text-decoration: none;
  }
  .idioma a::before { content: ""; position: absolute; inset: 50% auto auto 50%; width: 24px; height: 24px; transform: translate(-50%, -50%); }   /* toque de 44 px */
  .nav .idioma a::after { display: none; }   /* sem a linha dos links do menu */
  .idioma a[aria-current] { color: var(--accent); }
  .idioma a:hover { color: var(--accent); }
  .idioma a:focus-visible { outline: 2px solid var(--metal); outline-offset: 3px; border-radius: 2px; }
  .idioma__barra { color: color-mix(in srgb, var(--text) 30%, transparent); }
  .mobile-menu .idioma--menu { justify-content: center; min-height: 44px; margin-top: 0.2rem; }
  @media (max-width: 75em) { .nav .idioma--topo { display: none; } }
  @container topo (max-width: 64em) { .nav .idioma--topo { display: none; } }

  /* Troca de idioma no cabeçalho com o menu hambúrguer (24/10/2026): o OUTRO idioma ("EN" na
     página em português, "PT" na em inglês), com o globo, em dourado. Fica no próprio cabeçalho,
     na mesma linha do logo e do ícone do menu (sem camada por cima e sem depender de script), e
     aparece sempre que a versão em inglês está ligada (idiomas.en.ligado).
     - Celular (até 720px): o globo em cima do idioma, estreito, colado ao ícone do menu; o logo e
       o nome não mudam de tamanho (com o texto do celular muito aumentado, o complemento da marca
       pode quebrar em duas linhas, no mesmo tamanho).
     - Tablet (721px a 1200px): pílula com contorno dourado, ao lado do botão "Reservar".
     - Computador com o menu completo: sai (lá fica o "PT | EN").
     O idioma atual fica escondido (é a página em que a pessoa já está). Toque de 44 px.
     --idioma-celular-tamanho: tamanho das letras; recomendado 0.75rem a 0.85rem.
     --idioma-celular-folga: espaço até a caixa do ícone do menu no celular (as linhas ficam 0.75rem adiante); recomendado 0 a 0.4rem. */
  :root { --idioma-celular-tamanho: 0.8rem; --idioma-celular-folga: 0.5rem; }   /* folga 0.5rem (antes 0.1rem): o botão um pouco mais à esquerda (dono, 28/10) */
  .nav .idioma--celular { display: none; position: relative; align-items: center; color: var(--metal); white-space: nowrap; }
  .nav .idioma--celular svg { flex: none; width: 1.15em; height: 1.15em; }
  .nav .idioma--celular a[aria-current] { display: none !important; }
  .nav .idioma--celular a { position: static; }
  .nav .idioma--celular a::before { inset: 50% auto auto 50%; }
  @media (max-width: 75em) {
    .nav .idioma--celular {
      display: inline-flex;
      gap: 0.35rem;
      height: 2.25rem;
      padding: 0 0.75rem;
      border: 1px solid color-mix(in srgb, var(--metal) 75%, transparent);
      border-radius: 999px;
      font-size: var(--idioma-celular-tamanho);
      font-weight: 600;
      letter-spacing: 0.06em;
    }
    .nav .idioma--celular a { display: inline-flex; padding: 0; color: inherit; }
  }
  @container topo (max-width: 64em) {
    .nav .idioma--celular {
      display: inline-flex;
      gap: 0.35rem;
      height: 2.25rem;
      padding: 0 0.75rem;
      border: 1px solid color-mix(in srgb, var(--metal) 75%, transparent);
      border-radius: 999px;
      font-size: var(--idioma-celular-tamanho);
      font-weight: 600;
      letter-spacing: 0.06em;
    }
    .nav .idioma--celular a { display: inline-flex; padding: 0; color: inherit; }
  }
  @media (max-width: 720px) {
    .nav .idioma--celular {
      flex-direction: column;
      gap: 0.12rem;
      height: auto;
      padding: 0;
      border: 0;
      border-radius: 0;
      margin-right: calc(var(--idioma-celular-folga) - 0.75rem);   /* encosta na caixa do ícone do menu (o .nav tem 0.75rem entre os itens) */
      font-size: calc(var(--idioma-celular-tamanho) * 0.9);
    }
    .nav .idioma--celular a { text-decoration: none; border-bottom: 1px solid transparent; }
    .nav .idioma--celular:hover a { border-bottom-color: currentColor; }
  }
  .nav .idioma--celular:hover { border-color: var(--metal); }
  .nav .idioma--celular:has(a:focus-visible) { outline: 2px solid var(--metal); outline-offset: 2px; }
  .nav .idioma--celular a:focus-visible { outline: none; }

  /* =====================================================================
     Ajustes do dono (28/10/2026)
     ===================================================================== */
  /* Globo no seletor "PT | EN" do computador, como no celular */
  .nav .idioma--topo svg { flex: none; width: 1.15em; height: 1.15em; margin-right: 0.25rem; color: var(--metal); }

  /* Indicadores dos carrosséis no celular (serviços, frota, depoimentos, blog): com muitos itens,
     cada traço encolhe para todos caberem numa única linha, sem quebrar */
  @media (max-width: 720px) {
    .svc-indicadores { flex-wrap: nowrap; }
    .svc-indicador { flex: 0 1 2.15rem; min-width: 0; }
  }

  /* Perguntas frequentes: cor ao passar o cursor e destaque na pergunta aberta. No tema claro, o
     --accent da Faria é o grafite (igual ao texto), então o destaque usa o dourado de texto.
     --faq-destaque: cor do título da pergunta aberta e ao passar o cursor.
     --faq-fundo-aberta: força do fundo dourado da pergunta aberta; recomendado 5% a 10%. */
  :root { --faq-destaque: var(--gold-texto); --faq-fundo-aberta: 7%; }
  @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --faq-destaque: var(--metal); } }
  :root[data-theme="dark"] { --faq-destaque: var(--metal); }
  .faq__item { border-radius: 10px; transition: background-color 0.25s ease; }
  .faq__item summary, .faq__resposta { padding-inline: 0.9rem; }
  .faq__item summary { transition: color 0.2s ease; }
  .faq__item summary::after { color: var(--metal); }
  .faq__item:hover { background: color-mix(in srgb, var(--metal) 4%, transparent); }
  .faq__item summary:hover,
  .faq__item[open] summary { color: var(--faq-destaque); }
  .faq__item[open] { background: color-mix(in srgb, var(--metal) var(--faq-fundo-aberta), transparent); }
  @media (prefers-reduced-motion: reduce) { .faq__item, .faq__item summary { transition: none; } }

  /* Assinatura do Quem somos numa linha própria, abaixo da foto e do texto (render.js), centralizada
     na seção inteira no computador (dono, 28/10) */
  .about__inner > .sign { grid-column: 1 / -1; margin-top: 0; text-align: center; }

  /* Título e texto dos depoimentos centralizados também no celular, alinhados com a nota do Google
     acima deles, como no computador (dono, 28/10) */
  @media (max-width: 720px) {
    #depoimentos .section__head { text-align: center; }
    #depoimentos .section__head h2,
    #depoimentos .section__head p { margin-inline: auto; }
  }

  /* =====================================================================
     Faixa de selos (barra de confiança) em painel escuro (dono, 28/10/2026)
     Faixa grafite de ponta a ponta, logo abaixo do topo (sem sobrepor a foto; dono, 28/10), com
     filetes dourados em cima e embaixo, divisórias finas, ícones em círculos dourados, números em
     dourado metálico na fonte dos títulos e rótulos leves, em letras normais. No celular: o Google
     na linha de cima e os demais em grade 2 × 2.
     --selos-fundo: tom do grafite da faixa; recomendado 90% a 100% (100% = igual ao topo).
     ===================================================================== */
  :root { --selos-fundo: 100%; }
  .hero-selos {
    position: relative;
    padding-block: clamp(1.4rem, 3vw, 2.1rem);
    background:
      radial-gradient(60% 120% at 50% 0%, color-mix(in srgb, var(--metal) 10%, transparent), transparent 70%),
      color-mix(in srgb, var(--band-bg) var(--selos-fundo), #000);
    border-bottom: 1px solid color-mix(in srgb, var(--metal) 40%, transparent);
    color: var(--band-text);
  }
  .hero-selos .hero__trust.hero__trust--icones {
    position: relative;
    margin: 0;
    padding: 0;
    gap: 0;
    border: 0;
    background: none;
    box-shadow: none;
    color: var(--band-text);
  }
  .hero-selos .hero__trust.hero__trust--icones .selo {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 0.7rem;
    padding: 0.35rem 0.9rem;
    text-align: center;
  }
  .hero-selos .hero__trust.hero__trust--icones .selo__icone {
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    background: color-mix(in srgb, var(--metal) 7%, transparent);
    border: 1px solid color-mix(in srgb, var(--metal) 55%, transparent);
    box-shadow: 0 0 0 5px color-mix(in srgb, var(--metal) 6%, transparent);
    color: var(--metal);
    transition: box-shadow 0.3s ease, transform 0.3s ease;
  }
  .hero-selos .hero__trust.hero__trust--icones .selo__icone svg { width: 46%; height: 46%; }
  .hero-selos .hero__trust.hero__trust--icones .selo__icone--google { background: #FFFFFF; border-color: color-mix(in srgb, var(--metal) 70%, transparent); }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto { align-items: center; gap: 0.3rem; text-align: center; }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto b {
    font-family: var(--font-display);
    font-weight: 400;
    font-size: clamp(1.1rem, 1.45vw, 1.35rem);
    letter-spacing: 0.02em;
    line-height: 1.15;
    color: var(--band-text);
  }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto b.selo__numero {
    font-size: clamp(1.55rem, 2.2vw, 1.95rem);
    white-space: nowrap;
    background: linear-gradient(180deg, #F1E3B5 0%, var(--metal) 55%, #A8894A 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto b .estrelas {
    display: block;
    margin: 0.3rem auto 0;
    font-family: var(--font-body);
    font-size: 0.8rem;
    letter-spacing: 0.18em;
    color: var(--metal);
    -webkit-text-fill-color: var(--metal);
  }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto small {   /* rótulos leves: letras normais, peso normal (dono, 28/10) */
    font-size: 0.86rem;
    font-weight: 400;
    letter-spacing: 0.01em;
    line-height: 1.45;
    text-transform: none;
    color: color-mix(in srgb, var(--band-text) 70%, transparent);
  }
  @media (hover: hover) {
    .hero-selos .hero__trust.hero__trust--icones .selo:hover .selo__icone {
      transform: translateY(-2px);
      box-shadow: 0 0 0 5px color-mix(in srgb, var(--metal) 12%, transparent), 0 0 22px -2px color-mix(in srgb, var(--metal) 45%, transparent);
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .hero-selos .hero__trust.hero__trust--icones .selo__icone { transition: none; }
  }

  /* tablet e computador: todos os selos numa linha, com divisórias douradas finas entre eles (com
     muitos selos ou texto grande, a linha quebra) */
  @media (min-width: 721px) {
    .hero-selos .hero__trust.hero__trust--icones {
      grid-template-columns: repeat(auto-fit, minmax(min(100%, 9.5em), 1fr));
      row-gap: 1.4rem;
      align-items: start;
    }
    .hero-selos .hero__trust.hero__trust--icones .selo + .selo::before {
      content: "";
      display: block;
      position: absolute;
      left: 0;
      top: 12%;
      bottom: 12%;
      width: 1px;
      height: auto;
      margin: 0;
      border-radius: 0;
      background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--metal) 45%, transparent), transparent);
    }
  }

  /* celular: painel logo abaixo do topo; o Google na linha de cima (nota, estrelas e "Avaliação"
     ao lado do ícone) e os demais em grade 2 × 2, com linhas finas entre eles */
  @media (max-width: 720px) {
    .hero-selos { padding-block: 0.4rem; }
    .hero-selos .hero__trust.hero__trust--icones {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      align-items: stretch;
    }
    .hero-selos .hero__trust.hero__trust--icones .selo,
    .hero-selos .hero__trust.hero__trust--icones .selo:last-child {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: flex-start;
      gap: 0.55rem;
      padding: 1rem 0.5rem;
    }
    .hero-selos .hero__trust.hero__trust--icones .selo:last-child .selo__texto { display: flex; }
    .hero-selos .hero__trust.hero__trust--icones .selo__texto { flex-direction: column; flex-wrap: nowrap; align-items: center; }
    .hero-selos .hero__trust.hero__trust--icones .selo__icone { width: 2.75rem; height: 2.75rem; }
    .hero-selos .hero__trust.hero__trust--icones .selo__texto small { font-size: 0.85rem; }
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque {
      grid-column: 1 / -1;
      flex-direction: row;
      justify-content: center;
      gap: 0.9rem;
      border-bottom: 1px solid color-mix(in srgb, var(--metal) 28%, transparent);
    }
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque .selo__texto { align-items: flex-start; text-align: left; }
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque b { display: flex; align-items: baseline; gap: 0.55rem; }
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque b .estrelas { display: inline-block; margin: 0; }
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque ~ .selo:nth-child(even) { border-right: 1px solid color-mix(in srgb, var(--metal) 22%, transparent); }
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque ~ .selo:nth-child(n+4) { border-top: 1px solid color-mix(in srgb, var(--metal) 22%, transparent); }
  }

  /* Faixa de selos padronizada (dono, 28/10/2026): título em branco, na fonte dos títulos, e
     descrição em dourado, na fonte do texto (números alinhados às letras; a fonte dos títulos tem
     números que sobem e descem). O Google sem título: o ícone e a nota em dourado, na altura das
     outras descrições.
     --selo-titulo-tamanho: tamanho do título branco; recomendado 1rem a 1.2rem.
     --selo-desc-tamanho: tamanho da descrição dourada; recomendado 0.85rem a 1rem. */
  :root { --selo-titulo-tamanho: 1.1rem; --selo-desc-tamanho: 0.94rem; }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto { gap: 0.3rem; }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto b,
  .hero-selos .hero__trust.hero__trust--icones .selo__texto b.selo__numero {
    font-family: var(--font-display);
    font-weight: 400;
    font-size: var(--selo-titulo-tamanho);
    letter-spacing: 0.02em;
    line-height: 1.2;
    white-space: normal;
    background: none;
    color: var(--band-text);
    -webkit-text-fill-color: currentColor;
  }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto small {
    font-family: var(--font-body);
    font-size: var(--selo-desc-tamanho);
    font-weight: 500;
    font-variant-numeric: lining-nums;
    letter-spacing: 0.02em;
    line-height: 1.45;
    color: var(--metal);
  }
  .hero-selos .hero__trust.hero__trust--icones .selo__texto small .estrelas {
    display: inline-block;
    margin-left: 0.35rem;
    font-size: 0.9em;
    letter-spacing: 0.12em;
    color: var(--metal);
  }
  @media (min-width: 721px) {
    /* Google sem título: a nota fica na altura das descrições dos outros selos */
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque .selo__texto { padding-top: calc(var(--selo-titulo-tamanho) * 1.2 + 0.3rem); }
  }
  @media (max-width: 720px) {
    :root { --selo-desc-tamanho: 0.88rem; }
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque .selo__texto { align-items: center; }
    .hero-selos .hero__trust.hero__trust--icones .selo--destaque small { font-size: 1.05rem; }
  }

  /* Títulos e texto de "Onde atendemos" no computador (dono, 28/10/2026): o título das seções não
     quebra mais a cada ~20 caracteres ("Frequently asked questions" quebrava depois de "asked");
     o texto de "Onde atendemos" usa a largura do conteúdo, em linhas equilibradas.
     --largura-titulo-computador: largura máxima do título; recomendado none (sem limite) ou 30ch a 40ch.
     --largura-texto-atendimento: largura máxima do texto de "Onde atendemos"; recomendado 80ch a 100ch. */
  :root { --largura-titulo-computador: none; --largura-texto-atendimento: 92ch; }
  @media (min-width: 721px) {
    .section__head h2,
    .section__head h1 { max-width: var(--largura-titulo-computador); }
    #atendimento .section__head { max-width: none; }
    #atendimento .section__head p { max-width: var(--largura-texto-atendimento); text-wrap: balance; }
  }

  /* Traçado de rota dourado no fundo do rodapé (dono, 28/10/2026): uma estrada pontilhada com
     paradas, discreta, atrás do conteúdo; sem foto, para não pesar a página. Desenho em máscara
     (SVG embutido), pintado com a cor --metal, então acompanha os dois temas.
     --rodape-rota-opacidade: intensidade do traçado; recomendado 0.12 a 0.3 (0 = sem traçado).
     --rodape-rota-altura: altura do desenho; recomendado 160px a 280px. */
  :root { --rodape-rota-opacidade: 0.22; --rodape-rota-altura: 240px; }
  .foot { position: relative; isolation: isolate; overflow: hidden; }
  .foot::before {
    content: "";
    position: absolute;
    right: 0;
    bottom: 0;
    width: min(100%, 900px);
    height: var(--rodape-rota-altura);
    z-index: -1;
    background: var(--metal);
    opacity: var(--rodape-rota-opacidade);
    -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20800%20300%27%3E%3Cpath%20d%3D%27M-10%20250%20C%2090%20240%20120%20170%20210%20175%20S%20330%20250%20420%20200%20S%20520%2070%20620%2095%20S%20740%20160%20810%2060%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%272%27%20stroke-dasharray%3D%272%209%27%20stroke-linecap%3D%27round%27%2F%3E%3Ccircle%20cx%3D%27210%27%20cy%3D%27175%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%27420%27%20cy%3D%27200%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%27620%27%20cy%3D%2795%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%27620%27%20cy%3D%2795%27%20r%3D%2712%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%271.5%27%2F%3E%3C%2Fsvg%3E") right bottom / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20800%20300%27%3E%3Cpath%20d%3D%27M-10%20250%20C%2090%20240%20120%20170%20210%20175%20S%20330%20250%20420%20200%20S%20520%2070%20620%2095%20S%20740%20160%20810%2060%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%272%27%20stroke-dasharray%3D%272%209%27%20stroke-linecap%3D%27round%27%2F%3E%3Ccircle%20cx%3D%27210%27%20cy%3D%27175%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%27420%27%20cy%3D%27200%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%27620%27%20cy%3D%2795%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%27620%27%20cy%3D%2795%27%20r%3D%2712%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%271.5%27%2F%3E%3C%2Fsvg%3E") right bottom / contain no-repeat;
    pointer-events: none;
  }
  @media (max-width: 720px) {
    :root { --rodape-rota-altura: 150px; }
  }

  /* Foto do artigo do blog de ponta a ponta (dono, 28/10/2026): faixa larga no alto do artigo,
     enquadrada pelo posicaoFoto de cada artigo; o texto continua na largura de leitura.
     --artigo-foto-proporcao: proporção da faixa no computador; recomendado 21 / 9 a 16 / 9. */
  :root { --artigo-foto-proporcao: 21 / 9; }
  .artigo__figura { width: 100vw; max-width: none; margin-inline: calc(50% - 50vw); }
  .artigo__figura .photo { aspect-ratio: var(--artigo-foto-proporcao); border-radius: 0; }
  @media (max-width: 720px) {
    .artigo__figura .photo { aspect-ratio: 4 / 3; }
  }

  /* Topo do blog (dono, 28/10/2026): logo à esquerda e "Faria – Transporte Executivo Campinas"
     numa linha no computador; no celular, só o logo e o nome. */
  .blog__marca { flex-direction: row; justify-content: center; align-items: center; gap: 0.75rem; }
  .blog__logo { flex: none; width: var(--marca-altura-blog); height: var(--marca-altura-blog); background: var(--logo-src) center / contain no-repeat; }
  .blog__head .blog__complemento { font-family: var(--font-display); font-size: var(--step-1); letter-spacing: 0.01em; color: var(--text); white-space: nowrap; }
  .blog__head .blog__complemento::before { content: "\2013"; margin-right: 0.6rem; color: var(--metal); }
  @media (max-width: 720px) {
    .blog__head .blog__complemento { display: none; }
  }

  /* Depoimentos no computador (dono, 28/10/2026): a inicial encostada à esquerda, o detalhe
     ("Cliente corporativo") numa linha só e a linha divisória na mesma altura em todos os cards. */
  @media (min-width: 721px) {
    .quote { display: flex; flex-direction: column; }
    .quote blockquote { flex: 1 1 auto; }
    .quote figcaption { justify-content: flex-start; }
    .quotes > .quote { min-width: 0; }   /* o card nunca passa da largura prevista (a borda do último era cortada) */
    .quote__detalhe { white-space: nowrap; letter-spacing: 0.03em; }
  }

  /* Ajustes do dono (28/10/2026, noite) */
  /* Foto do artigo logo abaixo do cabeçalho, com "Voltar ao blog" depois dela, e mais baixa
     (60% da faixa anterior): o recorte tira o alto e o baixo, com o posicaoFoto do artigo. */
  :root { --artigo-foto-proporcao: 35 / 9; }
  .artigo { padding-top: 0; }
  .artigo__figura { margin-top: 0; margin-bottom: 1.4rem; }
  @media (max-width: 720px) {
    .artigo__figura .photo { aspect-ratio: 20 / 9; }
  }

  /* Quem somos: título alinhado à esquerda, como o texto. */
  .about__titulo { text-align: left; }

  /* Topo do blog: logo à esquerda; o nome e, abaixo dele, o complemento na letra de antes (pequena e
     espaçada), como era no início, também no celular. */
  /* três colunas: o logo na 1ª (encostado ao nome), o nome e o complemento na do meio, centralizados
     na página; a 3ª, vazia, equilibra a 1ª (o logo não tira o nome do centro) */
  .blog__marca { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; column-gap: 1.5rem; row-gap: 0.2rem; }
  .blog__marca > .brand__name, .blog__marca > .blog__marca-nome { grid-column: 2; grid-row: 1; justify-self: center; }
  .blog__logo { grid-column: 1; grid-row: 1 / span 2; justify-self: end; }
  .blog__head .blog__complemento {
    grid-column: 2;
    grid-row: 2;
    justify-self: center;
    font-family: var(--font-body);
    font-style: normal;
    font-size: 0.8125rem;
    letter-spacing: 0.04em;
    color: var(--text-dim);
    white-space: normal;
  }
  .blog__head .blog__complemento::before { content: none; }
  @media (max-width: 720px) {
    .blog__head .blog__complemento { display: block; }
  }

  /* Depoimentos: a borda do último card era cortada, porque a largura mínima (16rem = 256 px) passava
     um pouco do espaço de 4 cards a 1366 px (255 px), e a faixa virava deslizável com seta. */
  :root { --depo-largura-min: 15rem; }
  @media (min-width: 721px) {
    .quotes { padding-inline: 2px; }
  }


  /* Quem somos (dono, 28/10/2026, noite): os 4 destaques, no visual de antes, numa linha abaixo da
     foto e do texto, a partir de 961 px (abaixo disso, 2 × 2); a assinatura logo abaixo do texto,
     na coluna dele, para encurtar a seção. */
  .about__inner > .creds { grid-column: 1 / -1; margin-top: 0; }
  @media (min-width: 961px) {
    .about__inner > .creds.creds--cards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  }
  .about__body > .sign { margin-top: 1.6rem; text-align: left; }

  /* Trilha do artigo (dono, 28/10/2026): "Início › Blog › artigo" à esquerda e "Voltar ao blog" na
     extremidade direita, na mesma linha; o nome do artigo é cortado com reticências se não couber. */
  .artigo__trilha { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem 1.25rem; flex-wrap: wrap; margin-bottom: 1rem; }
  .trilha { display: flex; align-items: center; gap: 0.45rem; min-width: 0; flex: 1 1 16rem; font-size: 0.875rem; color: var(--text-dim); }
  .trilha a { position: relative; color: var(--text-2); text-decoration: none; white-space: nowrap; }
  .trilha a::before { content: ""; position: absolute; inset: -12px -4px; }   /* área de toque de 44 px */
  .trilha a:hover { color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
  .trilha__sep { color: var(--metal); }
  .trilha [aria-current] { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--gold-texto); }
  .artigo__trilha .artigo__voltar { flex: none; margin-left: auto; }

  /* Depoimentos no computador (dono, 28/10/2026): com o cursor sobre um card, ele sobe um pouco e
     os demais esmaecem, como as fotos da frota (mesmas variáveis do destaque da galeria). */
  @media (min-width: 721px) and (hover: hover) and (pointer: fine) {
    .quotes > .quote { transition: transform var(--galeria-destaque-duracao) ease, opacity var(--galeria-destaque-duracao) ease, filter var(--galeria-destaque-duracao) ease, box-shadow var(--galeria-destaque-duracao) ease; }
    .quotes:has(> .quote:hover) > .quote:not(:hover) { opacity: var(--galeria-destaque-opacidade); filter: saturate(var(--galeria-destaque-saturacao)); }
    .quotes > .quote:hover { transform: translateY(calc(-1 * var(--galeria-destaque-elevacao))); box-shadow: var(--sombra-galeria); }
  }
  @media (prefers-reduced-motion: reduce) {
    .quotes > .quote:hover { transform: none; }
  }

  /* "Por que escolher a Faria?" em prata (dono, 28/10/2026): fundo prata quente e claro, com um
     brilho suave no alto, e o filete dourado dos cards mais fino. No tema escuro, fica o fundo
     alternado de antes.
     --pilares-prata-claro / --pilares-prata-escuro: as duas pontas do degradê prata; recomendado
     tons entre #F0EFEC e #D6D4CF (quanto mais escuro, mais metálico).
     --pilares-filete: espessura do filete dourado no alto de cada card; recomendado 1px a 2px. */
  :root { --pilares-prata-claro: #EEEDEA; --pilares-prata-escuro: #D9D7D2; --pilares-filete: 1px; }
  .pilares {
    background:
      radial-gradient(70% 90% at 50% 0%, rgba(255, 255, 255, 0.7), transparent 70%),
      linear-gradient(180deg, var(--pilares-prata-claro) 0%, var(--pilares-prata-escuro) 100%);
    --text-dim: #5E5A55;
  }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .pilares { background: var(--fundo-secao-alt); --text-dim: var(--texto-dim-alt); }
  }
  :root[data-theme="dark"] .pilares { background: var(--fundo-secao-alt); --text-dim: var(--texto-dim-alt); }
  @media (min-width: 721px) {
    .pilares__item,
    .pilares__item:first-child,
    .pilares__item:last-child { border-top-width: var(--pilares-filete); box-shadow: 0 14px 30px -24px rgba(30, 28, 26, 0.45); }
  }

  /* "Leia também" no computador (dono, 28/10/2026): os artigos numa linha deslizável de 3 cartões,
     com as setas do carrossel da frota e dos depoimentos (script.js, carrosselComSetas), em vez de
     várias linhas; a página do artigo fica mais curta. No celular, o carrossel de antes.
     --leia-cartoes: quantos cartões aparecem de uma vez; recomendado 3 (2 em telas menores). */
  :root { --leia-cartoes: 3; }
  @media (min-width: 721px) {
    .blog--leia .blog__cards {
      display: flex;
      gap: 1.5rem;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      scrollbar-width: none;
      overscroll-behavior-x: contain;
      padding: 0.4rem 2px 1.2rem;   /* espaço para a sombra e a borda dos cartões */
    }
    .blog--leia .blog__cards::-webkit-scrollbar { display: none; }
    .blog--leia .blog__cards > .blog-card { flex: 0 0 calc((100% - (var(--leia-cartoes) - 1) * 1.5rem) / var(--leia-cartoes)); min-width: 0; scroll-snap-align: start; }
    .carrossel--leia .carrossel__seta { top: calc(50% - 0.4rem); }
  }
  @media (min-width: 721px) and (max-width: 960px) {
    :root { --leia-cartoes: 2; }
  }

  /* Cartões do blog mais compactos (dono, 28/10/2026): foto mais baixa, letra do título e da data
     um pouco menor, menos espaço interno e cantos arredondados, para o cartão inteiro caber na tela
     parada do computador. Na página /blog/, a grade fica um pouco mais estreita e centralizada.
     --blog-card-raio: arredondamento dos cartões; recomendado 10px a 16px.
     --blog-card-foto: proporção da foto do cartão; recomendado 3 / 2 a 16 / 10 (antes 4 / 3).
     --blog-grade-largura: largura máxima da grade de cartões na página /blog/; recomendado 60rem a 70rem. */
  :root { --blog-card-raio: 12px; --blog-card-foto: 3 / 2; --blog-grade-largura: 64rem; }
  .blog-card { border-radius: var(--blog-card-raio); border-top-width: 1px; }
  .blog-card__foto .photo { aspect-ratio: var(--blog-card-foto); }
  .blog-card__corpo { gap: 0.55rem; padding: 1.05rem 1.15rem 1.15rem; }
  .blog-card__meta { font-size: 0.8125rem; }
  .blog-card__titulo { font-size: clamp(0.98rem, 5cqi, 1.08rem); }
  @media (min-width: 721px) {
    .blog:not(.blog--leia) .blog__cards { max-width: var(--blog-grade-largura); margin-inline: auto; }
  }

  /* Botões dos serviços no computador (dono, 28/10/2026): 5 na primeira linha e o restante na
     segunda, centralizados (antes, a 2ª linha ficava com 1 ou 2 botões). O ::after é a quebra de
     linha depois do 5º; com o texto aumentado ou em telas menores, os botões seguem quebrando sozinhos.
     Para mudar a quantidade da primeira linha, troque o 6 de nth-child(n+6) (quantidade + 1). */
  @media (min-width: 961px) {
    #servicos .categorias.categorias--linha::after { content: ""; order: 1; flex-basis: 100%; height: 0; margin-top: -6px; }
    #servicos .categorias--linha .categoria:nth-child(n+6) { order: 2; }
  }

  /* =====================================================================
     Ajustes do dono (28/10/2026, fim da noite)
     ===================================================================== */
  /* Linha dourada no fim da faixa de selos, como a do fim do "Por que escolher", marcando a
     passagem de uma seção para a outra. */
  .hero-selos { border-bottom: 0; }
  .hero-selos::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, var(--metal) 25%, color-mix(in srgb, var(--metal) 55%, #FFFFFF) 50%, var(--metal) 75%, transparent 100%);
    box-shadow: 0 0 10px color-mix(in srgb, var(--metal) 45%, transparent);
    pointer-events: none;
  }

  /* "Por que escolher a Faria?" continua o grafite da faixa de selos e vai clareando até o fundo
     dos serviços, logo abaixo (substitui o fundo prata). O título fica claro sobre o grafite.
     --pilares-escuro-ate: até onde o grafite fica inteiro antes de começar a clarear; recomendado 25% a 45%. */
  :root { --pilares-escuro-ate: 32%; }
  .pilares {
    --pilares-grafite: color-mix(in srgb, var(--band-bg) var(--selos-fundo), #000);
    background: linear-gradient(180deg,
      var(--pilares-grafite) 0%,
      var(--pilares-grafite) var(--pilares-escuro-ate),
      color-mix(in srgb, var(--pilares-grafite) 55%, var(--bg)) 66%,
      var(--bg) 100%);
  }
  :root:not([data-theme="light"]) .pilares,
  :root[data-theme="dark"] .pilares {
    background: linear-gradient(180deg,
      var(--pilares-grafite) 0%,
      var(--pilares-grafite) var(--pilares-escuro-ate),
      color-mix(in srgb, var(--pilares-grafite) 55%, var(--bg)) 66%,
      var(--bg) 100%);
  }
  .pilares .pilares__titulo { color: var(--band-text); }

  /* Topo do blog em faixa vinho (dono, 28/10/2026): só a marca (logo, "Faria" e "Transporte
     Executivo Campinas", em branco) fica numa faixa de ponta a ponta, num vinho escuro próximo
     da cor do selo, fechada por uma linha dourada. "Blog", o subtítulo, os atalhos e os cartões
     ficam no fundo claro, abaixo.
     --blog-topo-cor: vinho da faixa (o do selo, escurecido); recomendado #4A1014 a #6A1A1F.
     --blog-topo-respiro: espaço acima e abaixo da marca dentro da faixa; recomendado 1.5rem a 3rem. */
  :root { --blog-topo-cor: #4E1216; --blog-topo-respiro: clamp(1.5rem, 3.5vw, 2.4rem); }
  .blog:not(.blog--leia) { padding-top: 0; isolation: isolate; }
  .blog:not(.blog--leia) .blog__head { padding-top: 0; }   /* a faixa encosta no cabeçalho, sem a folga de início de seção */
  :is(.blog:not(.blog--leia), .faixa-marca) .blog__marca {
    position: relative;
    margin: 0 0 var(--respiro-titulo);
    padding-block: var(--blog-topo-respiro);
    color: #FFFFFF;
  }
  :is(.blog:not(.blog--leia), .faixa-marca) .blog__marca::before {   /* a faixa ocupa a largura da tela, atrás da marca */
    content: "";
    position: absolute;
    inset: 0 calc(50% - 50vw);
    z-index: -1;
    background:
      radial-gradient(70% 140% at 50% 0%, color-mix(in srgb, #FFFFFF 7%, transparent), transparent 70%),
      linear-gradient(180deg, var(--blog-topo-cor), color-mix(in srgb, var(--blog-topo-cor) 80%, #000));
  }
  :is(.blog:not(.blog--leia), .faixa-marca) .blog__marca::after {   /* linha dourada no fim da faixa */
    content: "";
    position: absolute;
    left: calc(50% - 50vw);
    right: calc(50% - 50vw);
    bottom: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, var(--metal) 25%, color-mix(in srgb, var(--metal) 55%, #FFFFFF) 50%, var(--metal) 75%, transparent 100%);
    box-shadow: 0 0 10px color-mix(in srgb, var(--metal) 45%, transparent);
  }
  :is(.blog:not(.blog--leia), .faixa-marca) .blog__head .blog__complemento { color: #FFFFFF; }
  :is(.blog:not(.blog--leia), .faixa-marca) .blog__logo { filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.45)); }

  /* "Ler artigo" menor e dourado; ao passar o cursor, escurece. "Voltar ao blog" fica dourado
     ao passar o cursor. */
  .blog-card__ler { font-size: 0.85rem; color: var(--gold-texto); }
  .blog-card__ler:hover { opacity: 1; color: color-mix(in srgb, var(--gold-texto) 65%, #000); }
  .artigo__voltar { transition: color 0.2s ease; }
  .artigo__voltar:hover { opacity: 1; color: var(--gold-texto); }

  /* Foto inteira no cartão do artigo (fotoInteira: sim no artigo; casamento): a foto aparece
     completa no cartão, sem recorte, sobre a própria versão desfocada e escurecida; dentro do
     artigo, ela aparece como as demais. */
  .blog-card__foto .photo--inteira img { object-fit: contain; }
  .blog-card__foto .photo--inteira.photo--previa::before { filter: blur(16px) brightness(0.55) saturate(0.8); transform: scale(1.15); }
  /* celular: os títulos dos pilares ficam fora dos cartões, sobre o fundo; o grafite vai até
     perto do fim e os títulos ficam no dourado claro (--metal), com contraste sobre o grafite */
  @media (max-width: 720px) {
    :root { --pilares-escuro-ate: 80%; }
    .pilares, :root:not([data-theme="light"]) .pilares, :root[data-theme="dark"] .pilares {
      background: linear-gradient(180deg, var(--pilares-grafite) 0%, var(--pilares-grafite) var(--pilares-escuro-ate), var(--bg) 100%);
    }
    .pilares .pilares__item h3, .pilares .pilares__icone { color: var(--metal); }
  }

  /* Quem somos (dono, 28/10/2026): o 1º parágrafo com a mesma letra dos demais (antes, maior e mais
     escuro, como abertura; parecia erro). */
  .about__body p:first-of-type { font-size: inherit; line-height: inherit; color: var(--text-2); }

  /* "Por que escolher" (dono, 28/10/2026): no computador, o grafite vai mais longe antes de clarear;
     os cards ficam em grafite (um pouco mais claro que o fundo), com contorno e filete dourados,
     título dourado e texto creme, em vez do branco que contrastava demais.
     --pilares-card-fundo: fundo dos cards; recomendado o grafite da faixa clareado de 4% a 10%. */
  :root { --pilares-card-fundo: color-mix(in srgb, var(--band-bg) 93%, #FFFFFF); }
  @media (min-width: 721px) {
    :root { --pilares-escuro-ate: 62%; }
    .pilares,
    :root:not([data-theme="light"]) .pilares,
    :root[data-theme="dark"] .pilares {
      background: linear-gradient(180deg,
        var(--pilares-grafite) 0%,
        var(--pilares-grafite) var(--pilares-escuro-ate),
        color-mix(in srgb, var(--pilares-grafite) 55%, var(--bg)) 84%,
        var(--bg) 100%);
    }
    .pilares .pilares__item,
    .pilares .pilares__item:first-child,
    .pilares .pilares__item:last-child {
      background: var(--pilares-card-fundo);
      border-color: color-mix(in srgb, var(--metal) 30%, transparent);
      border-top-color: var(--metal);
      box-shadow: 0 18px 36px -24px rgba(0, 0, 0, 0.6);
    }
    .pilares .pilares__item h3,
    .pilares .pilares__icone { color: var(--metal); }
    .pilares .pilares__icone { border-color: color-mix(in srgb, var(--metal) 55%, transparent); }
    .pilares .pilares__item p { color: color-mix(in srgb, var(--band-text) 85%, transparent); }
  }
  /* celular: os textos dos pilares ficam dentro de cards; mesmo grafite */
  @media (max-width: 720px) {
    .pilares .pilares__item p {
      background: var(--pilares-card-fundo);
      border-color: color-mix(in srgb, var(--metal) 30%, transparent);
      color: color-mix(in srgb, var(--band-text) 85%, transparent);
    }
  }

  /* "Por que escolher": cards em marfim-champanhe (dono, 28/10/2026, 2ª rodada): o grafite dentro
     dos cards pesava a leitura e o branco puro ofuscava; o marfim quente, levemente degradê, lê como
     papel sobre o grafite, com texto escuro, título e ícone no dourado de texto e filete dourado.
     --pilares-card-claro / --pilares-card-escuro: as duas pontas do degradê do card; recomendado
     tons de marfim entre #F4EFE6 e #E2D8C8. */
  :root { --pilares-card-claro: #F3EDE3; --pilares-card-escuro: #E7DECF; }
  @media (min-width: 721px) {
    .pilares .pilares__item,
    .pilares .pilares__item:first-child,
    .pilares .pilares__item:last-child {
      background: linear-gradient(180deg, var(--pilares-card-claro), var(--pilares-card-escuro));
      border-color: color-mix(in srgb, var(--metal) 45%, transparent);
      border-top-color: var(--metal);
      border-radius: 10px;
      box-shadow: 0 22px 44px -26px rgba(0, 0, 0, 0.7), inset 0 1px 0 rgba(255, 255, 255, 0.6);
    }
    .pilares .pilares__item h3,
    .pilares .pilares__icone { color: var(--gold-texto); }
    .pilares .pilares__icone { background: color-mix(in srgb, var(--metal) 12%, transparent); border-color: color-mix(in srgb, var(--metal) 60%, transparent); }
    .pilares .pilares__item p { color: var(--text-2); line-height: 1.7; }
  }
  @media (max-width: 720px) {
    .pilares .pilares__item p {
      background: linear-gradient(180deg, var(--pilares-card-claro), var(--pilares-card-escuro));
      border-color: color-mix(in srgb, var(--metal) 45%, transparent);
      border-radius: 10px;
      color: var(--text-2);
      line-height: 1.65;
    }
  }

  /* Enquadramento da foto só no celular (foto.posicaoCelular no config, 28/10/2026): o card do
     celular é mais estreito que a foto, e o recorte do centro pode cortar o assunto; o ponto
     escolhido fica visível. No computador, o centro. */
  @media (max-width: 720px) {
    .photo img[style*="--foto-pos-celular"] { object-position: var(--foto-pos-celular); }
  }

  /* Viagem de ida e volta no formulário (agendar.idaEVolta, 28/10/2026): caixa de marcar dourada
     e os campos do retorno na mesma grade dos demais (o grupo some com hidden) */
  .booking-form .booking-form__marcar {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 44px;
    font-size: 1rem;
    font-weight: 400;
    letter-spacing: 0;
    text-transform: none;
    color: var(--band-text);
    cursor: pointer;
  }
  .booking-form .booking-form__marcar input {
    width: 1.2rem;
    height: 1.2rem;
    padding: 0;
    margin: 0;
    accent-color: var(--band-metal);
    cursor: pointer;
  }
  .booking-form__retorno:not([hidden]) { display: contents; }
  .foot__cnpj { white-space: nowrap; }

  /* Ajustes do dono (29/10/2026) */
  /* Trilha do artigo: "Voltar ao blog" logo abaixo do caminho, à esquerda (computador e celular) */
  .artigo__trilha { flex-direction: column; align-items: flex-start; gap: 0.35rem; }
  .artigo__trilha .trilha { flex: none; width: 100%; }
  .artigo__trilha .artigo__voltar { margin-left: 0; }

  /* Rodapé: ações mais próximas (Compartilhar, Instagram, Blog) */
  .foot__acoes, .foot .foot__brand p.foot__acoes { column-gap: 1rem; max-width: none; }   /* sem o limite de 32ch da frase do rodapé: as três ações numa linha */

  /* Topo (computador): o título inteiro na cor do texto, sem o destaque dourado em "Campinas";
     o bloco de texto um pouco mais à esquerda, com mais respiro até a foto.
     --hero-texto-recuo: deslocamento do bloco de texto para a esquerda; recomendado -0.75rem a -2.5rem. */
  :root { --hero-texto-recuo: -1.75rem; }
  .hero--fundo h1 em { color: inherit; }

  /* Largura do texto dos artigos do blog e das páginas de texto (termos, privacidade), a mesma
     nas duas (dono, 29/10/2026; antes 46rem).
     --largura-leitura: recomendado 46rem a 58rem (mais largo = linhas mais longas). */
  :root { --largura-leitura: 54rem; }
  .artigo .wrap, .pagina-texto .wrap { max-width: var(--largura-leitura); }

  /* Trilha do artigo no computador (dono, 29/10/2026): "Voltar ao blog" de novo à direita, na
     linha do caminho; no celular, continua abaixo do caminho. */
  @media (min-width: 721px) {
    .artigo__trilha { flex-direction: row; align-items: center; gap: 0.5rem 1.25rem; }
    .artigo__trilha .trilha { flex: 1 1 16rem; width: auto; }
    .artigo__trilha .artigo__voltar { margin-left: auto; }
  }

  /* Acordeão do menu do celular (dono, 29/10/2026): abre e fecha na mesma velocidade, com a lista
     crescendo e encolhendo (script.js); ao fechar, os itens esmaecem e sobem junto.
     --menu-acordeao: duração de abrir e de fechar; recomendado 260ms a 420ms. */
  :root { --menu-acordeao: 340ms; }
  .mobile-menu__sub.is-fechando > a {
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity calc(var(--menu-acordeao) * 0.8) ease, transform var(--menu-acordeao) var(--menu-curva);
    transition-delay: 0s;
  }

  /* Rótulos do formulário sem caixa alta (dono, 29/10/2026): só a primeira letra maiúscula, um
     pouco maiores e em meio negrito, com espaço normal entre as letras (antes, caixa alta espaçada,
     que soava dura). --rotulo-form-tamanho: recomendado 0.85rem a 0.95rem. */
  :root { --rotulo-form-tamanho: 0.88rem; }
  .booking-form label:not(.booking-form__marcar) {
    font-size: var(--rotulo-form-tamanho);
    font-weight: 600;
    letter-spacing: 0.01em;
    text-transform: none;
  }

  /* =====================================================================
     Ajustes do dono (29/10/2026, tarde)
     ===================================================================== */

  /* Quem somos: o fundo começa claro e escurece para baixo até o grafite (o inverso do "Por que
     escolher"), a partir de logo acima dos cards, que ficam em marfim, iguais aos do "Por que escolher";
     o grafite vai até o fim da seção e emenda com o começo dos depoimentos. A faixa escura nasce dos
     próprios cards (não de uma porcentagem), então o texto e a assinatura ficam sempre no claro.
     --sobre-transicao: espaço da faixa preta sólida acima dos cards; recomendado 2rem a 3.5rem. */
  :root { --sobre-transicao: 2.5rem; }   /* respiro da faixa preta acima dos cards */
  #sobre { isolation: isolate; overflow: clip; }
  #sobre .creds { position: relative; }
  #sobre .creds--cards::before {   /* só com os cards (credenciais com ícone e título); em lista simples, sem faixa */
    content: "";
    position: absolute;
    z-index: -1;
    left: calc(50% - 50vw);
    right: calc(50% - 50vw);
    top: calc(-1 * var(--sobre-transicao));
    bottom: -40rem;
    background: var(--band-bg);   /* faixa sólida, sem esfumaçado (dono, 29/10) */
    pointer-events: none;
  }
  #sobre .creds--cards .cred {
    background: linear-gradient(180deg, var(--pilares-card-claro), var(--pilares-card-escuro));
    border: 1px solid color-mix(in srgb, var(--metal) 45%, transparent);
    border-top: 1px solid var(--metal);
    border-radius: 10px;
    box-shadow: 0 22px 44px -26px rgba(0, 0, 0, 0.7), inset 0 1px 0 rgba(255, 255, 255, 0.6);
  }
  #sobre .creds--cards .cred__icone {
    color: var(--gold-texto);
    background: color-mix(in srgb, var(--metal) 12%, transparent);
    border-color: color-mix(in srgb, var(--metal) 60%, transparent);
    box-shadow: none;
  }
  #sobre .creds--cards .cred__titulo { color: var(--gold-texto); }
  #sobre .creds--cards .cred__texto { color: var(--text-2); }

  /* Depoimentos em areia dourada (cor de pergaminho), neutra e acolhedora (cordialidade, dono 29/10: sem rosa nem vinho), com uma estampa de losangos
     dourados quase transparente; no alto, a cor nasce do grafite do Quem somos e, no fim, volta ao
     grafite de "Onde atendemos". Cards em marfim com contorno dourado envelhecido.
     --depo-fundo: cor da seção; recomendado tons de areia ou pergaminho (#E8DDC8 a #F1EADC).
     --depo-estampa-opacidade: intensidade da estampa; recomendado 0.05 a 0.12.
     --depo-transicao: altura das passagens de cor no alto e no fim; recomendado 6% a 12%. */
  :root { --depo-fundo: #F2ECE2; --depo-estampa-opacidade: 0.09; --depo-transicao: 8%; --depo-card: #FCF8F1; --depo-contorno: #B39468; }
  #depoimentos {
    position: relative;
    isolation: isolate;
    background: var(--depo-fundo);   /* cor sólida: o preto do Quem somos termina reto, sem suavização (dono, 29/10) */
  }
  #depoimentos::before {   /* estampa de losangos dourados, só na faixa clara */
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background-color: var(--metal);
    opacity: var(--depo-estampa-opacidade);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath d='M24 2 46 24 24 46 2 24Z' fill='none' stroke='%23000' stroke-width='1'/%3E%3Ccircle cx='24' cy='24' r='1.6'/%3E%3C/svg%3E") 0 0 / 48px 48px repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath d='M24 2 46 24 24 46 2 24Z' fill='none' stroke='%23000' stroke-width='1'/%3E%3Ccircle cx='24' cy='24' r='1.6'/%3E%3C/svg%3E") 0 0 / 48px 48px repeat;
    pointer-events: none;
  }
  #depoimentos .quote {
    background: var(--depo-card);
    border-color: color-mix(in srgb, var(--depo-contorno) 70%, transparent);
    box-shadow: 0 14px 30px -20px rgba(70, 55, 30, 0.35);
  }
  #depoimentos .quote__inicial { background: var(--depo-contorno); color: #FFFFFF; }
  #depoimentos .quote figcaption { border-top-color: color-mix(in srgb, var(--depo-contorno) 55%, transparent); }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) { --depo-fundo: #26231D; --depo-card: #302C25; }
  }
  :root[data-theme="dark"] { --depo-fundo: #26231D; --depo-card: #302C25; }
  /* celular: a assinatura do Quem somos ganha espaço abaixo, para a passagem ao grafite começar
     depois dela (ela fica sempre no claro) */
  @media (max-width: 720px) {
    #sobre .creds--cards { margin-top: calc(var(--sobre-transicao) + 0.5rem); }
  }

  /* Perguntas frequentes resumidas na inicial (faq.naInicial, 29/10/2026): o link para a página
     com todas as perguntas, abaixo da lista */
  .faq__todas { margin-top: 1.4rem; }

  /* Ajustes do dono (29/10/2026, noite) */
  /* Cards do Quem somos com cantos retos, como antes (só a cor marfim continua) */
  #sobre .creds--cards .cred { border-radius: 3px; }
  /* "Avalie no Google": fundo transparente com um leve preenchimento dourado */
  /* --google-preenchimento: força do dourado no fundo; recomendado 8% a 30% (mais = mais escuro).
     --google-preenchimento-hover: ao passar o cursor; recomendado 10 pontos acima do anterior. */
  :root { --google-preenchimento: 36%; --google-preenchimento-hover: 30%; }
  .btn--google { --_bg: color-mix(in srgb, var(--metal) var(--google-preenchimento), transparent); border-color: color-mix(in srgb, var(--metal) 70%, transparent); }
  .btn--google:hover { background: color-mix(in srgb, var(--metal) var(--google-preenchimento-hover), transparent); }

  /* Voltar à página inicial (29/10/2026): abaixo do conteúdo das páginas de perguntas e do blog, à esquerda */
  .pagina-voltar { margin-top: 1.6rem; padding-bottom: var(--section-y); }
  .blog .pagina-voltar { padding-bottom: 0; }

  /* =====================================================================
     Cartões da frota (dono, 29/10/2026): os mesmos dos serviços (.svc), com passageiros e malas
     (ícones dourados), a nota em itálico, os extras e o "Reservar"; ao passar o cursor
     (computador) ou ao tocar (celular). Abaixo das fotos, a linha comum a todas as categorias.
     ===================================================================== */
  .gallery > .svc--frota { margin: 0; }
  @media (min-width: 721px) { .gallery > .svc--frota { flex: 0 0 calc((100% - 2rem) / 3); scroll-snap-align: start; } }
  @media (max-width: 720px) { .gallery > .svc--frota { flex: 0 0 86%; scroll-snap-align: start; height: var(--svc-altura-celular); } }
  .gallery .svc--frota > .photo { position: absolute; inset: 0; height: 100%; }
  /* sem o esmaecer das outras fotos da antiga galeria: o cartão tem a animação dos serviços */
  .gallery .svc--frota > .photo { opacity: 1 !important; filter: none !important; transform: none !important; box-shadow: none !important; }
  .frota__detalhes { font-family: var(--font-body); font-size: 1rem; }
  .frota__lista, .frota__extras { margin: 0; padding: 0; list-style: none; }
  .frota__item { display: flex; align-items: center; gap: 0.6rem; line-height: 1.45; }
  .frota__item + .frota__item { margin-top: 0.45rem; }
  .frota__icone { flex: none; display: grid; place-items: center; width: 1.6rem; height: 1.6rem; color: var(--band-metal); }
  .frota__icone svg { width: 100%; height: 100%; }
  .frota__nota { margin: 0.7rem 0 0; font-style: italic; font-size: 0.9rem; line-height: 1.45; color: color-mix(in srgb, var(--band-text) 75%, transparent); }
  .frota__extras { margin-top: 0.7rem; }
  .frota__extras li { position: relative; padding-left: 1rem; line-height: 1.45; }
  .frota__extras li + li { margin-top: 0.3rem; }
  .frota__extras li::before { content: ""; position: absolute; left: 0.1rem; top: 0.62em; width: 0.35rem; height: 0.35rem; border-radius: 50%; background: var(--band-metal); }
  .frota__todos { margin: 1.1rem 0 0; text-align: center; font-style: italic; color: var(--text-2); }

  /* =====================================================================
     Frota em "showroom noturno" (dono, 29/10/2026): fundo grafite com um brilho dourado suave atrás
     dos cartões (luz de vitrine) e uma linha de reflexo dourada logo abaixo deles, como o piso de
     uma concessionária; título, textos, atalhos e botões em creme e dourado.
     --frota-brilho: intensidade da luz dourada atrás dos cartões; recomendado 10% a 24%.
     ===================================================================== */
  :root { --frota-brilho: 16%; }
  #galeria {
    position: relative;
    isolation: isolate;
    color: var(--band-text);
    --text: var(--band-text);
    --text-2: color-mix(in srgb, var(--band-text) 82%, transparent);
    --text-dim: color-mix(in srgb, var(--band-text) 70%, transparent);
    --accent: var(--band-metal);
    --accent-contrast: var(--band-bg);
    background:
      radial-gradient(60% 45% at 50% 58%, color-mix(in srgb, var(--metal) var(--frota-brilho), transparent), transparent 70%),
      radial-gradient(120% 70% at 50% 0%, color-mix(in srgb, #FFFFFF 5%, transparent), transparent 60%),
      linear-gradient(180deg, color-mix(in srgb, var(--band-bg) 92%, #000) 0%, var(--band-bg) 100%);
  }
  #galeria .section__head h2 { color: var(--band-text); }
  #galeria .gallery::after { content: none; }
  #galeria .carrossel { position: relative; }
  #galeria .carrossel::after {   /* reflexo dourado no "piso", logo abaixo dos cartões */
    content: "";
    position: absolute;
    left: 6%;
    right: 6%;
    bottom: -0.9rem;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--metal) 30%, color-mix(in srgb, var(--metal) 55%, #FFFFFF) 50%, var(--metal) 70%, transparent);
    box-shadow: 0 0 18px 2px color-mix(in srgb, var(--metal) 45%, transparent);
    pointer-events: none;
  }
  #galeria .svc--frota { box-shadow: 0 28px 50px -30px rgba(0, 0, 0, 0.9); border-color: color-mix(in srgb, var(--metal) 45%, transparent); }
  #galeria .categorias--linha .categoria { color: var(--band-text); border-color: color-mix(in srgb, var(--metal) 45%, transparent); }
  #galeria .categorias--linha .categoria:hover,
  #galeria .categorias--linha .categoria.is-atual { background: var(--metal); color: var(--band-bg); border-color: var(--metal); }
  #galeria .frota__todos { margin-top: 1.8rem; color: color-mix(in srgb, var(--band-text) 78%, transparent); }
  #galeria .gallery__foot .btn:not(.btn--light) { --_bg: var(--band-text); --_fg: var(--band-btn-text); }
  #galeria .inline-cta { color: var(--band-text); }
  /* pontinhos da frota com a mesma cor dos serviços: o dourado claro misturado ao fundo claro dos serviços,
     em cor sólida (sobre o grafite, a transparência deixava o tom acinzentado) */
  #galeria .svc-indicador::before { background: color-mix(in srgb, var(--metal) 40%, var(--bg)); }
  #galeria .svc-indicador.is-atual::before { background: var(--metal); }

  /* Quem somos: o mesmo efeito dos cards do "Por que escolher" ao passar o cursor (o card sobe, um
     brilho atravessa e o ícone se preenche), em prata, mais discreto que o dourado (dono, 29/10/2026).
     --sobre-prata: cor do efeito; recomendado tons de prata entre #B8BEC6 e #D6DADF. */
  :root { --sobre-prata: var(--metal); }   /* dourado, como no "Por que escolher" (dono, 29/10: o prata não combinou) */
  #sobre .creds--cards .cred { position: relative; overflow: hidden; transition: transform var(--pilares-hover-duracao) var(--revelar-curva), box-shadow var(--pilares-hover-duracao) var(--revelar-curva), border-color var(--pilares-hover-duracao) ease; }
  #sobre .creds--cards .cred::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(110deg, transparent 35%, color-mix(in srgb, var(--sobre-prata) 22%, transparent) 50%, transparent 65%);
    background-size: 260% 100%;
    background-position: 130% 0;
    transition: background-position 1.1s var(--revelar-curva);
  }
  #sobre .creds--cards .cred__icone { transition: background-color var(--pilares-hover-duracao) ease, color var(--pilares-hover-duracao) ease, box-shadow var(--pilares-hover-duracao) ease, transform var(--pilares-hover-duracao) var(--revelar-curva); }
  @media (hover: hover) and (pointer: fine) {
    #sobre .creds--cards .cred:hover { transform: translateY(calc(-1 * var(--pilares-subir))); border-color: color-mix(in srgb, var(--sobre-prata) 70%, transparent); box-shadow: 0 22px 40px -22px rgba(0, 0, 0, 0.6); }
    #sobre .creds--cards .cred:hover::after { background-position: -30% 0; }
    #sobre .creds--cards .cred:hover .cred__icone { background: var(--sobre-prata); color: var(--band-bg); border-color: var(--sobre-prata); box-shadow: 0 0 0 6px color-mix(in srgb, var(--sobre-prata) 16%, transparent), 0 0 22px color-mix(in srgb, var(--sobre-prata) 55%, transparent); transform: scale(1.06); }
  }
  @media (prefers-reduced-motion: reduce) {
    #sobre .creds--cards .cred, #sobre .creds--cards .cred::after, #sobre .creds--cards .cred__icone { transition: none; }
    #sobre .creds--cards .cred:hover { transform: none; }
  }

  /* Linha abaixo da frota no mesmo estilo da nota dos cartões: itálico fino, menor e mais suave */
  #galeria .frota__todos { font-family: var(--font-body); font-size: 0.9rem; font-weight: 400; letter-spacing: 0.01em; line-height: 1.5; color: color-mix(in srgb, var(--band-text) 72%, transparent); }

  /* Topo do blog no celular: sem o logo, só o nome e o complemento */
  @media (max-width: 720px) {
    :is(.blog:not(.blog--leia), .faixa-marca) .blog__logo { display: none; }
  }
  #galeria .carrossel::after { content: none; }   /* sem o reflexo dourado abaixo das fotos da frota (dono, 29/10) */

  /* Serviços em carrossel também no computador (dono, 29/10/2026): uma fileira de 3 cartões, com as
     setas da frota (script.js, carrosselComSetas, roda contínua); os botões de categoria acima levam
     o carrossel ao serviço. Encurta a página. No celular, o carrossel de antes. */
  @media (min-width: 721px) {
    .svc-trilho {
      display: flex;
      gap: 1rem;
      overflow-x: auto;
      scroll-snap-type: x mandatory;
      scrollbar-width: none;
      overscroll-behavior-x: contain;
    }
    .svc-trilho::-webkit-scrollbar { display: none; }
    .svc-trilho > .svc { flex: 0 0 calc((100% - 2rem) / 3); scroll-snap-align: start; }
  }

  /* Estrelas da faixa de selos (29/10/2026): a camada de cima (preenchimento proporcional à nota)
     ficava levemente deslocada da de baixo, que ali já é dourada inteira, e as estrelas pareciam
     dobradas. Na faixa, fica só uma camada. */
  .hero-selos .estrelas::after { content: none; display: none; }

  /* Estrelas da faixa de selos desenhadas (29/10/2026): o caractere ★ não existe na fonte do site e
     cada celular o desenhava com a fonte do sistema, às vezes com contorno e preenchimento
     desencontrados (impressão de estrelas dobradas). Agora são 5 estrelas em SVG, nítidas em
     qualquer aparelho, na cor dourada do texto. */
  .hero-selos .hero__trust--icones .estrelas::before {
    content: "";
    display: inline-block;
    width: calc(1.25em * 5 - 0.25em);
    height: 1em;
    vertical-align: -0.1em;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2030%2024%27%3E%3Cpath%20d%3D%27M12%201.6l3.1%206.6%207.2.9-5.3%205%201.4%207.1L12%2017.7l-6.4%203.5L7%2014.1l-5.3-5%207.2-.9z%27%2F%3E%3C%2Fsvg%3E") 0 50% / 1.25em 1em repeat-x;
    mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2030%2024%27%3E%3Cpath%20d%3D%27M12%201.6l3.1%206.6%207.2.9-5.3%205%201.4%207.1L12%2017.7l-6.4%203.5L7%2014.1l-5.3-5%207.2-.9z%27%2F%3E%3C%2Fsvg%3E") 0 50% / 1.25em 1em repeat-x;
  }

  /* Textos dos cards marfim (pilares "Por que escolher" e cards do Quem somos) sempre escuros
     (29/10/2026): no tema escuro herdavam o texto claro (--text-2) e sumiam sobre o marfim. */
  .pilares .pilares__item p.pilares__linhas,
  #sobre .creds--cards .cred__texto { color: var(--ink-soft); }

  /* Faixa no alto do rodapé (rodape.faixa no config; desligada por padrão, ligada na Faria). Todas as
     regras abaixo, até o rodapé compacto, valem só com a classe .foot--faixa (render.js). */
  /* Rodapé no celular (dono, 29/10/2026): o alto do rodapé (logo, "Faria" e "O seu tempo, o nosso
     maior respeito.") numa faixa de vermelho envelhecido forte, a cor da cera do selo, mais viva que a
     faixa do topo do blog; do "Compartilhar" até a linha final, o fundo de antes. Títulos "Contato" e
     "Atendimento" sem caixa alta, bem pretos e sem negrito. O fundo de antes é um ::before que começa
     na linha de ações e vai até o fim do rodapé (cortado pelo overflow do .foot), fechado em cima por
     uma linha dourada, como a faixa do blog.
     --rodape-topo-cor: cor da faixa do rodapé; hoje igual à do topo do blog (--blog-topo-cor).
     --rodape-titulo-cor: cor dos títulos "Contato" e "Atendimento". */
  :root { --rodape-topo-cor:  #4E1216; --rodape-titulo-cor: #141210; }   /* mesmo vinho do topo do blog e das dúvidas (dono, 03/11/2026); para uma cor própria, troque var(--blog-topo-cor) por um código, ex.: #6A1A16 */
  :root[data-theme="dark"] { --rodape-titulo-cor: #F3EEE6; }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) { --rodape-titulo-cor: #F3EEE6; }
  }
  @media (max-width: 720px) {
    .foot.foot--faixa {
      background:
        radial-gradient(70% 60% at 50% 0%, color-mix(in srgb, #FFFFFF 7%, transparent), transparent 70%),
        linear-gradient(180deg, var(--rodape-topo-cor), color-mix(in srgb, var(--rodape-topo-cor) 82%, #000)) top / 100% 22rem no-repeat,
        var(--rodape-topo-cor);
      border-top: 0;
    }
    .foot.foot--faixa .foot__brand .brand-lockup, .foot.foot--faixa .foot__brand .brand__name { color: #FFFFFF; }
    .foot.foot--faixa .foot__brand .brand__mark--sm { filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.45)); }
    .foot.foot--faixa .foot__brand p:not(.foot__acoes) { color: color-mix(in srgb, #FFFFFF 86%, transparent); }
    .foot.foot--faixa .foot__brand p.foot__acoes { position: static; margin-top: 2.3rem; }
    .foot.foot--faixa .foot__brand p.foot__acoes::before {
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      height: 400rem;
      margin-top: -1.3rem;         /* começa um pouco acima do "Compartilhar" */
      background: var(--surface);
      border-top: 1px solid var(--metal);
      box-shadow: 0 0 10px color-mix(in srgb, var(--metal) 45%, transparent);
      z-index: -2;                 /* atrás do traçado de rota dourado (z-index -1) */
      pointer-events: none;
    }
    .foot.foot--faixa h2, .foot.foot--faixa h3 {
      text-transform: none;
      letter-spacing: 0;
      font-weight: 400;
      font-size: 1.05rem;
      color: var(--rodape-titulo-cor);
      margin-bottom: 0.8rem;
    }
  }

  /* Faixa da marca no topo de uma página própria (paginasProprias.<secao>.faixaMarca, 29/10/2026):
     a mesma faixa vinho do topo do blog (logo, nome e complemento, linha dourada), reaproveitando as
     regras do blog (.blog__marca); a seção vem logo abaixo, com a folga do título. */
  .faixa-marca { isolation: isolate; }
  .faixa-marca .blog__head { padding-top: 0; }
  .faixa-marca .blog__marca { margin-bottom: 0; }
  .faixa-marca + .section { padding-top: var(--respiro-titulo); }

  /* Logo da faixa do topo do blog e das dúvidas 50% maior no computador (dono, 29/10/2026); o nome
     e o complemento ficam como estão.
     --logo-faixa-escala: tamanho do logo em relação à assinatura; recomendado 1 a 1.6. */
  :root { --logo-faixa-escala: 1.5; }
  @media (min-width: 721px) {
    .blog__marca .blog__logo { width: calc(var(--marca-altura-blog) * var(--logo-faixa-escala)); height: calc(var(--marca-altura-blog) * var(--logo-faixa-escala)); }
  }

  /* Cards do blog no computador (dono, 30/10/2026): ao passar o cursor (ou com o foco do teclado), o
     card sobe levemente, ganha sombra suave e contorno dourado, e a foto se aproxima um pouco.
     --blog-card-elevacao: quanto o card sobe; recomendado 3px a 8px.
     --blog-card-zoom: aproximação da foto; recomendado 1 (sem) a 1.06.
     --blog-card-hover-duracao: tempo do movimento; recomendado 0.3s a 0.5s. */
  :root { --blog-card-elevacao: 6px; --blog-card-zoom: 1.04; --blog-card-hover-duracao: 0.4s; }
  @media (hover: hover) and (min-width: 721px) {
    .blog-card {
      transition: transform var(--blog-card-hover-duracao) var(--revelar-curva), box-shadow var(--blog-card-hover-duracao) var(--revelar-curva), border-color var(--blog-card-hover-duracao) ease;
    }
    .blog-card__foto .photo img { transition: transform calc(var(--blog-card-hover-duracao) * 1.6) var(--revelar-curva); }
    .blog-card:hover, .blog-card:focus-within {
      transform: translateY(calc(var(--blog-card-elevacao) * -1));
      box-shadow: 0 18px 34px -20px rgba(0, 0, 0, 0.45);
      border-color: color-mix(in srgb, var(--metal) 70%, var(--line));
    }
    .blog-card:hover .blog-card__foto .photo img, .blog-card:focus-within .blog-card__foto .photo img { transform: scale(var(--blog-card-zoom)); }
    /* no "Leia também" (carrossel com rolagem), um respiro em cima e embaixo para o card subir sem ser cortado */
    .blog--leia .blog__cards { padding-block: 10px 28px; margin-block: -10px -28px; }
  }
  @media (prefers-reduced-motion: reduce) {
    .blog-card, .blog-card__foto .photo img { transition: none; }
    .blog-card:hover, .blog-card:focus-within { transform: none; }
    .blog-card:hover .blog-card__foto .photo img, .blog-card:focus-within .blog-card__foto .photo img { transform: none; }
  }

  /* Rodapé no computador e no tablet (dono, 30/10/2026): no alto, uma faixa de ponta a ponta no
     vermelho de cera do celular (--rodape-topo-cor), só com o logo, "Faria" e o slogan, separados por
     um filete dourado, e uma linha dourada embaixo, como a faixa do topo do blog; abaixo, no branco,
     "Compartilhar · Instagram · Blog", "Contato" e "Atendimento" lado a lado. A marca vira itens do
     grid do rodapé (display: contents); a faixa é o fundo do próprio rodapé, na altura da 1ª linha.
     --rodape-faixa-altura: altura da faixa; recomendado 5.5rem a 7rem. */
  :root { --rodape-faixa-altura: 6rem; }
  @media (min-width: 721px) {
    .foot.foot--faixa {
      border-top: 0;
      background:
        linear-gradient(90deg, transparent 0%, var(--metal) 25%, color-mix(in srgb, var(--metal) 55%, #FFFFFF) 50%, var(--metal) 75%, transparent 100%) 0 calc(var(--rodape-faixa-altura) - 1px) / 100% 1px no-repeat,
        radial-gradient(60% var(--rodape-faixa-altura) at 30% 0%, color-mix(in srgb, #FFFFFF 7%, transparent), transparent 70%) 0 0 / 100% var(--rodape-faixa-altura) no-repeat,
        linear-gradient(180deg, var(--rodape-topo-cor), color-mix(in srgb, var(--rodape-topo-cor) 82%, #000)) 0 0 / 100% var(--rodape-faixa-altura) no-repeat,
        var(--surface);
    }
    .foot.foot--faixa .wrap {
      grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr) minmax(0, 1fr);   /* "Contato" mais larga: o e-mail cabe numa linha */
      grid-template-rows: var(--rodape-faixa-altura) auto;
      padding-top: 0;
      row-gap: 2rem;
      column-gap: 2rem;
    }
    .foot.foot--faixa .foot__brand { display: contents; }
    .foot.foot--faixa .foot__brand .brand-lockup { grid-row: 1; grid-column: 1; align-self: center; flex-direction: row; gap: 0.7rem; color: #FFFFFF; }
    .foot.foot--faixa .foot__brand .brand__name { color: #FFFFFF; }
    .foot.foot--faixa .foot__brand .brand__mark--sm { filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.45)); }
    .foot.foot--faixa .foot__brand > p:not(.foot__acoes) {
      grid-row: 1;
      grid-column: 2 / -1;
      align-self: center;
      margin: 0;
      max-width: none;
      padding-left: 2rem;
      border-left: 1px solid color-mix(in srgb, var(--metal) 55%, transparent);
      font-family: var(--font-display);
      font-size: 1.2rem;
      color: color-mix(in srgb, #FFFFFF 88%, transparent);
    }
    .foot.foot--faixa .foot__brand p.foot__acoes { grid-row: 2; grid-column: 1; margin: 0; flex-direction: column; align-items: flex-start; align-self: start; }
    .foot.foot--faixa .wrap > div:not(.foot__brand) { grid-row: 2; }
    .foot.foot--faixa h2, .foot.foot--faixa h3 { text-transform: none; letter-spacing: 0; font-weight: 400; font-size: 1.05rem; color: var(--rodape-titulo-cor); margin-bottom: 0.8rem; }
  }

  /* Tablet (721 px a 60em): duas colunas; "Contato" e "Atendimento" lado a lado e as ações numa linha embaixo */
  @media (min-width: 721px) and (max-width: 60em) {
    .foot.foot--faixa .wrap { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: var(--rodape-faixa-altura) auto auto; }
    .foot.foot--faixa .foot__brand > p:not(.foot__acoes) { grid-column: 2; }
    .foot.foot--faixa .foot__brand p.foot__acoes { grid-row: 3; grid-column: 1 / -1; flex-direction: row; }
    .foot.foot--faixa .wrap > div:not(.foot__brand) { grid-column: auto; }
  }

  /* Rodapé no computador, mais compacto (dono, 30/10/2026): menos respiro abaixo da faixa vermelha e
     antes da linha final, e itens das listas mais próximos.
     --rodape-respiro: espaço abaixo da faixa e antes da linha final; recomendado 1.2rem a 2rem.
     --rodape-lista-espaco: espaço entre os itens das listas; recomendado 0.35rem a 0.6rem. */
  :root { --rodape-respiro: 1.4rem; --rodape-lista-espaco: 0.4rem; }
  @media (min-width: 721px) {
    .foot.foot--faixa .wrap { row-gap: var(--rodape-respiro); padding-bottom: var(--rodape-respiro); }
    .foot.foot--faixa ul { gap: var(--rodape-lista-espaco); }
    .foot.foot--faixa .foot__brand p.foot__acoes { row-gap: 0; }
    .foot.foot--faixa h2, .foot.foot--faixa h3 { margin-bottom: 0.55rem; }
  }
  .foot__wa svg { opacity: 0.85; }
  /* "Compartilhar · Instagram · Blog" em coluna no computador: mesmo espaçamento das listas ao lado
     (sem a altura de toque de 44 px, que é do celular) */
  @media (min-width: 61em) {
    .foot.foot--faixa .foot__brand p.foot__acoes { gap: var(--rodape-lista-espaco); padding-top: calc(1.05rem * 1.5 + 0.55rem); }
    .foot.foot--faixa .foot__brand p.foot__acoes .foot__acao { min-height: 0; line-height: 1.6; }
  }

  /* Perguntas frequentes em cards (dono, 03/11/2026): cada pergunta num card separado, com canto
     arredondado e linha fina; a aberta ganha um fundo dourado muito leve (--faq-fundo-aberta), um
     filete dourado à esquerda e o ícone preenchido. Ícone: "+" num círculo de contorno dourado, que
     vira "−" num círculo preenchido (grafite no tema claro, dourado no escuro). Abrir e fechar
     suaves no script.js (--faq-acordeao). Na inicial, seções de faq.paginacao perguntas com
     "‹ 1/2 ›" centralizado abaixo da lista.
     --faq-card: fundo do card; --faq-card-linha: contorno do card.
     --faq-largura: largura máxima da lista; recomendado 760px a 960px.
     --faq-acordeao: tempo de abrir e de fechar; recomendado 350ms a 520ms. */
  :root {
    --faq-card: #FFFFFF;
    --faq-card-linha: color-mix(in srgb, var(--line) 75%, var(--metal));
    --faq-icone-aberto: var(--ink);
    --faq-icone-aberto-texto: #FFFFFF;
    --faq-largura: 920px;
    --faq-acordeao: 420ms;
  }
  :root[data-theme="dark"] { --faq-card: var(--surface); --faq-icone-aberto: var(--metal); --faq-icone-aberto-texto: #1E1C1A; }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) { --faq-card: var(--surface); --faq-icone-aberto: var(--metal); --faq-icone-aberto-texto: #1E1C1A; }
  }
  .faq { max-width: var(--faq-largura); display: grid; gap: 0.75rem; }
  .faq__item, .faq__item:last-child {
    box-sizing: border-box;
    background: var(--faq-card);
    border: 1px solid var(--faq-card-linha);
    border-radius: 10px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
  }
  .faq__item:hover { background: var(--faq-card); border-color: color-mix(in srgb, var(--metal) 55%, var(--faq-card-linha)); }
  .faq__item[open]:not(.is-fechando) {
    background: color-mix(in srgb, var(--metal) var(--faq-fundo-aberta), var(--faq-card));
    border-color: color-mix(in srgb, var(--metal) 45%, var(--faq-card-linha));
    box-shadow: inset 3px 0 0 var(--metal), 0 10px 24px -18px rgba(0, 0, 0, 0.35);
  }
  .faq__item.is-fechando summary { color: var(--text); }
  .faq__item summary { padding: 1rem 1.25rem; }
  .faq__resposta { margin: 0; padding: 0 1.25rem 1.25rem; }
  .faq__item summary::after {
    content: "+";
    box-sizing: border-box;
    width: 2rem;
    height: 2rem;
    display: grid;
    place-items: center;
    border: 1.5px solid var(--metal);
    border-radius: 50%;
    color: var(--metal);
    font-size: 1.2rem;
    line-height: 1;
    transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease;
  }
  .faq__item[open]:not(.is-fechando) summary::after {
    content: "\2212";
    background: var(--faq-icone-aberto);
    border-color: var(--faq-icone-aberto);
    color: var(--faq-icone-aberto-texto);
  }
  .faq__paginas {
    max-width: var(--faq-largura);
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1.1rem;
    margin-top: 1.4rem;
  }
  .faq__pag {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    border: 1.5px solid var(--metal);
    border-radius: 50%;
    background: transparent;
    color: var(--text);
    cursor: pointer;
    transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease, opacity 0.3s ease;
  }
  .faq__pag svg { width: 18px; height: 18px; }
  .faq__pag:hover:not(:disabled), .faq__pag:focus-visible { background: var(--faq-icone-aberto); border-color: var(--faq-icone-aberto); color: var(--faq-icone-aberto-texto); }
  .faq__pag:disabled { opacity: 0.35; cursor: default; }
  .faq__pag-num { min-width: 3ch; text-align: center; font-weight: 600; color: var(--text); font-variant-numeric: tabular-nums; }
  .faq__todas { max-width: var(--faq-largura); text-align: center; margin-top: 1rem; }
  @media (prefers-reduced-motion: reduce) {
    .faq__item, .faq__item summary::after, .faq__pag { transition: none; }
  }
  /* Paginação e "Ver todas as dúvidas" centralizados na página (dono, 03/11/2026), não na lista */
  .faq__paginas, .faq__todas { max-width: none; }

  /* Carrosséis do celular (dono, 03/11/2026): tempo do deslize até o próximo item, com
     desaceleração (script.js, rolarCarrossel).
     --carrossel-duracao: recomendado 380ms (mais ágil) a 600ms (mais suave); acima disso, segura o usuário. */
  :root { --carrossel-duracao: 480ms; }

  /* Cabeçalho em preto absoluto (dono, 03/11/2026): sólido, sem transparência, nas páginas
     internas (blog, dúvidas, termos, política) e na página inicial depois de rolar; no topo da
     página inicial continua transparente sobre a foto. Antes: grafite com 12% de transparência,
     que ficava acinzentado sobre o fundo branco.
     --topo-fundo: cor do cabeçalho; recomendado #000000 a #141312. */
  :root { --topo-fundo: #000000; }
  .topbar--escuro { background: var(--topo-fundo); backdrop-filter: none; -webkit-backdrop-filter: none; }
  .topbar--sobre-hero.js-rolagem:not(.is-rolado) { background: transparent; }

  /* Filete dourado antes do "Leia também" (dono, 03/11/2026): separa o fim do artigo da seção
     seguinte, agora que as duas têm o mesmo fundo branco; o mesmo desenho da linha da faixa do blog. */
  .blog--leia { position: relative; }
  .blog--leia::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: min(100% - 2 * var(--pad), var(--maxw));
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, var(--metal) 25%, color-mix(in srgb, var(--metal) 55%, #FFFFFF) 50%, var(--metal) 75%, transparent 100%);
    box-shadow: 0 0 10px color-mix(in srgb, var(--metal) 40%, transparent);
    pointer-events: none;
  }

