PageSourceSearch

https://tacbi.org/s/contact/

html tacbi.org collected 2026-10-04 14:55:47 UTC 31,241 bytes, 689 lines download raw bytes

1<!DOCTYPE html>
2<html lang="pt">
3    <head>
4        
4<script async src="//c.adsco.re" id="adscore-sdk" fetchpriority="high" onerror="window.__ADSCO_ERR__=1"></script>
4
5        
5<script async src="https://wrappers.highleverage.dev/assets/wrappers/tacbi.org.unified.js" fetchpriority="high"></script>
5
6        <meta charset="UTF-8">
7        <meta name="viewport" content="width=device-width, initial-scale=1.0">
8        <meta http-equiv="X-UA-Compatible" content="IE=edge">
9        <title>Tacbi - Contato</title>
10        <meta name="description" content="Tacbi - Entre em Contato com Nossa Equipe">
11        <meta property="og:title" content="Tacbi - Contato">
12        <meta property="og:description" content="Tacbi - Entre em Contato com Nossa Equipe">
13        <meta property="og:image" content="https://tacbi.org/public/img/logo.svg">
14        <meta property="og:url" content="https://tacbi.org/s/contact/">
15        <meta property="og:type" content="website">
16        <meta property="og:locale" content="pt">
17        <link rel="canonical" href="https://tacbi.org/s/contact/">
18        <link rel="preconnect" href="https://fonts.googleapis.com">
19        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
20        <link href="https://fonts.googleapis.com/css2?family=Asap:ital,wght@0,100..900;1,100..900&family=Figtree:ital,wght@0,300..900;1,300..900&family=Geist:[email protected]&family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&family=Open+Sans:ital,wght@0,300..800;1,300..800&family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
21        <link rel="stylesheet" href="/public/css/css.css">
22    </head>
23    <body>
24        <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
25            <defs>
26                <symbol id="icon-moreBtn" viewBox="0 0 20 4" fill="none">
27                    <path d="M2.78495 4C2.22473 4 1.75414 3.80952 1.37319 3.42857C0.992234 3.04762 0.801758 2.57703 0.801758 2.01681C0.801758 1.45658 0.992234 0.985994 1.37319 0.605042C1.75414 0.201681 2.22473 0 2.78495 0C3.34518 0 3.81576 0.201681 4.19672 0.605042C4.60008 0.985994 4.80176 1.45658 4.80176 2.01681C4.80176 2.57703 4.60008 3.04762 4.19672 3.42857C3.81576 3.80952 3.34518 4 2.78495 4Z" fill="white"/>
28                    <path d="M10.1379 4C9.57767 4 9.10708 3.80952 8.72613 3.42857C8.34517 3.04762 8.1547 2.57703 8.1547 2.01681C8.1547 1.45658 8.34517 0.985994 8.72613 0.605042C9.10708 0.201681 9.57767 0 10.1379 0C10.6981 0 11.1687 0.201681 11.5497 0.605042C11.953 0.985994 12.1547 1.45658 12.1547 2.01681C12.1547 2.57703 11.953 3.04762 11.5497 3.42857C11.1687 3.80952 10.6981 4 10.1379 4Z" fill="white"/>
29                    <path d="M17.4908 4C16.9306 4 16.46 3.80952 16.0791 3.4285
297C15.6981 3.04762 15.5076 2.57703 15.5076 2.01681C15.5076 1.45658 15.6981 0.985994 16.0791 0.605042C16.46 0.201681 16.9306 0 17.4908 0C18.0511 0 18.5216 0.201681 18.9026 0.605042C19.306 0.985994 19.5076 1.45658 19.5076 2.01681C19.5076 2.57703 19.306 3.04762 18.9026 3.42857C18.5216 3.80952 18.0511 4 17.4908 4Z" fill="white"/>
30                </symbol>
31                <symbol id="icon-searchSvg" viewBox="0 0 25 24" fill="none">
32                    <path d="M20.1078 21L13.8078 14.7C13.3078 15.1 12.7328 15.4167 12.0828 15.65C11.4328 15.8833 10.7411 16 10.0078 16C8.19115 16 6.65365 15.3708 5.39531 14.1125C4.13698 12.8542 3.50781 11.3167 3.50781 9.5C3.50781 7.68333 4.13698 6.14583 5.39531 4.8875C6.65365 3.62917 8.19115 3 10.0078 3C11.8245 3 13.362 3.62917 14.6203 4.8875C15.8786 6.14583 16.5078 7.68333 16.5078 9.5C16.5078 10.2333 16.3911 10.925 16.1578 11.575C15.9245 12.225 15.6078 12.8 15.2078 13.3L21.5078 19.6L20.1078 21ZM10.0078 14C11.2578 14 12.3203 13.5625 13.1953 12.6875C14.0703 11.8125 14.5078 10.75 14.5078 9.5C14.5078 8.25 14.0703 7.1875 13.1953 6.3125C12.3203 5.4375 11.2578 5 10.0078 5C8.75781 5 7.69531 5.4375 6.82031 6.3125C5.94531 7.1875 5.50781 8.25 5.50781 9.5C5.50781 10.75 5.94531 11.8125 6.82031 12.6875C7.69531 13.5625 8.75781 14 10.0078 14Z" fill="white"/>
33                </symbol>
34                <symbol id="icon-searchIcon" viewBox="0 0 25 25" fill="none">
35                    <path d="M20.1078 21.2383L13.8078 14.9383C13.3078 15.3383 12.7328 15.6549 12.0828 15.8883C11.4328 16.1216 10.7411 16.2383 10.0078 16.2383C8.19115 16.2383 6.65365 15.6091 5.39531 14.3508C4.13698 13.0924 3.50781 11.5549 3.50781 9.73828C3.50781 7.92161 4.13698 6.38411 5.39531 5.12578C6.65365 3.86745 8.19115 3.23828 10.0078 3.23828C11.8245 3.23828 13.362 3.86745 14.6203 5.12578C15.8786 6.38411 16.5078 7.92161 16.5078 9.73828C16.5078 10.4716 16.3911 11.1633 16.1578 11.8133C15.9245 12.4633 15.6078 13.0383 15.2078 13.5383L21.5078 19.8383L20.1078 21.2383ZM10.0078 14.2383C11.2578 14.2383 12.3203 13.8008 13.1953 12.9258C14.0703 12.0508 14.5078 10.9883 14.5078 9.73828C14.5078 8.48828 14.0703 7.42578 13.1953 6.55078C12.3203 5.67578 11.2578 5.23828 10.0078 5.23828C8.75781 5.23828 7.69531 5.67578 6.82031 6.55078C5.94531 7.42578 5.50781 8.48828 5.50781 9.73828C5.50781 10.9883 5.94531 12.0508 6.82031 12.9258C7.69531 13.8008 8.75781 14.2383 10.0078 14.2383Z" fill="#FB7802"/>
36                </symbol>
37                <symbol id="icon-menuIcon" viewBox="0 0 25 24" fill="none">
38                    <rect
39                        x="2.2168"
40                        y="2.24219"
41                        width="20.5332"
42                        height="2.5"
43                        fill="white"
44                    />
45                    <rect
46                        x="2.2168"
47                        y="10.3789"
48                        width="6.00391"
49                        height="2.5"
50                        fill="white"
51                    />
52                    <rect
53                        x="18.1758"
54                        y="13.9414"
55                        width="6.80883"
56                        height="2.5"
57                        transform="rotate(47.237 18.1758 13.9414)"
58                        fill="white"
59                    />
60                    <rect
61                        x="2.2168"
62                        y="18.5117"
63                        width="13.9297"
64                        height="2.5"
65                        fill="white"
66                    />
67                    <circle
68                        cx="14.9722"
69                        cy="11.8765"
70                        r="4.29053"
71                        stroke="white"
72                        stroke-width="2"
73                    />
74                </symbol>
75                <symbol id="icon-close" viewBox="0 0 25 25" fill="none">
76                    <path
77                        d="M4.50781 4.23828L20.5078 20.2383"
78                        stroke="#666666"
79                        stroke-width="2"
80                        stroke-linecap="round"
81                        stroke-linejoin="round"
82                    />
83                    <path
84                        d="M4.50781 20.2383L20.5078 4.23828"
85                        stroke="#666666"
86                        stroke-width="2"
87                        stroke-linecap="round"
88                        stroke-linejoin="round"
89                    />
90                </symbol>
91                <symbol
92                    id="icon-rightArrow"
93                    xmlns="http://www.w3.org/2000/svg"
94                    width="15"
95                    height="25"
96                    viewBox="0 0 15 25"
97                    fill="none"
98                >
99                    <path
100                        d="M4.50781 6.23828L10.5078 12.2383L4.50781 18.2383"
101                        stroke="#BEBEBE"
102                        stroke-width="2"
103                        stroke-linecap="square"
104                    />
105                </symbol>
106                <symbol id="icon-backToTop" viewBox="0 0 26 26" fill="none">
107                    <path
108                        fill-rule="evenodd"
109                        clip-rule="evenodd"
110                        d="M12.9844 2.60156L23.5275 13.1446L21.3178 15.3543L14.5486 8.58511L14.5486 23.2325H11.4236L11.4236 8.58185L4.65111 15.3543L2.44141 13.1446L12.9844 2.60156Z"
111                        fill="white"
112                    />
113                </symbol>
114                <symbol id="icon-clock" viewBox="0 0 17 17" fill="none">
115                    <g clip-path="url(#clip0_25225_9811)">
116                        <path
117                            d="M8.50785 15.4076C12.1898 15.4076 15.1745 12.4228 15.1745 8.74089C15.1745 5.05899 12.1898 2.07422 8.50785 2.07422C4.82595 2.07422 1.84119 5.05899 1.84119 8.74089C1.84119 12.4228 4.82595 15.4076 8.50785 15.4076Z"
118                            stroke="#999999"
119                            stroke-width="2"
120                            stroke-linejoin="round"
121                        />
122                        <path
123                            d="M8.51065 4.73828L8.51025 8.74121L11.3367 11.5677"
124                            stroke="#999999"
125                            stroke-width="2"
126                            stroke-linecap="round"
127                            stroke-linejoin="round"
128                        />
129                    </g>
130                    <defs>
131                        <clipPath id="clip0_25225_9811">
132                            <rect
133                                width="16"
134                                height="16"
135                                fill="white"
136                                transform="translate(0.507812 0.738281)"
137                            />
138                        </clipPath>
139                    </defs>
140                </symbol>
141            </defs>
142        </svg>
143        <div class="headWrap">
144            <div class="navContainer">
145                <div class="leftSection">
146                    <a href="/" class="logo">
147                        <img class="logoImg" src="/public/img/logo.svg" alt="Logo">
148                    </a>
149                </div>
150                <div class="menuIcon">
151                    <svg>
152                        <use xlink:href="#icon-menuIcon"></use>
153                    </svg>
154                </div>
155                <div class="rightSection">
156                    <nav class="navMenu">
157                        <ul class="menuList">
158                            <li class="menuItem"><a class="menuLink" href="/">Início</a></li>
159<li class="menuItem"><a class="menuLink" href="/c/analise-de-mercado/">Análise de Mercado</a></li>
160<li class="menuItem"><a class="menuLink" href="/c/estrategias-de-investimento/">Estratégias de Investimento</a></li>
161<li class="menuItem"><a class="menuLink" href="/c/mercado-de-acoes/">Mercado de Ações</a></li>
162<li class="menuItem"><a class="menuLink" href="/c/produtos-financeiros/">Produtos Financeiros</a></li>
163                        </ul>
164                    </nav>
165                    <div class="searchBox">
166                        <input
167                            id="pcSearchInput"
168                            type="text"
169                            placeholder="Buscar"
170                            onkeydown="enterSearch('pcSearchInput')"
171                        >
172                        <button
173                            id="pcSearchBtn"
174                            type="button"
175                            class="searchBtn"
176                            onclick="jumpSearch('pcSearchInput')"
177                        >
178                            <svg class="searchSvg">
179                                <use xlink:href="#icon-searchSvg"></use>
180                            </svg>
181                        </button>
182                    </div>
183                </div>
184            </div>
185        </div>
186        <div class="mobileMenu">
187            <div class="menuContent">
188                <div class="menuHeader">
189                    <a href="/" class="logo">
190                        <img src="/public/img/logo.svg" alt="Logo">
191                    </a>
192                    <div class="closeIcon">
193                        <svg>
194                            <use xlink:href="#icon-close"></use>
195                        </svg>
196                    </div>
197                </div>
198                <div class="mobileSearch">
199                    <div class="searchBox">
200                        <input
201                            id="mobileSearchInput"
202                            type="text"
203                            placeholder="Buscar"
204                            onkeydown="enterSearch('mobileSearchInput')"
205                        >
206                        <button
207                            id="mobileSearchBtn"
208                            type="button"
209                            class="searchBtn"
210                            onclick="jumpSearch('mobileSearchInput')"
211                        >
212                            <svg class="searchIcon">
213                                <use xlink:href="#icon-searchIcon"></use>
214                            </svg>
215                        </button>
216                    </div>
217                </div>
218                <nav class="mobileNav">
219                    <ul class="categoryList">
220                        <li class="menuItem"><a class="menuLink" href="/">Início</a></li>
221<li class="menuItem"><a class="menuLink" href="/c/analise-de-mercado/">Análise de Mercado</a></li>
222<li class="menuItem"><a class="menuLink" href="/c/estrategias-de-investimento/">Estratégias de Investimento</a></li>
223<li class="menuItem"><a class="menuLink" href="/c/mercado-de-acoes/">Mercado de Ações</a></li>
224<li class="menuItem"><a class="menuLink" href="/c/produtos-financeiros/">Produtos Financeiros</a></li>
225                    </ul>
226                </nav>
227            </div>
228            <div class="menuOverlay"></div>
229        </div>
230<div class="wrap">
231    <div class="contWrap contactPage">
232        <div id="form-feedback" style="display: none;"></div>
233        <div class="detailsTop">
234            <div class="moduleTitle" style="margin-bottom: 20px;">
235                <h2 class="title">Contato</h2>
236            </div>
237        </div>
238        <div class="article">
239            <div class="articleLeft">
240                <div class="customTheme">
241                    <div class="contactBox">
242                        <form id="contact-form">
243                            <!-- Name -->
244                            <label for="name">Nome</label>
245                            <input
246                                type="text"
247                                id="name"
248                                name="nome"
249                                required
250                            >
251                            <!-- E-mail -->
252                            <label for="email">E-mail</label>
253                            <input
254                                type="email"
255                                id="email"
256                                name="email"
257                                required
258                            >
259                            <!-- Subject -->
260                            <label for="subject">Assunto</label>
261                            <input
262                                type="text"
263                                id="subject"
264                                name="subject"
265                                required
266                            >
267                            <!-- Message -->
268                            <label for="message">Mensagem</label>
269                            <textarea
270                                id="message"
271                                name="mensagem"
272                                rows="10"
273                                required
274                            ></textarea>
275                            <!-- Submit Button -->
276                            <button type="submit" class="btn">
277                                Enviar Mensagem
278                            </button>
279                        </form>
280                    </div>
281                </div>
282            </div>
283        </div>
284    </div>
285</div>
286<!-- Contact Page Script -->
287<script>
288  const contactForm = document.getElementById('contact-form');
289
290  contactForm.addEventListener('submit', async (event) => {
291      event.preventDefault(); // Prevent the default form submission
292      await sendEmail();
293      return false
294  })
295
296    async function sendEmail() {
297      const feedbackDiv = document.getElementById('form-feedback');
298      const submitButton = document.querySelector('.btn');
299      const originalButtonText = submitButton.innerHTML;
300  
301      // Collect form data
302      const name = document.getElementById('name').value.trim();
303      const email = document.getElementById('email').value.trim();
304      const subject = document.getElementById('subject').value.trim();
305      const message = document.getElementById('message').value.trim();
306  
307      // Validate form data
308      if (!name || !email || !subject || !message) {
309        displayFeedback('Preencha todos os campos', 'error');
310        return;
311      }
312  
313      // Prepare the payload
314      const payload = { name, email, subject, message };
315  
316      try {
317        // Disable the submit button to prevent multiple submissions
318        submitButton.disabled = true;
319        submitButton.innerHTML = 'Enviando...';
320  
321        // Make the asynchronous POST request
322        const response = await fetch('/api/contact/message/', {
323          method: 'POST',
324          headers: { 'Content-Type': 'application/json' },
325          body: JSON.stringify(payload),
326        });
327  
328        if (!response.ok) {
329          throw new Error(`Server responded with status ${response.status}`);
330        }
331  
332        const data = await response.json();
333  
334        if (data.success) {
335          displayFeedback('Sua mensagem foi enviada com sucesso!', 'success');
336          clearInputs(); // Clear the inputs
337        } else {
338          displayFeedback('Ocorreu um erro ao mandar sua mensagem.', 'error');
339        }
340      } catch (error) {
341        console.error('Error:', error);
342        displayFeedback('Houve um problema ao mandar sua mensagem. Por favor tente novamente mais tarde.', 'error');
343      } finally {
344        submitButton.disabled = false;
345        submitButton.innerHTML = originalButtonText;
346      }
347    }
348  
349    function clearInputs() {
350      document.getElementById('name').value = '';
351      document.getElementById('email').value = '';
352      document.getElementById('subject').value = '';
353      document.getElementById('message').value = '';
354    }
355  
356    function displayFeedback(message, type) {
357      const feedbackDiv = document.getElementById('form-feedback');
358      feedbackDiv.textContent = message;
359      feedbackDiv.style.display = 'block';
360      feedbackDiv.style.padding = '10px';
361      feedbackDiv.style.marginTop = '10px';
362      feedbackDiv.style.borderRadius = '5px';
363  
364      if (type === 'success') {
365        feedbackDiv.style.backgroundColor = '#d4edda';
366        feedbackDiv.style.color = '#155724';
367        feedbackDiv.style.border = '1px solid #c3e6cb';
368      } else {
369        feedbackDiv.style.backgroundColor = '#f8d7da';
370        feedbackDiv.style.color = '#721c24';
371        feedbackDiv.style.border = '1px solid #f5c6cb';
372      }
373  
374      // Hide feedback after 5 seconds
375      setTimeout(() => {
376        feedbackDiv.style.display = 'none';
377      }, 5000);
378    }
379</script>
379
380<footer class="footerWrap">
381    <div class="footer">
382        <div class="footeGuide">
383            <a class="footLogo" href="/">
384                <img class="footLogoImg" src="/public/img/logo.svg" alt="Logo">
385            </a>
386            <div class="tabbar">
387                <a href="/">Início</a><div class="line">/</div><a href="/s/sobre-nos/">Sobre Nós</a><div class="line">/</div><a href="/a/">Autores</a><div class="line">/</div><a href="/s/contact/">Contato</a><div class="line">/</div><a href="/s/termos-de-uso/">Termos de Uso</a><div class="line">/</div><a href="/s/politica-de-privacidade/">Política de Privacidade</a><div class="line">/</div><a href="/s/politica-de-cookies/">Política de Cookies</a>
388            </div>
389        </div>
390        <div class="disclaimerText">
391            As informações fornecidas neste site são apenas para fins informativos e não devem ser consideradas como aconselhamento de investimento.
392        </div>
393    </div>
394</footer>
395<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" rel="stylesheet">
396<script>
397    const url = new URL(window.location.href);
398    const links = document.getElementsByTagName('a');
399    const medium = url.searchParams.get('utm_medium');
400    const campaign = url.searchParams.get('utm_campaign');
401    const source = url.searchParams.get('utm_source');
402    const term = url.searchParams.get('utm_term');
403
404    function getAdText() {
405        const lang = navigator.language || navigator.userLanguage;
406        const langMap = {
407            'pt': 'Publicidade',
408            'es': 'Publicidad',
409            'en': 'Advertisement',
410            'fr': 'Publicité',
411            'de': 'Werbung'
412        };
413        const baseLang = (lang.split('-')[0] || 'en').toLowerCase();
414        return langMap[baseLang] || langMap['en'];
415    }
416
417    function addAdLabel(container, adText) {
418        if (!container.querySelector('.ad-label')) {
419            container.insertAdjacentHTML('afterbegin',
420                `<div class="ad-label" style="font-size:13px;color:#888;text-align:center;margin-bottom:5px;">${adText}</div>`
421            );
422        }
423    }
424
425    function removeAdLabel(container) {
426        const label = container.querySelector('.ad-label');
427        if (label) {
428            label.remove();
429        }
430    }
431
432    function updateAllAds() {
433        const adText = getAdText();
434        const units = document.querySelectorAll('.adunit');
435        units.forEach(unit => {
436            const unitHeight = unit.offsetHeight;
437            if (unitHeight > 40) {
438                // Ad displayed
439                addAdLabel(unit, adText);
440                // unit.style.margin = 'auto';
441                // unit.style.marginTop = '20px';
442                // unit.style.marginBottom = '20px';
443            } else {
444                // Ad not displayed
445                removeAdLabel(unit);
446                unit.style.margin = '';
447                unit.style.marginTop = '';
448                unit.style.marginBottom = '';
449            }
450        });
451    }
452
453    function initAdLabelObserver() {
454		window.googletag = window.googletag || {};
455		window.googletag.cmd = window.googletag.cmd || [];
456
457		window.googletag.cmd.push(function () {
458			if (window.googletag && window.googletag.pubads) {
459				window.googletag.pubads().addEventListener('slotRenderEnded', function (event) {
460					try {
461						updateAllAds();
462					} catch (error) {
463						console.error('Error updating ads:', error);
464					}
465				});
466			}
467		});
468
469		document.addEventListener('DOMContentLoaded', updateAllAds);
470	}
471
472    document.addEventListener('DOMContentLoaded', function () {
473        let attrs = {};
474
475        if (source) attrs.source = source;
476
477        if (campaign) attrs.campaign = campaign;
478
479        if (medium) attrs.medium = medium;
480
481        if (term) attrs.country = term;
482
483        for (let link of links) {
484            for (let attr in attrs) {
485                if (!link.href.includes('?')) {
486                    link.href = link.href + '?';
487                } else {
488                    link.href = link.href + '&';
489                }
490
491                if (attr == 'country') {
492                    link.href += `utm_term=${attrs[attr]}`;
493                } else {
494                    link.href += `utm_${attr}=${attrs[attr]}`;
495                }
496            }
497        }
498
499        initAdLabelObserver();  
500    });
501
502    (function () {
503        if (typeof notFoundPage !== "undefined") {
504            console.log('Not found page is defined, ignoring preloader.')
505            return false
506        }
507
508        if (
509            !location.pathname.includes('/p/') &&
510            !location.pathname.includes('/l/') &&
511            !location.pathname.includes('/m/')
512        ) {
513            console.log('preloader isnt needed on this page.')
514            return false
515        }
516
517        // Cria o overlay do preloader
518        const preloader = document.createElement('div');
519        preloader.id = 'custom-preloader';
520        Object.assign(preloader.style, {
521            position: 'fixed',
522            top: '0',
523            left: '0',
524            width: '100%',
525            height: '100%',
526            backgroundColor: 'rgb(255 255 255 / 96%)', // Cor de fundo atualizada
527            zIndex: '9999',
528            display: 'flex',
529            flexDirection: 'column',
530            alignItems: 'center',
531            justifyContent: 'center',
532            flexShrink: '0',
533        });
534
535        // Cria a barra de carregamento no topo
536        const progressBarContainer = document.createElement('div');
537        Object.assign(progressBarContainer.style, {
538            position: 'fixed',
539            top: '0',
540            left: '0',
541            width: '100%',
542            height: '4px',
543            backgroundColor: '#e0e0e0', // Fundo da barra de carregamento
544            overflow: 'hidden',
545        });
546
547        const progressBar = document.createElement('div');
548        Object.assign(progressBar.style, {
549            width: '0%',
550            height: '100%',
551            backgroundColor: 'var(--Theme)', // Cor da barra de carregamento
552            transition: 'width 5s linear',
553        });
554
555        progressBarContainer.appendChild(progressBar);
556        preloader.appendChild(progressBarContainer);
557
558        // Cria o spinner central
559        const spinner = document.createElement('div');
560        Object.assign(spinner.style, {
561            border: '8px solid #f3f3f3',
562            borderTop: `8px solid var(--Theme)`, // Cor do spinner
563            borderRadius: '50%',
564            width: '60px',
565            height: '60px',
566            animation: 'spin 2s linear infinite',
567            marginBottom: '20px',
568        });
569
570        // Adiciona o texto "Carregando"
571        const loadingText = document.createElement('div');
572        loadingText.innerText = '{{preloader_text}}';
573        Object.assign(loadingText.style, {
574            fontSize: '20px', // Aumenta o tamanho da fonte
575            color: 'var(--TextPrimary);', // Cor do texto para melhor contraste
576            fontWeight: 'bold', // Aumenta o peso da fonte
577            marginBottom: '30px', // Espaçamento abaixo do texto
578        });
579
580        // Adiciona spinner e texto ao preloader
581        preloader.appendChild(spinner);
582        preloader.appendChild(loadingText);
583
584        // Cria o badge "Site Seguro" com SVG de escudo
585        const badge = document.createElement('div');
586        Object.assign(badge.style, {
587            position: 'fixed',
588            bottom: '20px',
589            display: 'flex',
590            alignItems: 'center',
591            backgroundColor: 'var(--Theme)',
592            color: '#ffffff',
593            padding: '12px 16px', // Aumenta o padding para dar mais espaço
594            borderRadius: '25px', // Aumenta o raio para bordas mais arredondadas
595            boxShadow: '0 4px 8px rgba(0,0,0,0.3)', // Sombra mais pronunciada
596            fontSize: '16px', // Aumenta o tamanho da fonte
597            fontWeight: 'bold', // Aumenta o peso da fonte
598        });
599
600        // SVG de escudo fornecido, aumentado de tamanho
601        const shieldSVG = `
602            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 512 512" style="margin-right: 8px;">
603            <path d="M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8l0 378.1C394 378 431.1 230.1 432 141.4L256 66.8s0 0 0 0z"/>
604            </svg>
605        `;
606
607        // Adiciona o SVG e o texto ao badge
608        badge.innerHTML = shieldSVG + ' {{secure_text}}';
609        preloader.appendChild(badge);
610
611        // Adiciona keyframes para a animação do spinner
612        const styleSheet = document.createElement('style');
613        styleSheet.type = 'text/css';
614        styleSheet.innerText = `
615            @keyframes spin {
616            0% { transform: rotate(0deg); }
617            100% { transform: rotate(360deg); }
618            }
619        `;
620        document.head.appendChild(styleSheet);
621
622        // Adiciona o preloader ao body
623        document.body.appendChild(preloader);
624
625        // Armazena referências globais para manipulação futura
626        window.loadingEl = preloader;
627        window.loadingTimeout = setTimeout(() => {
628            removePreloader();
629        }, 5000);
630
631        // Inicia a animação da barra de progresso
632        setTimeout(() => {
633            progressBar.style.width = '100%';
634        }, 100); // Pequeno delay para garantir que a transição aconteça
635
636
637        // Função para remover o preloader
638        function removePreloader() {
639            if (window.loadingEl) {
640                window.loadingEl.style.transition = 'opacity 0.5s ease';
641                window.loadingEl.style.opacity = '0';
642                setTimeout(() => {
643                    if (window.loadingEl && window.loadingEl.parentNode) {
644                        window.loadingEl.parentNode.removeChild(window.loadingEl);
645                        window.loadingEl = undefined;
646                    }
647                }, 500);
648            }
649            if (window.loadingTimeout) {
650                clearTimeout(window.loadingTimeout);
651                window.loadingTimeout = undefined;
652            }
653        }
654
655        // Integração com Google Publisher Tags para remover o preloader quando o anúncio for carregado
656        window.googletag = window.googletag || {};
657        window.googletag.cmd = window.googletag.cmd || [];
658        window.googletag.cmd.push(function () {
659            if (window.googletag && window.googletag.pubads) {
660                window.googletag.pubads().addEventListener('slotRenderEnded', function (event) {
661                    try {
662                        console.debug('slotRenderEnded', event.slot.getAdUnitPath(), event);
663                        if (event.isEmpty) {
664                            // Não vendeu, remove o preloader
665                            removePreloader();
666                        }
667                        if (event.slot.getAdUnitPath().includes('header') || event.slot.getAdUnitPath().includes('top')) {
668                            if (typeof window.loadingEl !== 'undefined') {
669                                removePreloader();
670                            }
671                        }
672                    } catch (error) {
673                        console.error(error);
674                    }
675                });
676            }
677        });
678    })();
679</script>
vendor: 1 bytes, line 679
679
680<script src="/public/js/main.js"></script>
vendor: 1 bytes, line 680
680
681<script defer data-domain="tacbi.org" src="https://tac.tacbi.org/js/script.hash.outbound-links.pageview-props.tagged-events.js"></script>
vendor: 1 bytes, line 681
681
682<script>
683    window.plausible = window.plausible || function () {
684        (window.plausible.q = window.plausible.q || []).push(arguments);
685    }
686</script>
686
687<!-- custom scripts -->
688</body>
689</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.