{{# Pagina de servico. O elemento que carrega a ideia e o resultado de busca do hero: a marca sobe ate a 1a posicao. O verde da marca aparece so no que ja e primeiro lugar. Paginas com o campo "design_v2" ativado ganham os modificadores svc--seo e svc--v2 (mescla visual com o preview Google-style e demais componentes do novo design) sem afetar as demais paginas de servico, que continuam com o visual legado. "svc--seo" e mantido por compatibilidade (todo o CSS do novo design foi escrito sob esse seletor); "svc--v2" e o nome generico, agnostico de slug, para os novos componentes (browser mock, gallery mock etc.). #}}
{{# ---------------------------------------------------------- hero #}}
{{ if eyebrow }} {{ eyebrow | entities }} {{ /if }}

{{ hero_title ?? title | entities }}

{{ if hero_kicker }}

{{ hero_kicker | entities }}

{{ /if }} {{ if hero_lead }}

{{ hero_lead | entities | nl2br }}

{{ /if }} {{ if design_v2 && stats }}
{{ stats limit="3" }}
{{ value | entities }}
{{ label | entities }}
{{ /stats }}
{{ /if }}
{{ if serp_rivals }}
{{ serp_query ?? 'agência de seo' | entities }}
{{# Os concorrentes ficam sem numero e sem nome: eles trocam de posicao quando a marca sobe, e a informacao que importa e a posicao da marca. #}}
    {{ serp_rivals }}
  1. {{ value | entities }}
  2. {{ /serp_rivals }}
  3. 01 {{ serp_brand ?? 'Hoogli' | entities }}
posição orgânica · {{ serp_query ?? 'sua palavra-chave' | entities }}
{{ /if }} {{# Mock "navegador": wireframe OU host OU app (sistemas). #}} {{ if browser_mock_url }}
{{ if browser_mock_host }} {{ /if }} {{ browser_mock_url | entities }} {{ if browser_mock_host }} Online {{ /if }} {{ if browser_mock_app }} Login {{ /if }}
{{ if browser_mock_host }} {{ elseif browser_mock_app }} {{ else }}
{{ if browser_mock_blocks }} {{ browser_mock_blocks }}
{{ label | entities }}
{{ /browser_mock_blocks }} {{ /if }}
{{ /if }}
{{ /if }} {{# Mock "galeria": card branco com grid de placeholders de foto, mesma linguagem visual (cantos arredondados, sombra, rótulo mono pequeno). #}} {{ if gallery_mock }} {{ /if }} {{# Mock "métricas": card com indicadores de campanha paga (CPC, CTR, ROAS) + linha de tendência subindo. Mesma linguagem visual dos demais mocks (cantos arredondados, sombra, rótulo mono). #}} {{ if metrics_mock }}
{{ metrics_mock_label ?? 'Desempenho da campanha' | entities }}
    {{ metrics_mock }}
  • {{ label | entities }} {{ value | entities }} {{ if delta }}{{ delta | entities }}{{ /if }}
  • {{ /metrics_mock }}
{{ /if }} {{# Mock tráfego pago: canais → filtro IA → dashboard com partículas, chart e KPIs. Loop ~10s, mouse tilt, reduced-motion. #}} {{ if funnel_mock }} {{ /if }} {{# Mock identidade visual: monograma que se desenha, etapas sendo aprovadas uma a uma e o selo carimbando no fim. #}} {{# Mock identidade: studio (naming→sketch→cores→selo) ou processo INPI. #}} {{ if logo_mock }}
{{ logo_mock_label ?? 'Identidade visual' | entities }} {{ if logo_mock_process }}
{{ logo_mock_brand ?? 'Hoogli' | entities }}
{{ else }} {{# Board de naming: 3 opções → 1 escolhida #}}
{{ logo_mock_brand ?? 'Hoogli' | entities }}
{{ /if }} {{ if logo_mock_steps }}
    {{ logo_mock_steps }}
  • {{ label | entities }}
  • {{ /logo_mock_steps }}
{{ /if }}
{{ /if }} {{# Mock CRM: lead atravessa colunas → fecha venda → R$ sobe. #}} {{ if board_mock }}
{{ board_mock_label ?? 'Pipeline de vendas' | entities }} R$0
{{ if board_mock_columns }} {{ board_mock_columns }}
{{ label | entities }}
{{ /board_mock_columns }} {{ /if }}
{{ /if }} {{# Mock post social: capa real, double-tap like e contadores. #}} {{ if feed_mock }}
{{ feed_mock_handle ?? '@suamarca' | entities }} Patrocinado
{{ if feed_mock_caption }}

{{ feed_mock_handle ?? '@suamarca' | entities }} {{ feed_mock_caption | entities }}

{{ /if }} {{ if feed_mock_stats }}
    {{ feed_mock_stats }}
  • 0 {{ label | entities }}
  • {{ /feed_mock_stats }}
{{ /if }}
{{ /if }} {{# Mock player de áudio: onda em scaleY e progresso em scaleX — nada de animar largura/altura. #}} {{# Mock podcast: o microfone capta, a onda é gravada, a edição marca os cortes, o episódio publica e a audiência sobe. Mesma mecânica de fases por classe dos demais mocks. #}} {{ if audio_mock }}
{{# cabeçalho: microfone captando #}}
{{ audio_mock_title ?? 'Episódio 12' | entities }} {{ if audio_mock_meta }}{{ audio_mock_meta | entities }}{{ /if }}
{{# onda: gravada ao vivo, depois marcada e limpa na edição #}} {{# transporte #}}
00:00
{{# distribuição + audiência #}}
0 {{ audio_mock_reach_label ?? 'ouvintes' | entities }}
{{ /if }} {{# Mock app de mobilidade: rota que se desenha e ponto percorrendo carro segue path via getPointAtLength. #}} {{ if app_mock }}
{{ app_mock_label ?? 'Corrida em andamento' | entities }}
{{ app_mock_from ?? 'Origem' | entities }} {{ app_mock_to ?? 'Destino' | entities }}
{{ /if }} {{# Mock EAD: player de aula + lista de módulos (parece LMS real). #}} {{ if course_mock }}
{{ course_mock_label ?? 'Área do aluno' | entities }}
{{ course_mock_title ?? 'Seu curso' | entities }}
0:00 0:00
{{ if course_mock_lessons }}
    {{ course_mock_lessons }}
  • {{ label | entities }} {{ duration ?? '10:00' | entities }}
  • {{ /course_mock_lessons }}
{{ /if }}
{{ /if }} {{# Mock "construção de site": o wireframe vira layout, os componentes assentam, o estilo entra, a versão mobile aparece, o site publica e as métricas de performance sobem. A timeline é orquestrada por classes de fase no elemento raiz (JS), e cada fase só dispara transições de transform/opacity — nada de reflow no meio do loop. #}} {{ if build_mock }}
{{# janela do navegador — o "site" sendo montado #}}
{{ build_mock_url ?? 'seudominio.com.br' | entities }}
{{# a mesma página em mobile — entra deslizando na fase responsiva #}} {{# painel de performance — sobe quando o site publica #}}
0
{{ if build_mock_kpis }} {{ build_mock_kpis }}
{{ value | entities }} {{ label | entities }}
{{ /build_mock_kpis }} {{ /if }}
{{ build_mock_badge ?? 'Publicado' | entities }}
{{ /if }} {{# Mock "produção audiovisual": grava, os clipes entram na timeline, a cor é tratada, renderiza e sai em 4K. Mesma mecânica de fases por classe usada no mock de criação de site. #}} {{ if reel_mock }}
{{# monitor #}}
00:00:00 {{ reel_mock_label ?? 'Em produção' | entities }}
{{# timeline de edição #}} {{# render #}}
Render 0%
{{ /if }}
{{# ----------------------------------------------------- vantagens #}} {{ if advantages }}
{{ if advantages_heading }}

{{ advantages_heading | entities }}

{{ if advantages_lead }}

{{ advantages_lead | entities | nl2br }}

{{ /if }}
{{ /if }}
{{ advantages }}

{{ heading ?? value | entities }}

{{ if body }}

{{ body | entities | nl2br }}

{{ /if }}
{{ /advantages }}
{{ /if }} {{# --------------------------------------------------------- video #}} {{ if video_id }}
{{# Thumb YouTube de fundo; iframe entra só no clique. #}}
{{ /if }} {{# ------------------------------------------------- zona clara #}}
{{# ------------------------------------------- metodologia #}} {{ if method_heading || method_checks || method_image || method_stat_value }}
{{ if method_image }}
{{ else }}
{{ /if }}
{{ if method_eyebrow }} {{ method_eyebrow | entities }} {{ /if }} {{ if method_heading }}

{{ method_heading | entities }}{{ if method_heading_accent }} {{ method_heading_accent | entities }}{{ /if }}

{{ /if }} {{ if method_lead }}

{{ method_lead | entities | nl2br }}

{{ /if }} {{ if method_checks }}
    {{ method_checks }}
  • {{ value | entities }}
  • {{ /method_checks }}
{{ /if }} {{ if method_stat_value || method_stat_image }}
{{ if method_stat_image }}
{{ /if }} {{ if method_stat_value }}
{{ method_stat_value | entities }} {{ if method_stat_label }}{{ method_stat_label | entities }}{{ /if }} {{ if method_stat_sub }}
{{ method_stat_sub | entities }}{{ /if }}
{{ /if }}
{{ /if }} {{ if method_cta_label }} {{ method_cta_label | entities }} {{ /if }}
{{ /if }} {{# ------------------------------------------- entregáveis #}} {{ if deliverables }}
{{ if deliverables_eyebrow }} {{ deliverables_eyebrow | entities }} {{ /if }}

{{ deliverables_heading ?? 'O que entregamos' | entities }}

{{ if deliverables_lead }}

{{ deliverables_lead | entities | nl2br }}

{{ /if }}
{{ deliverables }}

{{ heading | entities }}

{{ body | entities | nl2br }}

{{ /deliverables }}
{{ /if }} {{ if pillars }}
{{ if pillars_eyebrow }} {{ pillars_eyebrow | entities }} {{ /if }}

{{ pillars_heading ?? 'Como trabalhamos' | entities }}

{{ pillars }}

{{ heading | entities }}

{{ body | entities | nl2br }}

{{ /pillars }}
{{ /if }} {{ if reasons }}
{{ if reasons_eyebrow }} {{ reasons_eyebrow | entities }} {{ /if }}

{{ reasons_heading ?? 'Por que escolher a Hoogli' | entities }}{{ if reasons_heading_accent }} {{ reasons_heading_accent | entities }}{{ /if }}

{{ if reasons_lead }}

{{ reasons_lead | entities | nl2br }}

{{ /if }}
{{ reasons }}

{{ heading | entities }}

{{ body | entities | nl2br }}

{{ /reasons }}
{{ if reasons_image }} {{ else }} {{ /if }} {{ if reasons_stat_value }}
{{ reasons_stat_value | entities }}
{{ if reasons_stat_label }}
{{ reasons_stat_label | entities }}
{{ /if }}
{{ /if }}
{{ /if }} {{ if journey }}
{{ if journey_eyebrow }} {{ journey_eyebrow | entities }} {{ /if }}

{{ journey_heading ?? 'Da busca à compra' | entities }}

{{ if journey_image }} {{ journey_image_alt ?? journey_heading ?? '' | entities }} {{ else }} {{ /if }}
{{ journey }}

{{ heading | entities }}

{{ body | entities | nl2br }}

{{ /journey }}
{{ /if }} {{ if stats }}
{{ if stats_eyebrow }} {{ stats_eyebrow | entities }} {{ /if }}

{{ stats_heading ?? 'Resultados em números' | entities }}

{{ stats }}
{{ value | entities }}

{{ label | entities }}

{{ /stats }}
{{ /if }} {{ if testimonials || quote_text }}
{{ testi_eyebrow ?? 'Depoimentos' | entities }}

{{ testi_heading ?? 'O que clientes dizem' | entities }}{{ if testi_heading_accent }} {{ testi_heading_accent | entities }}{{ /if }}

{{ testi_rating ?? '4.8' | entities }} {{ testi_rating_meta ?? '(5k+) avaliações' | entities }}
{{ testi_bar_label ?? 'Nossos clientes' | entities }} {{ testi_bar_value ?? 'Nota média 4.8/5' | entities }}
Capterra {{ testi_capterra ?? '4.8/5 (102 reviews)' | entities }}
Google {{ testi_google ?? '4.8/5 (102 reviews)' | entities }}
{{ if quote_link_url }} {{ quote_link_label ?? 'Ver todas' | entities }} → {{ /if }}
{{ /if }} {{ if faq }}
{{ if faq_eyebrow }} {{ faq_eyebrow | entities }} {{ /if }}

{{ faq_heading ?? 'O que costumam perguntar' | entities }}

{{ if faq_lead }}

{{ faq_lead | entities }}

{{ /if }}
{{ faq }}
{{ /faq }}
{{ /if }} {{# --------------------------------------- outros serviços #}} {{ if related_services }} {{ /if }} {{# --------------------------------------- fale conosco (CTA final, fundida) #}}

{{ cta_heading ?? expert_heading ?? 'Vamos conversar sobre o crescimento do seu negócio?' | entities }}

{{ cta_lead ?? expert_lead ?? 'Diagnóstico gratuito e sem compromisso. Fale agora com um especialista ou deixe seus dados no formulário abaixo — nós entramos em contato.' | entities | nl2br }}

{{ if expert_phone }} Precisa de ajuda? Fale com um expert {{ expert_phone | entities }} {{ /if }}
{{ cta_final_label ?? cta_label ?? expert_cta_label ?? 'Solicite uma proposta' | entities }}
{{# ---------------------------------------------------------- guia #}} {{# O guia e o texto de ranqueamento. Ele sai INTEIRO no HTML do servidor, sempre — o recolhimento e so visual (clamp de altura em CSS, aplicado por JS depois do carregamento). Nada de buscar o texto por fetch no clique: e isso que faria o Google nao ver o conteudo. Sem JS, ou em qualquer cliente que nao execute script, o guia aparece aberto. O botao so existe quando o JS roda. #}} {{ if content }}
{{ content }}
{{ /if }}