PageSourceSearch

https://appvidraceiro.vercel.app/

html appvidraceiro.vercel.app collected 2026-10-03 05:47:01 UTC 23,141 bytes, 721 lines download raw bytes

1<!DOCTYPE html>
2<html lang="pt-BR">
3<head>
4  <meta charset="UTF-8">
5  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6  <title>Vidraceiro Rápido</title>
7  <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap" rel="stylesheet">
8
9  <!-- Meta Pixel Code -->
10  
10<script>
vendor: 417 bytes, lines 10-19
10
11  !function(f,b,e,v,n,t,s)
12  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
13  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
14  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
15  n.queue=[];t=b.createElement(e);t.async=!0;
16  t.src=v;s=b.getElementsByTagName(e)[0];
17  s.parentNode.insertBefore(t,s)}(window, document,'script',
18  'https://connect.facebook.net/en_US/fbevents.js');
19  fbq('init', '
191626847695818906
vendor: 34 bytes, lines 19-21
19');
20  fbq('track', 'PageView');
21  
21fbq('track', 'ViewContent');
22  </script>
22
23  <noscript><img height="1" width="1" style="display:none"
24  src="https://www.facebook.com/tr?id=1626847695818906&ev=PageView&noscript=1"
25  /></noscript>
26  <!-- End Meta Pixel Code -->
27
28  <!-- UTM Script -->
29  
29<script
30    src="https://cdn.utmify.com.br/scripts/utms/latest.js"
31    data-utmify-prevent-xcod-sck
32    data-utmify-prevent-subids
33    async
34    defer
35  ></script>
35
36
37  <style>
38    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
39    html { scroll-behavior: smooth; }
40
41    body {
42      font-family: 'Poppins', sans-serif;
43      background: #ffffff;
44      color: #0f172a;
45      min-height: 100vh;
46      display: flex;
47      align-items: flex-start;
48      justify-content: center;
49      padding: 28px 20px 64px;
50    }
51
52    main {
53      width: 100%;
54      max-width: 512px;
55      display: flex;
56      flex-direction: column;
57      gap: 28px;
58    }
59
60    /* Steps */
61    .step { display: none; flex-direction: column; gap: 24px; width: 100%; }
62    .step.active { display: flex; }
63
64    /* Progress bar (fixed top) */
65    #pgbar-wrap {
66      position: fixed; top: 0; left: 0; right: 0;
67      height: 5px; background: #e5e7eb; z-index: 200; display: none;
68    }
69    #pgbar-fill {
70      height: 100%; background: #3C83F6; width: 0%;
71      transition: width 0.4s ease; border-radius: 0 4px 4px 0;
72    }
73
74    /* Question title */
75    .q-title {
76      text-align: center; font-size: 21px; font-weight: 700;
77      line-height: 1.4; color: #000;
78    }
79
80    /* Option grids */
81    .opts-col  { display: flex; flex-direction: column; gap: 8px; }
82    .opts-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
83
84    /* Option card */
85    .opt {
86      display: flex;
87      background: #f9fafb;
88      border: 1px solid #e5e7eb;
89      border-bottom: 4px solid #e5e7eb;
90      border-radius: 12px;
91      box-shadow: 0 4px 16px rgba(100,116,139,0.08);
92      cursor: pointer;
93      overflow: hidden;
94      -webkit-tap-highlight-color: transparent;
95      user-select: none;
96      transition: background 0.12s ease, border-color 0.12s ease;
97    }
98    .opt:active  { opacity: 0.85; }
99    .opt.picked  { background: #e6fbe4; border-color: #25a255; }
100
101    /* Row layout: emoji + text */
102    .opt-row {
103      display: flex; flex: 1; align-items: center;
104      gap: 14px; padding: 14px 16px;
105    }
106    .opt-emoji { font-size: 2rem; flex-shrink: 0; line-height: 1; }
107    .opt-label { flex: 1; font-size: 14px; color: #0f172a; line-height: 1.45; }
108
109    /* Column layout: image + text (2-col) */
110    .opt-col {
111      display: flex; flex: 1; flex-direction: column;
112      align-items: center; gap: 10px; padding: 14px 12px;
113    }
114    .opt-img-ph {
115      width: 100%; background: #e2e8f0;
116      border: 1.5px dashed #94a3b8; border-radius: 6px; height: 90px;
117      display: flex; align-items: center; justify-content: center;
118      color: #64748b; font-size: 11px; text-align: center; line-height: 1.3;
119    }
120    .opt-col-label {
121      text-align: center; font-size: 13px;
122      font-weight: 700; color: #0f172a; line-height: 1.3;
123    }
124
125    /* Image placeholder (full-width) */
126    .img-ph {
127      width: 100%; background: #f1f5f9; border: 2px dashed #cbd5e1;
128      border-radius: 8px; padding: 40px 16px;
129      text-align: center; color: #64748b; font-size: 14px;
130    }
131
132    /* Real image (full-width) */
133    .img-real img {
134      width: 100%; height: auto; border-radius: 8px; display: block;
135    }
136
137    /* CTA Button */
138    .btn-cta {
139      display: block; width: 100%; padding: 20px;
140      background: #25a255; color: #fff;
141      font-family: 'Poppins', sans-serif; font-weight: 700;
142      font-size: 18px; text-align: center;
143      border: none; border-radius: 12px; cursor: pointer;
144      animation: pulse 1s ease infinite;
145      letter-spacing: 0.5px; text-decoration: none;
146    }
147    @keyframes pulse {
148      0%   { transform: scale(0.98); }
149      50%  { transform: scale(1.02); }
150      100% { transform: scale(0.98); }
151    }
152
153    /* Break page */
154    .break-title {
155      text-align: center; font-size: 22px;
156      font-weight: 700; line-height: 1.4;
157    }
158    .break-body { font-size: 17px; line-height: 1.65; }
159
160    .note-pink {
161      background: #fbe4e4; border-radius: 10px;
162      padding: 16px 18px; font-size: 17px;
163      font-weight: 700; color: #b90404; line-height: 1.5;
164      text-align: center;
165    }
166
167    .list-row {
168      display: flex; flex-direction: row;
169      gap: 10px; align-items: flex-start;
170    }
171    .list-row span { font-size: 17px; line-height: 1.55; }
172
173    /* Loading */
174    .load-title {
175      text-align: center; font-size: 22px;
176      font-weight: 700; line-height: 1.4;
177    }
178    .load-sub { text-align: center; font-size: 17px; color: #475569; }
179    .load-bar-wrap {
180      width: 100%; height: 14px; background: #e5e7eb;
181      border-radius: 100px; overflow: hidden;
182    }
183    .load-bar-fill {
184      height: 100%; background: #3C83F6; width: 0%;
185      border-radius: 100px; transition: width 0.08s linear;
186    }
187    .load-pct {
188      text-align: center; font-size: 18px;
189      font-weight: 700; color: #3C83F6;
190    }
191  </style>
192</head>
193<body>
194
195<!-- Progress bar -->
196<div id="pgbar-wrap"><div id="pgbar-fill"></div></div>
197
198<main>
199
200  <!-- ========================================
201       STEP 0 — HEADLINE
202  ========================================= -->
203  <section class="step active" id="step-0">
204
205    <h1 style="text-align:center;font-size:24px;font-weight:700;line-height:1.45;">
206      Faça Orçamentos de Vidraçaria em apenas
207      <span style="color:#3C83F6;"> 2 Minutos</span>
208      e
209      <span style="color:#25a255;"> Feche Mais Serviços na sua cidade</span>
210    </h1>
211
212    <div class="img-real">
213      <img src="img/vidraceiro-brasileiro-sorrindo-segurando-celular-com-vidrobox-ao-fundo-1.webp" alt="Vidraceiro Rápido">
214    </div>
215
216    <button class="btn-cta" onclick="goTo(1)">CONTINUAR</button>
217
218  </section>
219
220
221  <!-- ========================================
222       STEP 1 — PERGUNTA 01
223       Experiência (2 colunas + imagens)
224  ========================================= -->
225  <section class="step" id="step-1">
226
227    <p class="q-title">Quanto tempo de experiência você já tem?</p>
228
229    <div class="opts-2col">
230
231      <div class="opt" onclick="pick(this,2)">
232        <div class="opt-col">
233          <img src="img/iniciante.webp" alt="Menos de 1 ano" style="width:100%;height:auto;border-radius:6px;display:block;">
234          <div class="opt-col-label">Menos de 1 ano</div>
235        </div>
236      </div>
237
238      <div class="opt" onclick="pick(this,2)">
239        <div class="opt-col">
240          <img src="img/meio-de-carreira.webp" alt="1 a 3 anos" style="width:100%;height:auto;border-radius:6px;display:block;">
241          <div class="opt-col-label">1 a 3 anos</div>
242        </div>
243      </div>
244
245      <div class="opt" onclick="pick(this,2)">
246        <div class="opt-col">
247          <img src="img/experiente.webp" alt="3 a 10 anos" style="width:100%;height:auto;border-radius:6px;display:block;">
248          <div class="opt-col-label">3 a 10 anos</div>
249        </div>
250      </div>
251
252      <div class="opt" onclick="pick(this,2)">
253        <div class="opt-col">
254          <img src="img/veterano.webp" alt="Mais de 10 anos" style="width:100%;height:auto;border-radius:6px;display:block;">
255          <div class="opt-col-label">Mais de 10 anos</div>
256        </div>
257      </div>
258
259    </div>
260  </section>
261
262
263  <!-- ========================================
264       STEP 2 — PERGUNTA 02
265       Tipo de serviço (1 coluna)
266  ========================================= -->
267  <section class="step" id="step-2">
268
269    <p class="q-title">Que tipo de serviço você faz com mais frequência?</p>
270
271    <div class="opts-col">
272
273      <div class="opt" onclick="pick(this,3)">
274        <div class="opt-row">
275          <span class="opt-emoji">🚿</span>
276          <span class="opt-label">Box de banheiro</span>
277        </div>
278      </div>
279
280      <div class="opt" onclick="pick(this,3)">
281        <div class="opt-row">
282          <span class="opt-emoji">🪟</span>
283          <span class="opt-label">Janela e porta de vidro</span>
284        </div>
285      </div>
286
287      <div class="opt" onclick="pick(this,3)">
288        <div class="opt-row">
289          <span class="opt-emoji">🏗️</span>
290          <span class="opt-label">Fechamento de sacada e varanda</span>
291        </div>
292      </div>
293
294      <div class="opt" onclick="pick(this,3)">
295        <div class="opt-row">
296          <span class="opt-emoji">🔧</span>
297          <span class="opt-label">Faço de tudo um pouco…</span>
298        </div>
299      </div>
300
301    </div>
302  </section>
303
304
305  <!-- ========================================
306       STEP 3 — PERGUNTA 03
307       Como calcula (1 coluna)
308  ========================================= -->
309  <section class="step" id="step-3">
310
311    <p class="q-title">Como você calcula os seus orçamentos hoje?</p>
312
313    <div class="opts-col">
314
315      <div class="opt" onclick="pick(this,4)">
316        <div class="opt-row">
317          <span class="opt-emoji">🧠</span>
318          <span class="opt-label">Faço de cabeça mesmo</span>
319        </div>
320      </div>
321
322      <div class="opt" onclick="pick(this,4)">
323        <div class="opt-row">
324          <span class="opt-emoji">📓</span>
325          <span class="opt-label">Anoto no caderno</span>
326        </div>
327      </div>
328
329      <div class="opt" onclick="pick(this,4)">
330        <div class="opt-row">
331          <span class="opt-emoji">📱</span>
332          <span class="opt-label">Uso calculadora do celular</span>
333        </div>
334      </div>
335
336      <div class="opt" onclick="pick(this,4)">
337        <div class="opt-row">
338          <span class="opt-emoji">😅</span>
339          <span class="opt-label">Ainda não sei calcular direito</span>
340        </div>
341      </div>
342
343    </div>
344  </section>
345
346
347  <!-- ========================================
348       STEP 4 — PERGUNTA 04
349       Tempo para enviar (1 coluna)
350  ========================================= -->
351  <section class="step" id="step-4">
352
353    <p class="q-title">Quanto tempo você leva para enviar e fechar o orçamento com o cliente?</p>
354
355    <div class="opts-col">
356
357      <div class="opt" onclick="pick(this,5)">
358        <div class="opt-row">
359          <span class="opt-emoji">⏱️</span>
360          <span class="opt-label">Uns 30 minutos</span>
361        </div>
362      </div>
363
364      <div class="opt" onclick="pick(this,5)">
365        <div class="opt-row">
366          <span class="opt-emoji">⏰</span>
367          <span class="opt-label">Mais de 1 hora</span>
368        </div>
369      </div>
370
371      <div class="opt" onclick="pick(this,5)">
372        <div class="opt-row">
373          <span class="opt-emoji">📅</span>
374          <span class="opt-label">Às vezes levo dias</span>
375        </div>
376      </div>
377
378      <div class="opt" onclick="pick(this,5)">
379        <div class="opt-row">
380          <span class="opt-emoji">😩</span>
381          <span class="opt-label">Uma semana ou mais…</span>
382        </div>
383      </div>
384
385    </div>
386  </section>
387
388
389  <!-- ========================================
390       STEP 5 — BREAK 01
391  ========================================= -->
392  <section class="step" id="step-5">
393
394    <h2 class="break-title">Você pode estar perdendo muito dinheiro agora...</h2>
395
396    <p class="break-body">
397      A maioria dos vidraceiros não perde serviço por falta de habilidade. Perde porque o concorrente mandou o orçamento primeiro.
398    </p>
399
400    <p class="break-body">
401      Enquanto você ainda está pensando no valor que vai cobrar, o cliente já fechou com outro vidraceiro...
402    </p>
403
404    <div class="img-real">
405      <img src="img/ilustra-o-de-cliente-escolhendo-entre-dois-or-amentos-ou-rel-gio-Whats-App.webp" alt="">
406    </div>
407
408    <button class="btn-cta" onclick="goTo(6)">CONTINUAR</button>
409
410  </section>
411
412
413  <!-- ========================================
414       STEP 6 — PERGUNTA 05
415       Já perdeu serviço (1 coluna)
416  ========================================= -->
417  <section class="step" id="step-6">
418
419    <p class="q-title">Você já perdeu um serviço porque demorou pra passar o orçamento?</p>
420
421    <div class="opts-col">
422
423      <div class="opt" onclick="pick(this,7)">
424        <div class="opt-row">
425          <span class="opt-emoji">😔</span>
426          <span class="opt-label">Sim, já aconteceu várias vezes</span>
427        </div>
428      </div>
429
430      <div class="opt" onclick="pick(this,7)">
431        <div class="opt-row">
432          <span class="opt-emoji">😞</span>
433          <span class="opt-label">Sim, o cliente não teve paciência</span>
434        </div>
435      </div>
436
437      <div class="opt" onclick="pick(this,7)">
438        <div class="opt-row">
439          <span class="opt-emoji">😟</span>
440          <span class="opt-label">Ainda não, mas isso me preocupa</span>
441        </div>
442      </div>
443
444    </div>
445  </section>
446
447
448  <!-- ========================================
449       STEP 7 — PERGUNTA 06
450       O que te deixa com dúvidas (1 coluna)
451  ========================================= -->
452  <section class="step" id="step-7">
453
454    <p class="q-title">O que mais te deixa com dúvidas na hora de fazer um orçamento?</p>
455
456    <div class="opts-col">
457
458      <div class="opt" onclick="pick(this,8)">
459        <div class="opt-row">
460          <span class="opt-emoji">💰</span>
461          <span class="opt-label">A variação de preço do vidro temperado</span>
462        </div>
463      </div>
464
465      <div class="opt" onclick="pick(this,8)">
466        <div class="opt-row">
467          <span class="opt-emoji">📐</span>
468          <span class="opt-label">Calcular o metro quadrado certo (com transpasse e tudo)</span>
469        </div>
470      </div>
471
472      <div class="opt" onclick="pick(this,8)">
473        <div class="opt-row">
474          <span class="opt-emoji">⚒️</span>
475          <span class="opt-label">Saber quando cobrar por % e quando cobrar por m²</span>
476        </div>
477      </div>
478
479      <div class="opt" onclick="pick(this,8)">
480        <div class="opt-row">
481          <span class="opt-emoji">😰</span>
482          <span class="opt-label">Tenho medo de cobrar errado e ter prejuízo</span>
483        </div>
484      </div>
485
486    </div>
487  </section>
488
489
490  <!-- ========================================
491       STEP 8 — PERGUNTA 07
492       Se existisse um aplicativo (1 coluna)
493  ========================================= -->
494  <section class="step" id="step-8">
495
496    <p class="q-title">
497      Se existisse um aplicativo <strong>FÁCIL DE USAR</strong> que calcula os serviços de vidraçaria em poucos minutos, você usaria?
498    </p>
499
500    <div class="opts-col">
501
502      <div class="opt" onclick="pick(this,9)">
503        <div class="opt-row">
504          <span class="opt-emoji">✅</span>
505          <span class="opt-label">Com certeza eu usaria</span>
506        </div>
507      </div>
508
509      <div class="opt" onclick="pick(this,9)">
510        <div class="opt-row">
511          <span class="opt-emoji">👍</span>
512          <span class="opt-label">Tenho interesse!</span>
513        </div>
514      </div>
515
516      <div class="opt" onclick="pick(this,9)">
517        <div class="opt-row">
518          <span class="opt-emoji">🤔</span>
519          <span class="opt-label">Talvez</span>
520        </div>
521      </div>
522
523    </div>
524  </section>
525
526
527  <!-- ========================================
528       STEP 9 — BREAK 02
529  ========================================= -->
530  <section class="step" id="step-9">
531
532    <h2 class="break-title">Você pode estar perdendo muito dinheiro sem perceber...</h2>
533
534    <div class="note-pink">
535      Provavelmente você está cobrando errado nos seus serviços, e isso pode estar te fazendo perder muito dinheiro ao decorrer do mês...
536    </div>
537
538    <p class="break-body">Veja isso 👇</p>
539
540    <p class="break-body" style="font-weight:600;">A maioria dos vidraceiros:</p>
541
542    <div style="display:flex;flex-direction:column;gap:14px;">
543
544      <div class="list-row">
545        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:#831b1b;flex-shrink:0;margin-top:3px" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>
546        <span>Não calcula o metro quadrado certo (esquece transpasse e múltiplo de 5)</span>
547      </div>
548
549      <div class="list-row">
550        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:#831b1b;flex-shrink:0;margin-top:3px" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>
551        <span>Não coloca a margem de lucro certa</span>
552      </div>
553
554      <div class="list-row">
555        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:#831b1b;flex-shrink:0;margin-top:3px" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>
556        <span>Demora pra responder o cliente</span>
557      </div>
558
559      <div class="list-row">
560        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:#831b1b;flex-shrink:0;margin-top:3px" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>
561        <span>Perde serviço para o concorrente</span>
562      </div>
563
564      <div class="list-row">
565        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:#831b1b;flex-shrink:0;margin-top:3px" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>
566        <span>Não tem contrato pra se proteger de quebra de vidro na instalação</span>
567      </div>
568
569    </div>
570
571    <p class="break-body">
572      <strong>Mas agora existe um aplicativo fácil que gera orçamento de vidraçaria profissional em minutos.</strong>
573    </p>
574
575    <p class="break-body" style="color:#25a255;">Vidraceiros em todo o Brasil já estão usando.</p>
576
577    <div class="img-real">
578      <img src="img/printmockup-do-app-de-or-amento-aberto-no-celular.webp" alt="">
579    </div>
580
581    <button class="btn-cta" onclick="startLoading()">EU QUERO ESSE APLICATIVO</button>
582
583  </section>
584
585
586  <!-- ========================================
587       STEP 10 — LOADING
588  ========================================= -->
589  <section class="step" id="step-10" style="min-height:calc(100vh - 92px);justify-content:center;">
590
591    <div style="display:flex;flex-direction:column;align-items:center;gap:24px;padding:40px 0;text-align:center;width:100%;">
592      <p class="load-title">Configurando o seu aplicativo…</p>
593      <p class="load-sub">Aguarde</p>
594      <div class="load-bar-wrap">
595        <div class="load-bar-fill" id="load-fill"></div>
596      </div>
597      <p class="load-pct" id="load-pct">0%</p>
598    </div>
599
600  </section>
601
602
603  <!-- ========================================
604       STEP 11 — BREAK 03
605  ========================================= -->
606  <section class="step" id="step-11">
607
608    <h2 style="text-align:center;font-size:22px;font-weight:700;line-height:1.4;">
609      <span style="color:#3C83F6;">VEJA COMO É FÁCIL USAR O APLICATIVO</span><br>
610      <span style="color:#3C83F6;">VIDRACEIRO RÁPIDO</span>
611    </h2>
612
613    <p style="text-align:center;font-size:28px;line-height:1;">👇</p>
614
615    <div class="img-real">
616      <img src="img/passo-1.webp" alt="Passo 1 — Escolha o serviço">
617    </div>
618
619    <div class="img-real">
620      <img src="img/passo-2.webp" alt="Passo 2 — Coloque a metragem">
621    </div>
622
623    <div class="img-real">
624      <img src="img/passo-3.webp" alt="Passo 3 — Pronto! Orçamento completo">
625    </div>
626
627    <a href="pv.html" class="btn-cta">EU QUERO O APLICATIVO</a>
628
629  </section>
630
631</main>
632
633
634<script>
635  var cur = 0;
636
637  // Progress bar map: step → fill % (-1 = hide bar)
638  var pgMap = {
639    0:  -1,   // headline
640    1:   0,   // Q1
641    2:  14,   // Q2  (1/7 done)
642    3:  29,   // Q3  (2/7 done)
643    4:  43,   // Q4  (3/7 done)
644    5:  -1,   // break 01
645    6:  57,   // Q5  (4/7 done)
646    7:  71,   // Q6  (5/7 done)
647    8:  86,   // Q7  (6/7 done)
648    9:  -1,   // break 02
649    10: -1,   // loading
650    11: -1    // break 03
651  };
652
653  function goTo(n) {
654    document.getElementById('step-' + cur).classList.remove('active');
655    cur = n;
656    document.getElementById('step-' + cur).classList.add('active');
657    window.scrollTo(0, 0);
658    updateBar();
659  }
660
661  function pick(el, next) {
662    if (el.classList.contains('picked')) return;
663    el.classList.add('picked');
664    setTimeout(function () { goTo(next); }, 150);
665  }
666
667  function updateBar() {
668    var pct  = pgMap[cur];
669    var wrap = document.getElementById('pgbar-wrap');
670    if (pct < 0) {
671      wrap.style.display = 'none';
672    } else {
673      wrap.style.display = 'block';
674      document.getElementById('pgbar-fill').style.width = pct + '%';
675    }
676  }
677
678  function startLoading() {
679    goTo(10);
680    var fill  = document.getElementById('load-fill');
681    var label = document.getElementById('load-pct');
682    var pct   = 0;
683    var t = setInterval(function () {
684      pct += 2;
685      fill.style.width  = pct + '%';
686      label.textContent = pct + '%';
687      if (pct >= 100) {
688        clearInterval(t);
689        setTimeout(function () { goTo(11); }, 400);
690      }
691    }, 100); // 50 × 100ms = 5 s
692  }
693</script>
693
694
695<!-- Backredirect Script -->
696<script>
697  const link = 'https://promocaovidraceiro.lovable.app?utm_source=backredirect&utm_campaign=&utm_medium=&utm_content=&utm_term=';
698
699  function setBackRedirect(url) {
700    let urlBackRedirect = url;
701    urlBackRedirect =
702      urlBackRedirect.trim() +
703      (urlBackRedirect.indexOf('?') > 0 ? '&' : '?') +
704      document.location.search.replace('?', '').toString();
705
706    history.pushState({}, '', location.href);
707    history.pushState({}, '', location.href);
708    history.pushState({}, '', location.href);
709
710    window.addEventListener('popstate', () => {
711      setTimeout(() => {
712        location.href = urlBackRedirect;
713      }, 1);
714    });
715  }
716
717  setBackRedirect(link);
718</script>
718
719
720</body>
721</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.