File: /home/storage/5/78/dd/wicomm2/public_html/blackfriday/resultado.php
<?php
// resultado.php
@date_default_timezone_set('America/Sao_Paulo');
require_once __DIR__ . '/config/config.php'; // usa as constantes VTEX_* já existentes
// ------------ Helpers ------------
function http_json($url, $headers = [], $connect_ms = 6000, $timeout_ms = 15000)
{
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_CONNECTTIMEOUT_MS => $connect_ms,
CURLOPT_TIMEOUT_MS => $timeout_ms,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
]);
$body = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
curl_close($ch);
return [$code, $body, $err];
}
function vtex_headers()
{
return [
// Versão recomendada do MD (evita respostas “mínimas” em alguns ambientes)
'Accept: application/vnd.vtex.masterdata.v10+json',
'Content-Type: application/json',
'X-VTEX-API-AppKey: ' . VTEX_APPKEY,
'X-VTEX-API-AppToken: ' . VTEX_APPTOKEN,
];
}
function safe_json_decode($val)
{
if (is_array($val) || is_object($val))
return $val;
if (!is_string($val))
return null;
$trim = trim($val);
if ($trim === '')
return null;
$j = json_decode($trim, true);
return (json_last_error() === JSON_ERROR_NONE) ? $j : null;
}
// Normaliza o campo de sugestões do Lighthouse
function normalize_lighthouse_sugestoes($raw)
{
// 1) Se já veio como string, tente decodificar.
if (is_string($raw)) {
$maybe = json_decode(trim($raw), true);
if (json_last_error() === JSON_ERROR_NONE) {
$raw = $maybe;
}
}
// 2) Caso venha como array "normalizado"
if (is_array($raw)) {
// Se for uma lista com 1 item e esse item tiver um "blob" em conteudo,
// tente extrair slides do(s) bloco(s) ```json ... ```
if (count($raw) === 1 && isset($raw[0]['conteudo']) && is_string($raw[0]['conteudo'])) {
$blob = (string) $raw[0]['conteudo'];
// 1) Captura TODOS os blocos ```json ... ``` e decodifica cada um
$slides = [];
if (preg_match_all('/```(?:json)?\s*([\s\S]*?)```/i', $blob, $all, PREG_SET_ORDER)) {
foreach ($all as $m) {
$chunk = trim($m[1]);
if ($chunk === '')
continue;
$obj = json_decode($chunk, true);
if (is_array($obj)) {
$headline = trim((string) ($obj['headline'] ?? $obj['title'] ?? ''));
$conteudo = trim((string) ($obj['conteudo'] ?? $obj['content'] ?? ''));
if ($headline !== '' || $conteudo !== '') {
$slides[] = ['headline' => $headline, 'conteudo' => $conteudo];
}
}
}
}
// 2) Fallback: vários objetos JSON soltos (sem fences), um por linha
if (!$slides) {
$lines = preg_split('/\r?\n+/', $blob);
foreach ($lines as $ln) {
$ln = trim($ln);
if ($ln === '' || $ln === ',' || $ln === '[' || $ln === ']')
continue;
$ln = rtrim($ln, ',');
$obj = json_decode($ln, true);
if (is_array($obj) && (isset($obj['headline']) || isset($obj['title']))) {
$slides[] = [
'headline' => trim((string) ($obj['headline'] ?? $obj['title'] ?? '')),
'conteudo' => trim((string) ($obj['conteudo'] ?? $obj['content'] ?? '')),
];
}
}
}
if ($slides)
return $slides;
// se não conseguiu extrair, cai no fluxo de normalização padrão abaixo
}
// Lista de objetos já pronta? Normaliza campos e retorna.
$ok = true;
foreach ($raw as $r) {
if (!is_array($r) || (!isset($r['headline']) && !isset($r['title']))) {
$ok = false;
break;
}
}
if ($ok) {
return array_values(array_map(function ($r) {
return [
'headline' => trim((string) ($r['headline'] ?? $r['title'] ?? '')),
'conteudo' => trim((string) ($r['conteudo'] ?? $r['content'] ?? '')),
];
}, $raw));
}
}
// 3) Último recurso: nada parseável → array vazio
return [];
}
function esc($s)
{
return htmlspecialchars((string) $s, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
function gauge_svg($score, $label = 'Performance')
{
$s = is_numeric($score) ? max(0, min(100, (int) $score)) : 0;
$color = ($s >= 90) ? '#0cce6b' : (($s >= 50) ? '#ffa400' : '#ff4e42');
$R = 46;
$T = 10;
$C = 2 * M_PI * $R;
$off = $C * (1 - $s / 100);
return '<svg width="150" height="150" viewBox="0 0 150 150" role="img" aria-label="' . esc($label) . ' ' . $s . '">
<circle cx="60" cy="60" r="' . $R . '" fill="none" stroke="#1f2731" stroke-width="' . $T . '"/>
<circle cx="60" cy="60" r="' . $R . '" fill="none" stroke="' . $color . '" stroke-width="' . $T . '"
stroke-dasharray="' . number_format($C, 1, '.', '') . '" stroke-dashoffset="' . number_format($off, 1, '.', '') . '"
stroke-linecap="round" transform="rotate(-90 60 60)"/>
<text x="60" y="66" text-anchor="middle" font-size="28" font-weight="700" fill="' . $color . '">' . $s . '</text>
<text x="60" y="80" text-anchor="middle" font-size="9" fill="#8ea0b4">' . esc($label) . '</text>
</svg>';
}
/**
* Tenta obter o documento BF pelo /documents/{id}.
* Se retornar apenas metadados (sem campos de negócio), faz fallback para /search com _where=id=...
*/
function vtex_get_bf_document($docId)
{
$base = 'https://' . VTEX_ACCOUNT . '.' . VTEX_ENVIRONMENT . '.com.br';
$headers = vtex_headers();
// 1) Tentativa direta: /documents/{id}
$urlDoc = $base . '/api/dataentities/' . urlencode(VTEX_DATA_ENTITY) . '/documents/' . urlencode($docId);
list($codeDoc, $bodyDoc, $errDoc) = http_json($urlDoc, $headers);
$doc = [];
if ($codeDoc < 400 && $bodyDoc) {
$parsed = json_decode($bodyDoc, true);
if (is_array($parsed)) {
$doc = $parsed;
}
}
// Se só vieram metadados (o caso que você reportou: id/accountId/accountName/dataEntityId), faça fallback:
$onlyMeta = $doc && (count(array_keys($doc)) <= 4)
&& isset($doc['id'], $doc['accountId'], $doc['accountName'], $doc['dataEntityId']);
if (!$doc || $onlyMeta) {
// 2) Fallback: /search?_where=id={id}&_fields=...
// Liste explicitamente os campos que você quer. Incluí os mais relevantes citados na conversa.
$fields = [
'id',
'email',
'site',
'maturidade',
'explanation',
'lighthouse',
'lighthouse_score',
'lighthouse_sugestoes',
'roadmap',
'roadmap_ai',
'strategy_1_title',
'strategy_2_title',
'strategy_3_title',
'strategy_4_title',
'strategy_5_title',
'strategy_6_title',
'strategy_1',
'strategy_2',
'strategy_3',
'strategy_4',
'strategy_5',
'strategy_6',
'created_at'
];
$urlSearch = $base . '/api/dataentities/' . urlencode(VTEX_DATA_ENTITY) . '/search'
. '?_where=' . rawurlencode('id=' . $docId)
. '&_fields=' . rawurlencode(implode(',', $fields))
. '&_size=1';
list($codeS, $bodyS, $errS) = http_json($urlSearch, $headers);
if ($codeS < 400 && $bodyS) {
$arr = json_decode($bodyS, true);
if (is_array($arr) && isset($arr[0]) && is_array($arr[0])) {
$doc = $arr[0];
}
}
}
return $doc ?: [];
}
// ------------ Entrada ------------
$docId = isset($_GET['id']) ? trim($_GET['id']) : '';
$docId = str_replace('BF-', '', $docId);
if ($docId === '') {
http_response_code(400);
echo 'Parâmetro "id" é obrigatório (resultado.php?id=DOCUMENT_ID).';
exit;
}
// ------------ Busca Master Data (BF) ------------
$doc = vtex_get_bf_document($docId);
if (!$doc) {
http_response_code(404);
echo 'Documento não encontrado ou sem campos legíveis no Master Data.';
exit;
}
// Campos esperados (alguns podem não existir dependendo do seu fluxo)
$maturidade = $doc['maturidade'] ?? '';
$explanation = $doc['explanation'] ?? '';
/**
* Lighthouse:
* - cobrimos as duas possibilidades:
* - "lighthouse" como JSON/texto completo (se existir)
* - "lighthouse_score" (int) + "lighthouse_sugestoes" (JSON list)
*/
$lighthouseScore = $doc['lighthouse_score'] ?? null;
$lighthouseSug = normalize_lighthouse_sugestoes(safe_json_decode($doc['lighthouse_sugestoes'] ?? '') ?? ($doc['lighthouse_sugestoes'] ?? []));
$lighthouseFull = safe_json_decode($doc['lighthouse'] ?? '') ?? null;
if (is_array($lighthouseFull)) {
// Se existir objeto completo, tentamos ler score e oportunidades dele
if ($lighthouseScore === null && isset($lighthouseFull['score'])) {
$lighthouseScore = $lighthouseFull['score'];
}
if (empty($lighthouseSug) && isset($lighthouseFull['oportunidades']) && is_array($lighthouseFull['oportunidades'])) {
$lighthouseSug = $lighthouseFull['oportunidades'];
}
}
$lighthouseSug = normalize_lighthouse_sugestoes($lighthouseSug);
// Roadmap IA pode estar em JSON (lista de itens) ou como string HTML/texto
$roadmapAI = $doc['roadmap_ai'] ?? '';
$roadmapAIJson = safe_json_decode($roadmapAI);
// normaliza e mapeia maturidade -> score simbólico para o gauge
$__mat = mb_strtolower((string) $maturidade, 'UTF-8');
$__mat = strtr($__mat, ['á' => 'a', 'à' => 'a', 'â' => 'a', 'ã' => 'a', 'é' => 'e', 'ê' => 'e', 'í' => 'i', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ú' => 'u', 'ç' => 'c']);
$__mat = preg_replace('/\s+/', '', $__mat);
$matScore = 0;
if ($__mat === 'avancado')
$matScore = 95; // verde
elseif ($__mat === 'intermediario')
$matScore = 70; // âmbar
elseif ($__mat === 'basico' || $__mat === 'basico')
$matScore = 30; // vermelho
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Check Up | Prepare seu site para Black Friday | Wicomm</title>
<meta name="description" content="A sua loja e-commerce está preparada para a Black Friday 2025? Com a Check Up, você consegue insights valiosos para alavancar as vendas. Acesse agora! ">
<meta name="robots" content="noindex, nofollow">
<link rel="stylesheet" href="assets/css/styles.css">
<link rel="stylesheet" href="assets/css/modal.css">
<link
rel="shortcut icon" href="assets/imgs/favicon.ico" type="image/x-icon">
<!-- Google Tag Manager -->
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-P5CNMWWR');
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P5CNMWWR" height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<main id="main">
<div class="main-banner">
<a href="https://www.wicomm.com.br/" target="__blank" class="logo-link">
<img src="assets/imgs/grupo-w.svg" alt="Grupo W" class="logo-img"/>
</a>
<div class="main-banner-options">
<div class="partners">
<a href="https://www.wicomm.com.br/" target="__blank" class="partner-link">
<img src="assets/imgs/wicomm.svg" alt="Wicomm" class="partner-img"/>
</a>
</div>
<div class="highlight">
<img src="assets/imgs/checkup-logo.svg" alt="Friday Up" class="highlight-img"/>
</div>
<p class="banner-text">
Aqui estão os pontos de melhoria para o seu ecommerce
<b>arrasar na Black Friday</b>
</p>
<a href="#result" class="cta-button">
Quero descobrir!
</a>
</div>
<picture>
<source srcset="assets/imgs/checkup-mob.png" media="(max-width: 768px)">
<img src="assets/imgs/checkup.png" alt="CheckUp" class="banner-img">
</picture>
</div>
<div class="main-container">
<div class="whats-is" id="result">
<div class="whats-is-text">
<h2 class="whats-is-title">
Maturidade
</h2>
</div>
<div>
<div class="container">
<div class="card card-lighthouse">
<div
class="lighthouse"><?= gauge_svg($matScore, $maturidade) ?>
</div>
<div class="">
<div class="muted">Resumo</div>
<div><?= nl2br(esc($explanation ?: '—')) ?></div>
</div>
</div>
</div>
</div>
</div>
<?php if (isset($lighthouseScore)): ?>
<div class="whats-is" style="margin-top: 40px;">
<div class="container">
<div class="whats-is-text" style="margin-bottom: 56px;">
<h2 class="whats-is-title">
Insights de Performance (Lighthouse)
</h2>
</div>
<div class="card card-lighthouse">
<div class="lighthouse" style="width:100%;">
<div><?= gauge_svg(is_numeric($lighthouseScore) ? (int) $lighthouseScore : 0, 'Performance') ?></div>
</div>
<div
class="">
<?php if (!empty($lighthouseSug)): ?>
<div class="opps">
<h3>Oportunidades de melhoria</h3>
<ul>
<?php foreach ($lighthouseSug as $op): ?>
<li style="margin-bottom:10px;">
<strong><?= esc($op['headline'] ?? 'Oportunidade') ?></strong>
<?php if (!empty($op['conteudo'])): ?>
<div class="muted"><?= nl2br(esc($op['conteudo'])) ?></div>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php else: ?>
<p class="muted">Nenhuma oportunidade registrada.</p>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php endif; ?>
<div class="whats-is" style="margin-top:60px;">
<div class="whats-is-text">
<h2 class="whats-is-title">
Roadmap Estratégico
</h2>
</div>
<div
class="cards-container" style="flex-wrap:wrap;"><?php
$ctaByArea = [
'SEO' => ['label' => 'Falar com o time de especialistas', 'href' => '#contato-seo'],
'Performance' => ['label' => 'Falar com o time de especialistas', 'href' => '#contato-performance'],
'UI/UX' => ['label' => 'Falar com o time de especialistas', 'href' => '#contato-ux'],
'CRM' => ['label' => 'Falar com o time de especialistas', 'href' => '#contato-crm'],
'Dados' => ['label' => 'Falar com o time de especialistas', 'href' => '#contato-dados'],
'Operacao' => ['label' => 'Falar com o time de especialistas', 'href' => '#contato-operacao'],
];
if (is_array($roadmapAIJson)) {
// Agrupa por área
$groups = [];
foreach ($roadmapAIJson as $it) {
$area = trim((string) ($it['area'] ?? 'Outros'));
if ($area === '')
$area = 'Outros';
if (!isset($groups[$area]))
$groups[$area] = [];
$groups[$area][] = $it;
}
// Ordem de exibição
$order = ['SEO', 'Performance', 'UI/UX', 'CRM', 'Dados', 'Outros'];
foreach ($order as $area) {
if (empty($groups[$area]))
continue;
echo '<h3 style="width:100%;margin:24px auto 8px auto;text-align:center;font-size:20px;letter-spacing:0.8px;font-weight:500;">' . esc($area) . '</h3>';
foreach ($groups[$area] as $it) {
$t = trim((string) ($it['titulo'] ?? ''));
$pq = trim((string) ($it['por_que'] ?? ''));
$aca = trim((string) ($it['acao_estrategica'] ?? ''));
$kpi = trim((string) ($it['kpi'] ?? ''));
echo '<div class="card-info">';
echo ' <div class="feature-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="38" height="42" viewBox="0 0 38 42" fill="none">
<path d="M2 40.1666H36.5" stroke="white" stroke-width="2.875" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2 19.0833C2 17.2763 2 16.3728 2.56137 15.8114C3.12276 15.25 4.02628 15.25 5.83333 15.25C7.64039 15.25 8.5439 15.25 9.10529 15.8114C9.66667 16.3728 9.66667 17.2763 9.66667 19.0833V30.5833C9.66667 32.3904 9.66667 33.2939 9.10529 33.8553C8.5439 34.4167 7.64039 34.4167 5.83333 34.4167C4.02628 34.4167 3.12276 34.4167 2.56137 33.8553C2 33.2939 2 32.3904 2 30.5833V19.0833Z" stroke="white" stroke-width="2.875"/>
<path d="M15.4166 11.4167C15.4166 9.60965 15.4166 8.70614 15.978 8.14475C16.5394 7.58337 17.4429 7.58337 19.25 7.58337C21.057 7.58337 21.9605 7.58337 22.5219 8.14475C23.0833 8.70614 23.0833 9.60965 23.0833 11.4167V30.5834C23.0833 32.3904 23.0833 33.2939 22.5219 33.8553C21.9605 34.4167 21.057 34.4167 19.25 34.4167C17.4429 34.4167 16.5394 34.4167 15.978 33.8553C15.4166 33.2939 15.4166 32.3904 15.4166 30.5834V11.4167Z" stroke="white" stroke-width="2.875"/>
<path d="M28.8334 5.66671C28.8334 3.85965 28.8334 2.95614 29.3948 2.39475C29.9562 1.83337 30.8597 1.83337 32.6667 1.83337C34.4737 1.83337 35.3773 1.83337 35.9386 2.39475C36.5 2.95614 36.5 3.85965 36.5 5.66671V30.5834C36.5 32.3904 36.5 33.2939 35.9386 33.8553C35.3773 34.4167 34.4737 34.4167 32.6667 34.4167C30.8597 34.4167 29.9562 34.4167 29.3948 33.8553C28.8334 33.2939 28.8334 32.3904 28.8334 30.5834V5.66671Z" stroke="white" stroke-width="2.875"/>
</svg>
</div>';
echo ' <div class="card-title">' . esc($t) . '</div>';
echo ' <div class="card-context card-context-lighthouse">';
if ($pq !== '')
echo esc($pq) . '<br/><br/>';
if ($aca !== '')
echo esc($aca) . '<br/><br/>';
$meta = [];
if ($kpi !== '')
$meta[] = '<strong>KPI:</strong> ' . esc($kpi);
if ($meta)
echo '<p class="muted">' . implode('<br/> ', $meta) . '</p>';
echo ' </div>';
echo '</div>';
}
// CTA da área
$cta = $ctaByArea[$area] ?? ['label' => 'Falar com especialista', 'href' => '#contato'];
echo '<div style="width:100%;margin:8px 0 32px 0;display:flex;justify-content:flex-start;">';
echo ' <a style="margin: 0 auto;font-size:16px;" class="quiz-result-cta cta-button" target="_blank" href="https://api.whatsapp.com/send?phone=5511957784555&text=Olá Juliano, vim pelo CheckUp de Black Friday da Wicomm.">' . esc($cta['label']) . '</a>';
echo '</div>';
}
} else {
// se não for JSON, exibe como texto/HTML simples
echo ($roadmapAI !== '') ? $roadmapAI : '<p class="muted">Sem dados do roadmap.</p>';
}
?>
</div>
</div>
</div>
</main>
<footer class="footer">
<div class="footer-container">
<div class="footer-social">
<a href="https://wicomm.com.br" class="social-link">
<svg class="social-icon" xmlns="http://www.w3.org/2000/svg" width="32" height="34" viewbox="0 0 32 34" fill="none">
<path d="M31.9235 23.9341C31.932 25.1971 31.6773 26.4518 31.1762 27.6138C30.6922 28.7421 29.9957 29.761 29.1295 30.6282C28.2548 31.4871 27.2186 32.1692 26.0806 32.6491C24.9002 33.1459 23.6263 33.3985 22.3439 33.3901C21.172 33.3901 20.017 33.188 18.9215 32.7754C17.8259 32.3629 16.8153 31.7566 15.949 30.9735C15.0913 31.7566 14.0892 32.3629 13.0021 32.7754C11.9066 33.188 10.7431 33.3985 9.57105 33.3901C8.28874 33.3985 7.02334 33.146 5.84284 32.6491C4.71334 32.1692 3.68578 31.4871 2.80256 30.6282C1.92782 29.7694 1.23142 28.7421 0.755852 27.6138C0.254723 26.4518 0 25.1971 0 23.9341V14.9328L6.40338 12.0616V23.9341C6.40338 24.3551 6.47985 24.7677 6.64963 25.1551C6.81105 25.5255 7.04026 25.8708 7.32914 26.1571C7.61778 26.4434 7.95747 26.6707 8.33961 26.8308C8.7303 26.9907 9.14646 27.0749 9.57105 27.0749C9.9957 27.0749 10.4203 26.9907 10.811 26.8308C11.1932 26.6707 11.5414 26.4434 11.8387 26.1571C12.4416 25.5761 12.7813 24.7761 12.7728 23.9341L12.8153 9.48487L19.1932 6.58826L19.1507 23.9341C19.1507 24.3551 19.2357 24.7677 19.4056 25.1551C19.5753 25.5255 19.8047 25.8708 20.0934 26.1571C20.3822 26.4434 20.7218 26.6707 21.1041 26.8308C21.4947 26.9907 21.9108 27.0749 22.3355 27.0749C23.1847 27.0749 24 26.7465 24.5945 26.1571C24.8833 25.8708 25.121 25.5255 25.2823 25.1551C25.4523 24.7677 25.5371 24.3551 25.5371 23.9341L25.6135 3.53172L32 0.609863L31.9235 23.9341Z" fill="#BFBFBF"/>
</svg>
</a>
<div class="social-links-container">
<a href="#" target="__blank" class="social-link" style="display:none;">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 20 20" fill="none">
<path d="M11.6663 11.2493H13.7497L14.583 7.91602H11.6663V6.24935C11.6663 5.39153 11.6663 4.58268 13.333 4.58268H14.583V1.78277C14.3116 1.74672 13.2855 1.66602 12.2021 1.66602C9.94001 1.66602 8.33301 3.04673 8.33301 5.58244V7.91602H5.83301V11.2493H8.33301V18.3327H11.6663V11.2493Z" fill="#BFBFBF"/>
</svg>
</a>
<a href="https://www.linkedin.com/company/wicomm-ag/" target="__blank" class="social-link">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 20 20" fill="none">
<path d="M5.78357 4.16742C5.78326 4.84601 5.37157 5.45666 4.74262 5.71142C4.11367 5.96619 3.39306 5.81419 2.92059 5.32711C2.44811 4.84001 2.31813 4.11511 2.59192 3.49421C2.86572 2.87331 3.48862 2.4804 4.1669 2.50075C5.0678 2.5278 5.78398 3.26612 5.78357 4.16742ZM5.83357 7.06742H2.50024V17.5007H5.83357V7.06742ZM11.1003 7.06742H7.78357V17.5007H11.0669V12.0257C11.0669 8.97573 15.0419 8.6924 15.0419 12.0257V17.5007H18.3336V10.8924C18.3336 5.75075 12.4503 5.94242 11.0669 8.4674L11.1003 7.06742Z" fill="#BFBFBF"/>
</svg>
</a>
</div>
</div>
<div class="footer-copyright">
<p>© 2025 Wicomm. Todos os direitos reservados.</p>
</div>
<div class="footer-extra"></div>
</div>
</footer>
<a href="#main" class="go-to-top">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 20 20" fill="none">
<path d="M4.16699 10.0003L10.0003 4.16699M10.0003 4.16699L15.8337 10.0003M10.0003 4.16699V15.8337" stroke="#BFBFBF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<script src="assets/js/questions.js"></script>
<script src="assets/js/index.js"></script>
</body>
</html>