// Just Travel — Legal & institutional document pages (React via Babel)
// One layout for four pages: Termos, Privacidade (with the LGPD section),
// Cookies and Parceiros. Each HTML entry sets window.JT_DOC before this
// module loads. Shares one global scope with landing-sections.jsx (Navbar,
// SIcon, Reveal) and landing-footer.jsx (Footer) — every top-level name here is
// prefixed DOC_ / Doc so it never collides with those files.

const DOC_UPDATED = "28 de julho de 2026";
const DOC_MAIL = "contato@justtraveltour.com";
const DOC_HREF_DEMO = "Agendar-Demo.html";
const DOC_HREF_START = "https://office-dashboard.justtraveltour.com/public-whitelabel/new/step-1";
const DOC_COMPANY = "Just Travel Viagens e Turismo LTDA";
const DOC_CNPJ = "40.454.131/0001-63";

const DOC_MailLink = () => <a href={`mailto:${DOC_MAIL}`}>{DOC_MAIL}</a>;

/* Partner brand marks, shown on Parceiros.html as a logo wall.
   Assets live in assets/logos/ as WebP with a real alpha channel: the source
   PNGs in media-src/partners/ were mostly flattened onto white, and the white
   had to be keyed out so nothing renders as a box.

   Split by what the group claims, not by how it looks. The parks and ticket
   wholesalers and the hospitality brands are inventory the platform actually
   sells; the destination marketing organisations are affiliations, not
   suppliers. Merging them would turn "fornecedor" into a claim the second group
   does not support.

   The brands here mirror SUPPLIERS in landing-sections.jsx, which is the same
   claim made in the landing's marquee. Two marks that the marquee has to render
   as wordmarks, because its 28px monochrome silhouette destroys them, appear
   here in full colour at a size where they read: that is the whole reason this
   wall exists alongside the strip. */
const DOC_PARKS = [
  { name: "Disney", file: "disney.webp" },
  { name: "Universal Orlando", file: "universal.webp" },
  { name: "SeaWorld", file: "seaworld.webp" },
  { name: "Discovery Cove", file: "discovery-cove.webp" },
  { name: "Legoland Florida", file: "legoland.webp" },
  { name: "Broadway Inbound", file: "broadway-inbound.webp" },
  { name: "Orlando Magic", file: "orlando-magic.webp" },
];

/* Hospedagem, cruzeiros e assistência ao viajante. One row rather than three:
   split by product these would be 5 + 1 + 1, and a wall with two orphan rows of
   one chip reads as a gap rather than as a group. The paragraph above names all
   three product types, so the row is not claiming they are all hotels. */
const DOC_HOSPEDAGEM = [
  { name: "Meliá Hotels & Resorts", file: "melia.webp" },
  { name: "Accor", file: "accor.webp" },
  { name: "Wyndham Hotels & Resorts", file: "wyndham.webp" },
  { name: "Hilton", file: "hilton.webp" },
  { name: "Celebration Suites", file: "celebration-suites.webp" },
  { name: "MSC Cruzeiros", file: "msc-cruzeiros.webp" },
  { name: "Assist Card", file: "assist-card.webp" },
];

const DOC_DESTINOS = [
  { name: "Visit Orlando", file: "visit-orlando.webp" },
  { name: "Visit Florida", file: "visit-florida.webp" },
  { name: "Visit Central Florida", file: "visit-central-florida.webp" },
  { name: "Experience Kissimmee", file: "kissimmee.webp" },
  { name: "Visit Lauderdale", file: "visit-lauderdale.webp" },
  { name: "Greater Miami Convention & Visitors Bureau", file: "greater-miami.webp" },
  { name: "Las Vegas", file: "las-vegas.webp" },
  { name: "NYC The Official Guide", file: "nyc-guide.webp" },
  { name: "Visit California", file: "visit-california.webp" },
  { name: "Visit The USA", file: "visit-the-usa.webp" },
  { name: "Visit Europe", file: "visit-europe.webp" },
];

const DOCS = {
  /* ------------------------------------------------------------ Termos */
  termos: {
    eyebrow: "Jurídico",
    title: "Termos de uso",
    lead: "As regras que valem para quem usa a plataforma Just Travel: a agência que contrata e as pessoas que operam a loja no dia a dia.",
    dated: true,
    seo: "Termos de uso da plataforma Just Travel: contratação, responsabilidades da agência e da Just Travel, pagamentos, propriedade intelectual e encerramento.",
    sections: [
      { id: "aceitacao", h: "1. Aceitação destes termos", blocks: [
        { p: <>Ao criar uma conta, contratar um plano ou usar qualquer parte da plataforma Just Travel, você declara ter lido e aceito estes Termos de uso. Se você aceita em nome de uma agência ou empresa, declara ter poderes para representá-la.</> },
        { p: <>Estes termos são firmados com a {DOC_COMPANY}, inscrita no CNPJ sob o nº {DOC_CNPJ}, com matriz em Salvador (BA), Brasil.</> },
      ]},
      { id: "servico", h: "2. O que a Just Travel oferece", blocks: [
        { p: <>A Just Travel é uma plataforma de tecnologia para agências de viagens. Fornecemos a loja white label com a marca da agência, o acesso ao catálogo de produtos turísticos disponível via integrações, o checkout e as ferramentas de gestão da operação.</> },
        { p: <>A Just Travel não é agência de viagens, operadora, transportadora nem hotel. Os produtos turísticos vendidos pela loja da agência são prestados pelos respectivos fornecedores, conforme a cláusula 8.</> },
      ]},
      { id: "conta", h: "3. Conta e credenciais", blocks: [
        { p: <>O acesso é individual e vinculado a um perfil de permissões. Cabe à agência manter seus dados cadastrais corretos e atualizados, criar acessos apenas para pessoas autorizadas e revogá-los quando alguém deixar a equipe.</> },
        { p: <>As credenciais são pessoais e não devem ser compartilhadas. A agência é responsável pelas ações praticadas com os acessos que criou.</> },
      ]},
      { id: "agencia", h: "4. Responsabilidades da agência", blocks: [
        { ul: [
          "Usar a plataforma conforme a legislação aplicável, incluindo as normas de defesa do consumidor e de proteção de dados.",
          "Responder pelo conteúdo que publica na própria loja: textos, imagens, preços, condições de venda e políticas de cancelamento.",
          "Manter a relação comercial com o viajante, incluindo atendimento, cobrança de taxas próprias e tratativas de reembolso junto aos fornecedores.",
          "Não usar a plataforma para atividade ilícita, fraude, lavagem de dinheiro ou contorno de controles de segurança.",
        ]},
      ]},
      { id: "justtravel", h: "5. Responsabilidades da Just Travel", blocks: [
        { p: <>Mantemos a plataforma em operação com infraestrutura redundante, monitoramento e backups automáticos diários, conforme descrito na página de <a href="Seguranca.html">Segurança &amp; Conformidade</a>, e disponibilizamos suporte pelos canais informados no site.</> },
        { p: <>Manutenções programadas e interrupções pontuais podem ocorrer. Quando previsíveis e relevantes, comunicamos com antecedência pelos canais de atendimento.</> },
      ]},
      { id: "pagamentos", h: "6. Planos, cobrança e cancelamento", blocks: [
        { p: <>Os planos e valores vigentes estão na página de <a href="Precos.html">Preços</a>. A contratação é por assinatura, com cobrança recorrente conforme o plano escolhido, e o plano gratuito não exige cartão.</> },
        { p: <>O cancelamento pode ser solicitado pelos canais de atendimento e encerra as cobranças seguintes. Valores de períodos já usados não são devolvidos, salvo quando a lei exigir.</> },
      ]},
      { id: "propriedade", h: "7. Propriedade intelectual", blocks: [
        { p: <>A plataforma, o código, a documentação e a marca Just Travel pertencem à {DOC_COMPANY}. A contratação concede à agência uma licença de uso, não exclusiva e intransferível, durante a vigência do plano.</> },
        { p: <>A marca, o domínio e o conteúdo publicados pela agência na própria loja continuam sendo dela. A agência autoriza a Just Travel a exibi-los apenas na medida necessária para operar a loja.</> },
      ]},
      { id: "fornecedores", h: "8. Produtos turísticos e fornecedores", blocks: [
        { p: <>Disponibilidade, preço, regras tarifárias e execução de cada produto turístico são definidos pelo fornecedor responsável. Falhas na prestação do serviço turístico, como remarcação, no-show ou cancelamento pelo fornecedor, seguem as políticas desse fornecedor.</> },
      ]},
      { id: "suspensao", h: "9. Suspensão e encerramento", blocks: [
        { p: <>Podemos suspender ou encerrar acessos em caso de inadimplência, uso fraudulento, risco à segurança da plataforma ou descumprimento destes termos. Quando a situação permitir, avisamos antes e damos prazo para correção.</> },
        { p: <>Encerrada a conta, a agência pode solicitar a exportação dos seus dados. A retenção depois disso segue a <a href="Privacidade.html">Política de Privacidade</a>.</> },
      ]},
      { id: "responsabilidade", h: "10. Limitação de responsabilidade", blocks: [
        { p: <>A Just Travel responde por danos diretos comprovadamente causados pela plataforma, nos limites da lei. Não respondemos por lucros cessantes, perda de oportunidade comercial, decisões de precificação da agência nem por atos de fornecedores turísticos e de terceiros contratados pela agência.</> },
      ]},
      { id: "alteracoes", h: "11. Alterações destes termos", blocks: [
        { p: <>Podemos atualizar estes termos para refletir mudanças no produto ou na legislação. Alterações relevantes são comunicadas pelos canais de atendimento ou dentro da plataforma. O uso após a atualização significa concordância com a nova versão.</> },
      ]},
      { id: "foro", h: "12. Lei aplicável e foro", blocks: [
        { p: <>Estes termos são regidos pela legislação brasileira. Fica eleito o foro da comarca de Salvador (BA) para resolver controvérsias que não sejam solucionadas pelos canais de atendimento.</> },
        { p: <>Dúvidas sobre estes termos: <DOC_MailLink />.</> },
      ]},
    ],
  },

  /* ------------------------------------------------------- Privacidade */
  privacidade: {
    eyebrow: "Privacidade",
    title: "Política de Privacidade",
    lead: "Como a Just Travel coleta, usa, compartilha e protege dados pessoais: os da sua agência e os dos seus clientes.",
    dated: true,
    seo: "Como a Just Travel trata dados pessoais: dados coletados, bases legais, compartilhamento, segurança, retenção e os direitos do titular previstos na LGPD.",
    sections: [
      { id: "controlador", h: "1. Quem trata os seus dados", blocks: [
        { p: <>O tratamento é realizado pela {DOC_COMPANY}, inscrita no CNPJ sob o nº {DOC_CNPJ}, com matriz no Condomínio Salvador Prime, Avenida Tancredo Neves, 2227, Loja 27, Mezanino, Caminho das Árvores, Salvador (BA), CEP 41820-021, e escritórios em São Paulo (SP), Celebration (Flórida, EUA) e Lisboa (Portugal).</> },
        { p: <>Nas operações da loja da agência, a agência é a controladora dos dados dos seus clientes e a Just Travel atua como operadora, tratando esses dados para executar o serviço contratado. Nos dados de cadastro e uso da própria plataforma, a Just Travel é a controladora.</> },
        { p: <>Canal do Encarregado de Proteção de Dados: <DOC_MailLink />.</> },
      ]},
      { id: "dados", h: "2. Dados que coletamos", blocks: [
        { p: <>Coletamos apenas os dados necessários para operar a plataforma:</> },
        { ul: [
          "Da agência e da equipe: nome, e-mail, telefone, cargo, dados de cadastro da empresa e registros de acesso à plataforma.",
          "Dos clientes da agência: dados de identificação e contato, informações necessárias à reserva e dados de pagamento tokenizados.",
          "De uso e navegação: páginas acessadas, ações na plataforma, endereço IP, dispositivo e navegador.",
          "De atendimento: mensagens e registros das conversas com nossos canais de suporte.",
        ]},
        { p: <>Dados de cartão são tokenizados no checkout e não trafegam pela loja da agência.</> },
      ]},
      { id: "finalidades", h: "3. Para que usamos", blocks: [
        { ul: [
          "Executar o contrato: criar e manter a loja, processar reservas e pagamentos, dar suporte.",
          "Prevenir fraude: submeter cada compra à análise de risco antes da aprovação, com 3-D Secure e verificação de identidade.",
          "Manter a operação de pé: monitorar erros e desempenho, gerar backups e restaurar dados quando necessário.",
          "Cumprir obrigações legais, regulatórias, fiscais e de guarda de registros.",
          "Comunicar novidades, conteúdos e oportunidades comerciais, quando houver consentimento ou legítimo interesse.",
        ]},
      ]},
      { id: "bases", h: "4. Bases legais", blocks: [
        { p: <>Cada uso tem uma base legal da LGPD (Lei nº 13.709/2018):</> },
        { ul: [
          "Execução de contrato: operação da plataforma, reservas, pagamentos e suporte.",
          "Cumprimento de obrigação legal ou regulatória: guarda de registros e obrigações fiscais.",
          "Legítimo interesse: prevenção a fraude, segurança da informação e melhoria do produto.",
          "Consentimento: comunicações de marketing e cookies não essenciais, revogáveis a qualquer momento.",
        ]},
      ]},
      { id: "compartilhamento", h: "5. Com quem compartilhamos", blocks: [
        { p: <>Não vendemos dados pessoais. Compartilhamos apenas o necessário com:</> },
        { ul: [
          "Fornecedores dos produtos turísticos vendidos, para emissão e execução da reserva.",
          "Adquirentes e provedores de pagamento, para processar a transação e tokenizar os dados de cartão.",
          "Serviços de prevenção a fraude e verificação de identidade, incluindo 3-D Secure e D4Sign.",
          "Provedores de infraestrutura e de monitoramento, como o Datadog, usados para manter e observar a operação.",
          "Autoridades públicas, quando houver requisição legal.",
        ]},
        { p: <>Todos os operadores contratados estão sujeitos a obrigações de confidencialidade e de segurança da informação.</> },
      ]},
      { id: "internacional", h: "6. Transferência internacional", blocks: [
        { p: <>A Just Travel opera também nos Estados Unidos e em Portugal, e parte dos provedores de infraestrutura mantém servidores fora do Brasil. Nesses casos, a transferência ocorre com as garantias exigidas pela LGPD, por meio de cláusulas contratuais e medidas técnicas de proteção.</> },
      ]},
      { id: "seguranca", h: "7. Como protegemos", blocks: [
        { p: <>As medidas técnicas estão descritas em detalhe na página de <a href="Seguranca.html">Segurança &amp; Conformidade</a>. Em resumo: conexões protegidas por SSL/HTTPS com TLS 1.3, tokenização de dados de cartão, permissões por perfil, monitoramento 24/7 da operação e backups automáticos diários.</> },
      ]},
      { id: "retencao", h: "8. Por quanto tempo guardamos", blocks: [
        { p: <>Guardamos os dados enquanto a conta estiver ativa e pelo prazo necessário às finalidades desta política. Encerrado o contrato, mantemos o que a lei exige, como registros fiscais e de acesso, e eliminamos ou anonimizamos o restante.</> },
        { p: <>Mantemos backups automáticos diários pelo período necessário para restaurar a operação; depois disso, a cópia é sobrescrita. O prazo vigente pode ser informado a pedido do titular ou da agência.</> },
      ]},
      { id: "lgpd", h: "9. Seus direitos como titular (LGPD)", blocks: [
        { p: <>A Lei Geral de Proteção de Dados garante a você, a qualquer momento e sem custo:</> },
        { ul: [
          "Confirmação de que tratamos os seus dados e acesso a eles.",
          "Correção de dados incompletos, inexatos ou desatualizados.",
          "Anonimização, bloqueio ou eliminação de dados desnecessários ou tratados em desconformidade com a lei.",
          "Portabilidade dos dados a outro fornecedor, conforme regulamentação da ANPD.",
          "Eliminação dos dados tratados com base no seu consentimento.",
          "Informação sobre com quem compartilhamos os seus dados.",
          "Informação sobre a possibilidade de não consentir e as consequências disso.",
          "Revogação do consentimento e oposição a tratamento feito com base em legítimo interesse.",
        ]},
        { p: <>Para exercer qualquer um deles, escreva para <DOC_MailLink />. Respondemos pelo mesmo canal e podemos pedir informações adicionais para confirmar a sua identidade antes de liberar dados.</> },
        { p: <>Se você é cliente de uma agência que usa a Just Travel, o pedido também pode ser feito diretamente a ela, que é a controladora desses dados. Você também pode peticionar à Autoridade Nacional de Proteção de Dados (ANPD).</> },
      ]},
      { id: "cookies", h: "10. Cookies", blocks: [
        { p: <>O uso de cookies e tecnologias semelhantes está descrito na <a href="Cookies.html">Política de Cookies</a>.</> },
      ]},
      { id: "mudancas", h: "11. Alterações desta política", blocks: [
        { p: <>Esta política pode ser atualizada para acompanhar mudanças no produto, nos fornecedores ou na legislação. A data no topo indica a última revisão, e mudanças relevantes são comunicadas pelos nossos canais.</> },
      ]},
    ],
  },

  /* ----------------------------------------------------------- Cookies */
  cookies: {
    eyebrow: "Privacidade",
    title: "Política de Cookies",
    lead: "O que guardamos no seu navegador, para quê, e como você controla isso.",
    dated: true,
    seo: "Que cookies e dados locais a Just Travel usa (essenciais, de preferência e de desempenho) e como gerenciá-los no navegador.",
    sections: [
      { id: "oque", h: "1. O que são cookies", blocks: [
        { p: <>Cookies são pequenos arquivos que um site guarda no seu navegador para lembrar informações entre uma visita e outra. Junto deles, usamos tecnologias equivalentes de armazenamento local, como o <em>localStorage</em>, com a mesma finalidade.</> },
      ]},
      { id: "tipos", h: "2. O que usamos", blocks: [
        { p: <><strong>Essenciais.</strong> Mantêm a sessão de quem entra na plataforma, protegem formulários e sustentam o fluxo de compra na loja da agência. Sem eles, o login e o checkout não funcionam, e por isso não podem ser desativados.</> },
        { p: <><strong>De preferência.</strong> Guardam escolhas de interface, como o tema claro ou escuro do site, salvo localmente sob a chave <code>jt-theme</code>, e o idioma selecionado.</> },
        { p: <><strong>De desempenho e segurança.</strong> Ajudam a medir tempo de resposta, identificar erros e detectar comportamento anômalo, incluindo os sinais usados na análise de risco de cada compra.</> },
      ]},
      { id: "terceiros", h: "3. Cookies de terceiros", blocks: [
        { p: <>Alguns serviços contratados para operar e observar a plataforma, como provedores de pagamento, antifraude e monitoramento, podem definir cookies próprios ao serem acionados. O uso desses dados segue a política de cada fornecedor e o que descrevemos na <a href="Privacidade.html">Política de Privacidade</a>.</> },
      ]},
      { id: "gerenciar", h: "4. Como gerenciar", blocks: [
        { p: <>Todos os navegadores permitem ver, bloquear e apagar cookies nas configurações de privacidade, além de oferecer modos de navegação anônima. Você também pode limpar as preferências guardadas localmente pelo próprio navegador.</> },
        { p: <>Bloquear cookies essenciais impede o login e a finalização de compras. Bloquear os de preferência faz o site esquecer escolhas como o tema.</> },
      ]},
      { id: "atualizacoes", h: "5. Atualizações", blocks: [
        { p: <>Se mudarmos os cookies utilizados, atualizamos esta página e a data no topo. Dúvidas: <DOC_MailLink />.</> },
      ]},
    ],
  },

  /* --------------------------------------------------------- Parceiros */
  parceiros: {
    eyebrow: "Ecossistema",
    title: "Parceiros",
    lead: "A Just Travel funciona conectada: fornecedores de inventário, meios de pagamento, antifraude e infraestrutura. E há espaço para quem quer crescer junto.",
    dated: false,
    seo: "O ecossistema de parceiros da Just Travel: fornecedores de produtos turísticos, pagamentos, antifraude, infraestrutura e programas para redes, influenciadores e destinos.",
    sections: [
      { id: "tecnologia", h: "Parceiros de tecnologia e operação", blocks: [
        { p: <>Boa parte do que a plataforma entrega depende de integrações bem escolhidas. Trabalhamos com:</> },
        { ul: [
          "Fornecedores de inventário turístico: hotelaria, ingressos e parques, cruzeiros, experiências e seguro viagem, integrados via API.",
          "Adquirentes e provedores de pagamento, que processam as transações e tokenizam os dados de cartão.",
          "Prevenção a fraude e identidade: autenticação 3-D Secure no cartão e verificação de identidade com D4Sign.",
          "Infraestrutura e observabilidade: provedores de nuvem e monitoramento da operação com Datadog.",
        ]},
      ]},
      { id: "marcas", h: "Marcas e destinos no catálogo", blocks: [
        { p: <><strong>Parques, atrações e ingressos.</strong> Produto de parque e atração que a agência vende pela própria loja, com voucher emitido na hora da compra.</> },
        { logos: DOC_PARKS },
        { p: <><strong>Hospedagem, cruzeiros e assistência.</strong> Redes hoteleiras, companhias de cruzeiro e assistência ao viajante disponíveis no catálogo, com tarifa e disponibilidade vindas do próprio fornecedor.</> },
        { logos: DOC_HOSPEDAGEM },
        { p: <><strong>Destinos e escritórios de turismo.</strong> Órgãos oficiais de promoção dos destinos que a plataforma distribui. Aparecem aqui como referência de cobertura, não como fornecedores de inventário.</> },
        { logos: DOC_DESTINOS },
        { seal: {
          file: "safe-browsing-google.webp",
          name: "Google Safe Browsing",
          txt: "As lojas publicadas na plataforma são verificadas continuamente pelo Google Safe Browsing, o serviço que sinaliza sites com malware ou phishing nos navegadores.",
        }},
      ]},
      { id: "programas", h: "Programas de parceria", blocks: [
        { p: <><strong>Redes e franquias.</strong> Estrutura multi-loja com padrão de marca, gestão centralizada e autonomia por unidade.</> },
        { p: <><strong>Operadoras.</strong> Distribuição do seu produto para a base de agências que já opera na plataforma.</> },
        { p: <><strong>Influenciadores e criadores.</strong> Loja própria para transformar audiência em venda de viagem, com a sua marca na frente.</> },
        { p: <><strong>Destinos turísticos.</strong> Vitrine e distribuição do destino junto às agências parceiras.</> },
      ]},
      { id: "comotornar", h: "Como se tornar parceiro", blocks: [
        { p: <>Conte o que você faz e onde enxerga a conexão com a Just Travel. O time comercial avalia o encaixe técnico e comercial e volta com os próximos passos.</> },
        { p: <>Escreva para <DOC_MailLink /> ou <a href={DOC_HREF_DEMO}>agende uma conversa</a>.</> },
      ]},
    ],
  },
};

function DocBlock({ b }) {
  if (b.ul) {
    return (
      <ul className="doc-list">
        {b.ul.map((li, i) => (
          <li key={i}>
            <SIcon name="check" size={17} color="var(--just-blue-ink)" />
            <span>{li}</span>
          </li>
        ))}
      </ul>
    );
  }
  if (b.logos) {
    /* Each mark sits on its own light chip. The brands keep their real colours
       (a grayscale knockout turns the Orlando Magic emblem and the Visit The
       USA dot matrix into smudges), and the chip guarantees the contrast the
       artwork needs, including in the dark theme where it stays a light island
       the same way the product mockups do. */
    return (
      <ul className="doc-logos">
        {b.logos.map((l) => (
          <li key={l.file} className="doc-logos__item">
            <img
              className="doc-logos__img"
              src={`assets/logos/${l.file}`}
              alt={l.name}
              loading="lazy"
              decoding="async" />
          </li>
        ))}
      </ul>
    );
  }
  if (b.seal) {
    return (
      <div className="doc-seal">
        <img
          className="doc-seal__img"
          src={`assets/logos/${b.seal.file}`}
          alt={b.seal.name}
          loading="lazy"
          decoding="async" />
        <p className="doc-seal__txt">{b.seal.txt}</p>
      </div>
    );
  }
  if (b.stats) {
    return (
      <div className="doc-stats">
        {b.stats.map((s, i) => (
          <div key={i} className="doc-stat">
            <div className="doc-stat__v">{s.v}</div>
            <div className="doc-stat__l">{s.l}</div>
          </div>
        ))}
      </div>
    );
  }
  return <p>{b.p}</p>;
}

function DocPage({ doc }) {
  return (
    <PageShell>
      <main id="top">
        <section className="doc-hero">
          <div className="container">
            <Reveal as="div" className="doc-hero__inner">
              <span className="eyebrow">{doc.eyebrow}</span>
              <h1 className="doc-hero__title">{doc.title}</h1>
              <p className="lead">{doc.lead}</p>
              {doc.dated && (
                <p className="doc-hero__date">Última atualização: {DOC_UPDATED}</p>
              )}
            </Reveal>
          </div>
        </section>

        <div className="container doc-body">
          <aside className="doc-toc">
            <nav aria-label="Índice desta página">
              <span className="doc-toc__h">Nesta página</span>
              <ol>
                {doc.sections.map((s) => (
                  <li key={s.id}><a href={`#${s.id}`}>{s.h}</a></li>
                ))}
              </ol>
            </nav>
          </aside>

          <div className="doc-content">
            {doc.sections.map((s) => (
              <section key={s.id} id={s.id} className="doc-section">
                <h2>{s.h}</h2>
                {s.blocks.map((b, i) => <DocBlock key={i} b={b} />)}
              </section>
            ))}
          </div>
        </div>

        <section className="section doc-cta">
          <div className="container">
            <Reveal as="div" className="doc-cta__inner">
              <h2 className="doc-cta__title">Ficou alguma dúvida?</h2>
              <p className="lead">
                Fale com a gente em <DOC_MailLink /> ou veja a plataforma funcionando
                com alguém do time.
              </p>
              <div className="doc-cta__row">
                <a className="btn btn--blue btn--lg" href={DOC_HREF_DEMO}>
                  Agendar demo
                  <span className="btn__arrow"><SIcon name="btnArrow" /></span>
                </a>
                <a className="btn btn--outline btn--lg" href={DOC_HREF_START}>
                  Começar grátis
                  <span className="btn__arrow"><SIcon name="btnArrow" /></span>
                </a>
              </div>
            </Reveal>
          </div>
        </section>
      </main>
      </PageShell>
  );
}

(function () {
  const el = document.getElementById("app");
  const doc = DOCS[window.JT_DOC];
  if (!el || !doc) return;
  ReactDOM.createRoot(el).render(<DocPage doc={doc} />);
})();
