Help
RSS
API
Feed
Maltego
Contact
Domain > www.gincaneiros.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2014-09-24
187.17.98.4
(
ClassC
)
2025-10-16
177.55.111.8
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Thu, 16 Oct 2025 23:36:28 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveContent-Security-Policy: upgrade-insecure-requestsVary: X-Proxy-ProviderCache-Control: max-age0, no-cache, no-store, must-revalidateSet-Cookie: XSRF-TOKENeyJpdiI6ImR1QWdkT2VQUDhzaU54OHozNGFCaHc9PSIsInZhbHVlIjoiZytvT3pUUTFCY3ZCcVg1TjJpdHBXNVlqejJBSHBuN296UXE4MEt4YlhKSlhxUldiRVlJSG0wcW5xcFdQaEgrYjhRNk8valU0MURPcit2TXdpT05la1ZGVTBDaGVDOGdTOFp6YUlORHhqQ09iVm1UZ2tUTkR5YnVjQ1R3TEZEWTciLCJtYWMiOiJjNmYyZGNhZTk0YjA1NDU3MTkxNDQ5YWEwNmQ4NmIyZDIyZjAxMGI0ODc1N2RmMmUyZGJlMDM5OTU3Nzc4NjM2IiwidGFnIjoiIn0%3D; expiresFri, 17 Oct 2025 01:36:25 GMT; Max-Age7200; path/; samesitelaxSet-Cookie: gincaneiros_sessioneyJpdiI6Ilg3a2R1UzlsNXJycVFoc2dweS9RZlE9PSIsInZhbHVlIjoiM3ZnUEFHTDZKYVlhdDBOYmhaMnFLbldVRUZSTENaUmxvMC80Vmo2eFlESXQzaVhGVzhmWTFOVFl4WTk5cU5oKzgzbkZFNnJ4WmR5eGpYV3hJbllNdDNkYkljTmJzVHVzaDZ0dEsyOS82ZEczZHFvSDlHeUdSUndqRmt2bERMR3AiLCJtYWMiOiIzODBmNTUyYzA0ZjA2NWNhZjFkYjQ5MmY0ZTRlNzdkYzlkN2FlN2ZiYzQyNzU3MGUzZWNjMTFmYTg5NTVkNzhhIiwidGFnIjoiIn0%3D; expiresFri, 17 Oct 2025 01:36:25 GMT; Max-Age7200; path/; httponly; samesitelaxExpires: Wed, 11 Jan 1984 05:00:00 GMT !DOCTYPE html>html langen>head> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1> meta namecsrf-token contentA0Ukl9hmoY3P6Yf79QNIt32oSpIQcOLZSXCVN61G> title> Gincaneiros - Desafio do bem! /title> meta nametheme-color content#2563eb /> meta nameapple-mobile-web-app-capable contentyes> meta nameapple-mobile-web-app-status-bar-style contentblack-translucent> meta namemobile-web-app-capable contentyes> link relapple-touch-icon href/images/gincaneiros_logo.png> link relmanifest href/manifest.webmanifest?v2025-09-30-1 crossoriginuse-credentials> !-- Fonts --> link relpreconnect hrefhttps://fonts.bunny.net> link hrefhttps://fonts.bunny.net/css?familyinstrument-sans:400,500,600&displayswap relstylesheet /> !-- SweetAlert2 --> script srchttps://cdn.jsdelivr.net/npm/sweetalert2@11>/script> link relpreload asstyle hrefhttp://www.gincaneiros.com/build/assets/app-CMaFSfn6.css />link relpreload asstyle hrefhttp://www.gincaneiros.com/build/assets/game-3C4Ctgp2.css />link relmodulepreload hrefhttp://www.gincaneiros.com/build/assets/app-r9kI2XXW.js />link relmodulepreload hrefhttp://www.gincaneiros.com/build/assets/game-DRfbQrf-.js />link relstylesheet hrefhttp://www.gincaneiros.com/build/assets/app-CMaFSfn6.css />link relstylesheet hrefhttp://www.gincaneiros.com/build/assets/game-3C4Ctgp2.css />script typemodule srchttp://www.gincaneiros.com/build/assets/app-r9kI2XXW.js>/script>script typemodule srchttp://www.gincaneiros.com/build/assets/game-DRfbQrf-.js>/script> script>window.LaravelIsAuthenticated false;/script> script>window.APP_VAPID_KEY BHUoDgtR3BoWhnwPIHSsALfZvu10o8Ub0NrxvpD3b175hXHJ14bpZV7i61zxHtYIWCnWVb4Q_8D0G7q4-hAjm0k;/script>/head>body class font-sans antialiased min-h-screen flex flex-col relative bg-#0a0717 text-slate-100> !-- Background Gamificado Dark --> div classpointer-events-none fixed inset-0 -z-10 overflow-hidden idapp-bg-layer> div classabsolute inset-0 opacity-95 stylebackground:radial-gradient(circle at 22% 18%,#24134f 0%,#140b2e 55%,#0a0717 100%);>/div> !-- Decor grid --> div classabsolute inset-0 mix-blend-overlay opacity-0.07 bg-radial-gradient(circle_at_center,rgba(255,255,255,0.35)_0,transparent_60%)>/div> div classabsolute inset-0 bg-linear-gradient(115deg,rgba(0,255,199,0.15)_0%,rgba(0,102,255,0.05)_40%,rgba(255,0,199,0.12)_85%) opacity-30 animate-pulse>/div> /div> div classflex-1 flex flex-col> nav classflex items-center justify-between p-2 md:p-4 bg-white shadow-md z-50 relative> style> /* Realce suave quando há notificações não lidas */ #notif-bell.unread span#notif-bell-icon { animation: notifPulse 1.4s ease-in-out infinite; } @keyframes notifPulse { 0% { transform: scale(1); filter: drop-shadow(0 0 0 rgba(255,0,0,0.4)); } 50% { transform: scale(1.12); filter: drop-shadow(0 0 4px rgba(255,0,0,0.55)); } 100% { transform: scale(1); filter: drop-shadow(0 0 0 rgba(255,0,0,0.4)); } } /style> !-- Logo / Brand à esquerda --> div classflex items-center min-w-0> span classflex items-center gap-2 font-bold text-lg md:text-xl text-gray-800 whitespace-nowrap select-none> img src/images/gincaneiros_logo.png altGincaneiros classh-7 w-7 md:h-8 md:w-8 object-contain loadinglazy /> span classtracking-tight>Gincaneiros/span> /span> !-- Instalar (mobile only, visitante) - movido ao lado do logo --> a href# idmobile-install-link-guest classhidden md:hidden p-1 rounded-md hover:bg-gray-100 ml-1 onclickevent.preventDefault(); titleInstalar> img srchttps://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExazZwemNoMGRja3NwZ2RrYjBqMmR2ajJ2dnRkYW1zYTk2d2NhOG56ciZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/Iha8mghCOKWYONp31N/giphy.gif altInstalar classh-8 w-auto object-contain pointer-events-none select-none loadinglazy /> /a> /div> !-- Ações à direita (mobile + desktop) --> div classflex items-center gap-2 md:gap-4 ml-4> !-- MODO VISITANTE (mostrar ícones também no mobile) --> div classflex items-center gap-2> !-- Comentários (visitante, mobile only) --> button idpostBtn typebutton classmd:hidden p-1 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-400 hover:scale-1.05 active:scale-95 transition-transform aria-labelComentários titleComentários (C)> img srchttps://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExcDlqMjIxOXhsMjJtbTI0bXkyNzZtendqNDBsdWdscDVueWMyaW81aSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/RgtSwwGh0quPtE0qGg/giphy.gif altComentários classh-8 w-auto object-contain pointer-events-none select-none bg-gray-300 loadinglazy /> /button> a href# idcomo-jogar-btn onclickevent.preventDefault(); mostrarComoJogar() aria-labelComo Jogar titleComo Jogar classp-1 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-400 hover:scale-1.05 active:scale-95 transition-transform> img srchttps://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExeW11anQ4bHhtZ2dubjNidmIzbWZtazE2MGZnMWNyZXU1MXAwbzh6eiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/1UwHF7R67LzHi/giphy.gif altComo Jogar classh-8 w-auto object-contain pointer-events-none select-none loadinglazy /> /a> a hrefhttp://www.gincaneiros.com/login aria-labelEntrar titleEntrar classp-1 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-400 hover:scale-1.05 active:scale-95 transition-transform> img srchttps://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExNmtlZTVtbHRmbWM3Z2QwNjExeTFxbG03dGt5ZmN1emZmeTU1N3JrYiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/QRkrLyKVsZQL2Wk40J/giphy.gif altEntrar classh-12 w-auto object-contain pointer-events-none select-none loadinglazy /> /a> /div> /div> /nav> script> // Sem gatilho de instalação no brand: comportamento padrão restaurado /script> !-- Overlay / Offcanvas mobile menu (auth only) --> !-- Scripts globais para todos os usuários --> script> // Funções SweetAlert - funcionam para todos os usuários function mostrarComoJogar() { Swal.fire({ title: Como Jogar, html: ` div classtext-left> h4 classfont-bold mb-2>🎯 Objetivo do Jogo:/h4> p classmb-3>Adivinhe onde está apenas pela imagem do Street View./p> h4 classfont-bold mb-2>🎮 Como Jogar/h4> ul classlist-disc list-inside mb-3 space-y-1> li>Analise a imagem e busque por pistas/li> li>Clique em Start e marque o local no mapa/li> li>Confirme o Palpite, você tem 5 tentativas/li> li>Caso erre, leia a dica da distância e direção!/li> /ul> /div> `, icon: info, showDenyButton: true, confirmButtonText: Entendi!, denyButtonText: Quem Somos, confirmButtonColor: #2563eb, denyButtonColor: #6b7280, // gray-500 width: 600px }).then((result)>{ if(result.isDenied){ mostrarSobreJogo(); } }); } function mostrarSobreJogo() { Swal.fire({ title: Sobre o Gincaneiros, html: ` div classtext-left> h4 classfont-bold mb-2>🌍 O que é o Gincaneiros?/h4> p classmb-3>É uma brincadeira de desafios para testar a memória afetiva dos seus amigos e parentes ou ainda mostrar para eles lugares que você já visitou ou quer visitar./p> h4 classfont-bold mb-2>🎯 Crie sua Gincana/h4> ul classlist-disc list-inside mb-3 space-y-1> li>strong>Infância:/strong> Desafie alguém se lembrar de determinado local/li> li>strong>Viagens:/strong> Desafie alguém adivinhar o local que você quer conhecer/li> /ul> h4 classfont-bold mb-2>🔍 Procure gicanas de amigos ou aleatórias./h4> h4 classfont-bold mb-2>br>📞 Contato (zap): 53 981056952/h4> /div> `, icon: question, confirmButtonText: Legal!, confirmButtonColor: #2563eb, width: 600px }); } /script> script> // Interação sino + avatar + polling (menu mobile removido) document.addEventListener(DOMContentLoaded, function() { const notifBtn document.getElementById(notif-bell); const notifDropdown document.getElementById(notif-dropdown); const notifList document.getElementById(notif-list); const notifBadge document.getElementById(notif-badge); const notifBellIcon document.getElementById(notif-bell-icon); const markAllBtn document.getElementById(notif-mark-all); const reloadBtn document.getElementById(notif-reload); const userBtn document.getElementById(user-menu-btn); const userDropdown document.getElementById(user-menu-dropdown); const desktopGincanasBtn document.getElementById(desktop-gincanas-btn); const desktopGincanasDd document.getElementById(desktop-gincanas-dd); const desktopRankingsBtn document.getElementById(desktop-rankings-btn); const desktopRankingsDd document.getElementById(desktop-rankings-dd); const desktopTerrBtn document.getElementById(desktop-territorios-btn); const desktopTerrDd document.getElementById(desktop-territorios-dd); // Mobile menu (auth only) const mobileMenuBtn document.getElementById(mobile-menu-btn); const mobileMenu document.getElementById(mobile-menu); const mobileMenuPanel document.getElementById(mobile-menu-panel); const mobileMenuClose document.getElementById(mobile-menu-close); function hide(el){ if(el && !el.classList.contains(hidden)) el.classList.add(hidden); } function toggle(el){ el.classList.toggle(hidden); } // Mantém o GIF configurado no HTML do sino; não sobrescrever com emoji. async function fetchNotifs(){ if(!window.LaravelIsAuthenticated) return; try { const r await fetch(/notifications); if(!r.ok) return; const data await r.json(); // novo formato: { unread_groups, gincanas: ... } const groups data.gincanas || ; const unreadGroups data.unread_groups || 0; if(unreadGroups>0){ notifBadge.textContent unreadGroups>99?99+:unreadGroups; notifBadge.classList.remove(hidden); notifBtn?.classList.add(unread); } else { notifBadge.classList.add(hidden); notifBtn?.classList.remove(unread); } notifList.innerHTML ; if(groups.length0){ notifList.innerHTML li classp-3 text-center text-xs text-gray-400>Sem notificações/li>; } else { groups.forEach(n > { const li document.createElement(li); li.className p-3 hover:bg-gray-50 cursor-pointer flex items-start justify-between gap-2; const countBadge n.unread_count>0 ? `span classml-2 inline-flex items-center justify-center min-w-20px h-20px px-1 rounded-full bg-red-600 text-white text-11px font-bold>${n.unread_count>99?99+:n.unread_count}/span>` : ; li.innerHTML ` div> div classfont-medium text-gray-800 mb-0.5>${n.gincana_nome||(Gincana # + n.gincana_id)}/div> div classtext-gray-600 text-sm>${(n.last_author_name||Alguém)}: ${(n.last_preview||).substring(0,120)}/div> div classtext-xs text-gray-400 mt-1>Atualizado: ${(n.updated_at? new Date(n.updated_at).toLocaleString() : )}/div> /div> div classflex items-center>${countBadge}/div>`; li.addEventListener(click, async () > { if(n.gincana_id){ // zera só essa gincana e navega try { await fetch(/notifications/read, {method:POST, headers:{Content-Type:application/json,X-CSRF-TOKEN:document.querySelector(metanamecsrf-token).content}, body: JSON.stringify({gincana_id:n.gincana_id})}); } catch(e){} window.location.href /gincana/ + n.gincana_id; return; } }); notifList.appendChild(li); }); } } catch(e){ /* silencia */ } } markAllBtn?.addEventListener(click, async (e)>{ e.preventDefault(); await fetch(/notifications/read,{method:POST, headers:{X-CSRF-TOKEN:document.querySelector(metanamecsrf-token).content}}); fetchNotifs(); }); reloadBtn?.addEventListener(click, (e)>{ e.preventDefault(); fetchNotifs(); }); document.addEventListener(click, (e) > { // Sino if(notifBtn && notifBtn.contains(e.target)) { toggle(notifDropdown); if(!notifDropdown.classList.contains(hidden)) fetchNotifs(); } else if(notifDropdown && !notifDropdown.contains(e.target) && !notifBtn.contains(e.target)) { hide(notifDropdown); } // User menu if(userBtn && userBtn.contains(e.target)) { toggle(userDropdown); } else if(userDropdown && !userDropdown.contains(e.target) && !userBtn.contains(e.target)) { hide(userDropdown); } // Desktop dropdowns (Gincanas) if (desktopGincanasBtn && desktopGincanasBtn.contains(e.target)) { e.preventDefault(); desktopGincanasDd?.classList.toggle(hidden); // Fecha o outro dropdown if (!desktopGincanasDd.classList.contains(hidden)) { desktopRankingsDd?.classList.add(hidden); desktopTerrDd?.classList.add(hidden); } } else if (desktopGincanasDd && !desktopGincanasDd.contains(e.target) && !desktopGincanasBtn?.contains(e.target)) { desktopGincanasDd.classList.add(hidden); } // Desktop dropdowns (Rankings) if (desktopRankingsBtn && desktopRankingsBtn.contains(e.target)) { e.preventDefault(); desktopRankingsDd?.classList.toggle(hidden); if (!desktopRankingsDd.classList.contains(hidden)) { desktopGincanasDd?.classList.add(hidden); desktopTerrDd?.classList.add(hidden); } } else if (desktopRankingsDd && !desktopRankingsDd.contains(e.target) && !desktopRankingsBtn?.contains(e.target)) { desktopRankingsDd.classList.add(hidden); } // Desktop dropdowns (Territórios) if (desktopTerrBtn && desktopTerrBtn.contains(e.target)) { e.preventDefault(); desktopTerrDd?.classList.toggle(hidden); if (!desktopTerrDd.classList.contains(hidden)) { desktopGincanasDd?.classList.add(hidden); desktopRankingsDd?.classList.add(hidden); } } else if (desktopTerrDd && !desktopTerrDd.contains(e.target) && !desktopTerrBtn?.contains(e.target)) { desktopTerrDd.classList.add(hidden); } }); // Mobile menu handlers function openMobileMenu(){ if(!mobileMenu || !mobileMenuPanel) return; mobileMenu.classList.remove(hidden); requestAnimationFrame(()> mobileMenuPanel.classList.remove(translate-x-full)); } function closeMobileMenu(){ if(!mobileMenu || !mobileMenuPanel) return; mobileMenuPanel.classList.add(translate-x-full); setTimeout(()> mobileMenu.classList.add(hidden), 300); } mobileMenuBtn?.addEventListener(click, openMobileMenu); mobileMenuClose?.addEventListener(click, closeMobileMenu); mobileMenu?.addEventListener(click, (e)>{ if(e.target mobileMenu) closeMobileMenu(); }); document.addEventListener(keydown, (e)>{ if(e.keyEscape) closeMobileMenu(); }); if(window.LaravelIsAuthenticated){ fetchNotifs(); setInterval(fetchNotifs, 15000); document.addEventListener(visibilitychange, () > { if(!document.hidden) fetchNotifs(); }); if (navigator.serviceWorker && navigator.serviceWorker.addEventListener) { navigator.serviceWorker.addEventListener(message, (event) > { if(event?.data?.type NOTIFICATIONS_UPDATED) { fetchNotifs(); } }); } } window.addEventListener(resize, ()>{ // Fecha dropdowns ao redimensionar desktopGincanasDd?.classList.add(hidden); desktopRankingsDd?.classList.add(hidden); desktopTerrDd?.classList.add(hidden); if(window.innerWidth > 768) closeMobileMenu(); }); // Exibir link Instalar somente quando o prompt estiver disponível function setupMobileInstallLink(linkEl){ if(!linkEl) return; linkEl.classList.add(hidden); function show(){ linkEl.classList.remove(hidden); } function clickHandler(e){ e.preventDefault(); if(window.__pwaDeferredPrompt){ window.__pwaDeferredPrompt.prompt(); window.__pwaDeferredPrompt.userChoice.then(()>{ window.__pwaDeferredPrompt null; linkEl.classList.add(hidden); }); } } linkEl.addEventListener(click, clickHandler); // Esconde se já estiver instalado (standalone) const isStandalone window.matchMedia((display-mode: standalone)).matches || window.navigator.standalone true || window.matchMedia((display-mode: minimal-ui)).matches; if (isStandalone) { linkEl.classList.add(hidden); return; } if(window.__pwaDeferredPrompt){ show(); } window.addEventListener(pwa:prompt-available, show, { once: true }); window.addEventListener(appinstalled, ()>{ linkEl.classList.add(hidden); }); } setupMobileInstallLink(document.getElementById(mobile-install-link)); setupMobileInstallLink(document.getElementById(mobile-install-link-guest)); }); /script> !-- Page Heading --> !-- Page Content --> main classflex-1> div classgame-container> !-- game-info removido: contagem agora só na barra inferior --> div classstreet-view-container> div idstreetview>/div> div classsv-hint aria-livepolite>↔️ Arraste para olhar ao redor/div> /div> !-- Controles do jogo --> div classgame-controls> style> /* Utilitário de acessibilidade */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Botão principal de ação */ .play-container { display: flex; justify-content: center; align-items: center; width: 100%; padding: 10px 0; } .play-btn { font-size: 1.25rem; padding: 12px 20px; border-radius: 10px; border: 0; background: linear-gradient(135deg, #2e7d32, #43a047); color: #fff; cursor: pointer; box-shadow: 0 6px 16px rgba(46, 125, 50, 0.35); transition: transform .08s ease, box-shadow .2s ease, opacity .2s ease; width: 100%; max-width: 240px; } .play-btn:hover { box-shadow: 0 8px 22px rgba(46, 125, 50, 0.45); } .play-btn:active { transform: translateY(1px); } /* Game info como chips/pílulas */ /* game-info removido */ /* Barra inferior: agora não fixa sobre o footer; usa layout normal + sticky leve */ .start-game-bar { position:sticky; bottom:0; background:rgba(255,255,255,.9); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); box-shadow:0 -2px 10px rgba(0,0,0,.12); padding:14px clamp(12px,3vw,32px) 18px; display:flex; justify-content:center; z-index:1100; border-top:1px solid rgba(0,0,0,.06); transition:transform .3s ease, opacity .25s ease; } .start-game-bar.hide-on-map { transform:translateY(110%); opacity:0; pointer-events:none; } /* Slider deve aparecer acima da barra */ /* Drawer lateral (direita -> esquerda) */ #mapSlider.map-slider { position:fixed; top:0; right:0; height:100vh; width:min(480px,92vw); background:#fff; transform:translateX(100%); transition:transform .4s cubic-bezier(.65,.05,.36,1); z-index:2200; box-shadow:-4px 0 22px -4px rgba(0,0,0,.25), -1px 0 4px rgba(0,0,0,.12); display:flex; flex-direction:column; border-top-left-radius:18px; border-bottom-left-radius:18px; } #mapSlider.active { transform:translateX(0); } .map-slider-header { border-top-left-radius:18px; } #mapBackdrop { position:fixed; inset:0; background:transparent; opacity:1; visibility:hidden; transition:none; z-index:2100; pointer-events:none; } #mapBackdrop.active { visibility:visible; } .start-game-inner { width:100%; max-width:620px; } #showMapBtn { width:100%; border:0; border-radius:14px; background:linear-gradient(135deg,#1b7f2e,#27a53f); color:#fff; font-size:1.05rem; font-weight:600; padding:14px 22px; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:10px; box-shadow:0 4px 14px rgba(0,0,0,.18),0 2px 4px rgba(0,0,0,.12); transition:.18s ease; } #showMapBtn:hover { box-shadow:0 6px 18px rgba(0,0,0,.22); background:linear-gradient(135deg,#1a7739,#2cb548); } #showMapBtn:active { transform:translateY(1px); } #showMapBtn:focus-visible { outline:3px solid rgba(255,255,255,.8); outline-offset:2px; } .start-game-hint { font-size:.7rem; text-align:center; margin-top:6px; letter-spacing:1px; text-transform:uppercase; color:#2d5544; font-weight:600; } /* Label após o número: sem uppercase para permitir singular/plural natural */ .attempts-label { font-size:.8rem; letter-spacing:1px; opacity:.9; font-weight:600; } .attempts-value { font-size:1.65rem; font-variant-numeric:tabular-nums; text-shadow:0 0 6px rgba(255,255,255,.35); } /* Animação removida (sem pulse / brightness) */ @media (max-width:640px){ .attempts-pill { padding:9px 18px; gap:10px; } .attempts-value { font-size:1.4rem; } } /* Hint inicial do Street View */ .street-view-container { position: relative; } .street-view-container > #streetview { position: absolute; inset: 0; width: 100%; height: 100%; } .sv-hint { position: absolute; left: 50%; top: 12px; transform: translateX(-50%); background: rgba(0,0,0,.65); color: #fff; padding: 6px 10px; border-radius: 999px; font-size: .9rem; box-shadow: 0 2px 8px rgba(0,0,0,.2); pointer-events: none; opacity: 1; animation: svHintFade .35s ease 10s forwards; z-index: 2001; } @keyframes svHintFade { to { opacity: 0; visibility: hidden; } } /* FAB para destacar o avatar */ .sv-fab { position: absolute; right: 16px; width: 48px; height: 48px; border-radius: 50%; border: 0; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg,#0d6efd,#4dabf7); color: #fff; box-shadow: 0 8px 18px rgba(13,110,253,.35); transition: transform .08s ease, box-shadow .2s ease, background .2s ease; z-index: 2002; } .sv-fab-chat { top: 50%; transform: translateY(-50%); } .sv-fab img { width: 36px; height: 36px; object-fit: contain; display: block; } .sv-fab:hover { box-shadow: 0 10px 24px rgba(229,46,113,.45); } .sv-fab:active { transform: translateY(1px); } .sv-fab:focus-visible { outline: 3px solid rgba(229,46,113,.55); outline-offset: 2px; } /* Animação sutil nas instruções do mapa */ .map-instructions-icon { display: inline-block; animation: bounce 1.2s ease-in-out infinite; } @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } } /* Destaque quando o confirmar estiver habilitado */ #confirmGuessBtn:disabled { opacity: .6; cursor: not-allowed; } #confirmGuessBtn:not(:disabled) { animation: pulse 1.4s ease-in-out infinite; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(76, 175, 80, .55); } 70% { box-shadow: 0 0 0 10px rgba(76, 175, 80, 0); } 100% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0); } } /* Popup e overlay mais atraentes */ .overlay { position: fixed; inset: 0; background: rgba(0,0,0,.45); opacity: 0; visibility: hidden; transition: .2s ease; z-index:2500; } .overlay.active { opacity: 1; visibility: visible; } .popup { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%) scale(.98); background: #fff; border-radius: 12px; width: min(92vw, 560px); padding: 22px; box-shadow: 0 18px 50px rgba(0,0,0,.18), 0 8px 18px rgba(0,0,0,.12); opacity: 0; visibility: hidden; transition: .22s ease; z-index:2550; } .popup.active { opacity: 1; visibility: visible; transform: translate(-50%, -50%) scale(1); } #popupTitle { font-size: 1.4rem; margin-bottom: 6px; font-weight: 700; color: #222; } #popupMessage { color: #4a5568; line-height: 1.5; } #continueBtn.btn { margin-top: 14px; background: #0d6efd; color: #fff; border: 0; border-radius: 10px; padding: 10px 16px; box-shadow: 0 6px 16px rgba(13,110,253,.25); } #continueBtn.btn:hover { background: #0b5ed7; } /* Header do slider melhorado */ .map-slider-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: linear-gradient(135deg,#5b2be1,#7b3fe7); color: #fff; border-top-left-radius: 12px; border-top-right-radius: 12px; } .map-slider-title { margin: 0; font-weight: 600; } .close-btn { display: inline-flex; align-items: center; gap: 6px; background: rgba(255,255,255,.1); color: #fff; border: 0; border-radius: 8px; padding: 6px 10px; cursor: pointer; transition: background .2s ease, transform .08s ease; } .close-btn:hover { background: rgba(255,255,255,.18); } .close-btn:active { transform: translateY(1px); } /* Focus-visible para acessibilidade */ .play-btn:focus-visible, #confirmGuessBtn:focus-visible, #closeMapBtn:focus-visible, #continueBtn:focus-visible { outline: 3px solid rgba(13,110,253,.55); outline-offset: 2px; } @media (max-width: 600px) { .game-controls > div { padding: 0 5px; } .play-btn { font-size: 1.1rem; padding: 10px 16px; } /* Altura responsiva agora é calculada via JS; nada fixo aqui */ .sv-fab { right: 12px; } .sv-fab-chat { top: 50%; transform: translateY(-50%); } } /* Mobile: slider ocupa toda a largura */ @media (max-width: 640px) { #mapSlider.map-slider { width:100vw; max-width:100vw; border-top-left-radius:0; border-bottom-left-radius:0; } /* Elevar mais a barra de JOGAR e ocupar toda a largura no mobile */ .start-game-bar { bottom: 28px; margin-left: 0; margin-right: 0; border-radius: 0; } /* Elevar o footer do slider (Confirmar Palpite) para não sumir sob a barra do navegador */ #mapSlider .slider-controls { position: sticky; bottom: 28px; z-index: 2300; } } /* Acolher áreas seguras e dar respiro adicional na base quando necessário */ @supports(padding: max(0px)) { .start-game-bar { padding-bottom: max(18px, calc(env(safe-area-inset-bottom) + 10px)); } @media (max-width: 640px) { #mapSlider .slider-controls { padding-bottom: max(14px, calc(env(safe-area-inset-bottom) + 8px)); } } } /* Quiz Mode Styles */ #mapSlider.quiz-mode { background: rgba(255,255,255,0.5); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } #mapSlider.quiz-mode .map-slider-header { background: linear-gradient(135deg,#7c3aed,#a855f7); } .quiz-wrap { padding: 8px 12px; } .quiz-wrap h4 { color:#111827; } .quiz-opt { display:block; text-align:left; border:0; border-radius:12px; padding:12px 14px; background: rgba(255,255,255,0.92); color:#111827; box-shadow: 0 6px 16px rgba(0,0,0,.08); transition: transform .05s ease, box-shadow .2s ease, background .2s ease; } .quiz-opt:hover { box-shadow: 0 8px 22px rgba(0,0,0,.12); } .quiz-opt:active { transform: translateY(1px); } .quiz-opt.has-guess { outline: 2px solid #8b5cf6; background: #f5f3ff; } /* Offer Mode Styles */ #mapSlider.offer-mode { background: #fff; } #mapSlider.offer-mode .map-slider-header { background: linear-gradient(135deg,#0ea5e9,#22c55e); } .offer-wrap { padding: 10px 12px; } .offer-card { border-radius: 14px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,.12); border:1px solid rgba(0,0,0,.06); background:#fff; } .offer-banner { position: relative; height: 180px; background:#f3f4f6; } .offer-banner img { width: 100%; height: 100%; object-fit: cover; display: block; } .offer-banner .badge { position: absolute; left: 10px; top: 10px; padding: 6px 10px; border-radius: 999px; font-size: .75rem; color:#fff; box-shadow:0 4px 12px rgba(0,0,0,.18); } .offer-banner .badge-primary { background: linear-gradient(135deg,#f59e0b,#ef4444); } .offer-banner .badge-secondary { left: auto; right: 10px; background: linear-gradient(135deg,#6366f1,#a855f7); } .offer-banner .discount-bubble { position:absolute; right:12px; bottom:12px; background:#16a34a; color:#fff; font-weight:800; border-radius:14px; padding:8px 10px; box-shadow:0 8px 18px rgba(22,163,74,.35); } .offer-body { padding: 12px 14px 8px; } .offer-city { font-size: .8rem; color:#475569; margin-bottom: 4px; } .offer-title { font-weight: 800; color:#0f172a; margin-bottom: 6px; } .offer-price { font-size: .85rem; color:#0f766e; margin-bottom: 6px; } .offer-meta { font-size: .8rem; color:#374151; } .offer-meta a { color:#1d4ed8; text-decoration: underline; } .offer-meta .hot { color:#ef4444; font-weight:700; margin-right:6px; } .offer-footer { padding: 10px 14px 14px; } .offer-buy-btn { display:block; text-align:center; width:100%; border:0; background:linear-gradient(135deg,#10b981,#22c55e); color:#fff; padding:12px 14px; border-radius:12px; font-weight:800; box-shadow:0 10px 22px rgba(16,185,129,.35); } /style> /div> !-- Slider do mapa --> div idmapBackdrop classmap-backdrop aria-hiddentrue>/div> div idmapSlider classmap-slider> !-- Header com título e botão fechar --> div classmap-slider-header> h3 classmap-slider-title>📍 Marque seu palpite/h3> button idcloseMapBtn classclose-btn aria-labelFechar> span>✕ Fechar/span> /button> /div> !-- Instruções --> div idmapInstructions classmap-instructions> span classmap-instructions-icon>👆/span> span>Clique no mapa onde você acha que está!/span> /div> !-- Container do mapa --> div idmap classmap-container>/div> !-- Footer com controles --> div classslider-controls> button idconfirmGuessBtn classbtn btn-success disabled> 🎯 Confirmar Palpite /button> /div> /div> !-- Popup de feedback --> div idoverlay classoverlay>/div> div idpopup classpopup> h3 idpopupTitle>Resultado/h3> p idpopupMessage>/p> button idcontinueBtn classbtn>Continuar/button> /div>/div>!-- Barra inferior para iniciar o jogo -->div classstart-game-bar roleregion aria-labelIniciar ação> div classstart-game-inner> button idshowMapBtn aria-labelIniciar jogo titleIniciar jogo>🎮 JOGAR/button> div classstart-game-hint aria-livepolite>Você tem span idattemptsHint>5/span> span idattemptsWord>jogadas/span>/div> /div>/div>script> // Passar os locais do backend para o JavaScript window.gameLocations {lat:-29.386128299999999313740772777236998081207275390625,lng:-50.874129699999997455961420200765132904052734375,name:Terra da Fantasia,gincana_id:64,contexto:Local onde s\u00e3o produzidos discos m\u00e1gicos que encantam todos que passam por esta cidade incr\u00edvel.,city:Gramado,state:RS,country:Brasil},{lat:48.86061099999999868259692448191344738006591796875,lng:2.33764400000000005519495971384458243846893310546875,name:O Sorriso Misterioso,gincana_id:65,contexto:Lar de uma dama com um sorriso enigm\u00e1tico e uma pir\u00e2mide de vidro em sua entrada. Milhares de obras de arte esperam por voc\u00ea em seus corredores.,city:Paris,state:Fran\u00e7a metropolitana,country:Fran\u00e7a},{lat:41.89021000000000327645466313697397708892822265625,lng:12.492231000000000307181835523806512355804443359375,name:Arena dos Gladiadores,gincana_id:66,contexto:Onde gladiadores um dia lutaram pela gl\u00f3ria, este anfiteatro monumental \u00e9 um s\u00edmbolo eterno de um antigo imp\u00e9rio.,city:Roma,state:L\u00e1cio,country:It\u00e1lia},{lat:40.43180799999999663896232959814369678497314453125,lng:116.5703740000000010468284017406404018402099609375,name:A Serpente de Pedra,gincana_id:67,contexto:Uma muralha que se estende por montanhas, constru\u00edda para proteger um imp\u00e9rio. \u00c9 a \u00fanica obra humana que dizem ser vis\u00edvel do espa\u00e7o... ou ser\u00e1 que n\u00e3o?,city:Pequim,state:Pequim,country:China},{lat:-22.912133999999998223984221112914383411407470703125,lng:-43.2301819999999992205630405806005001068115234375,name:O Templo do Futebol,gincana_id:68,contexto:Palco de finais de Copa do Mundo e casa de gigantes do futebol carioca. J\u00e1 fui o maior do mundo e minha alma ecoa com o som de mais de cem mil vozes.,city:Rio de Janeiro,state:RJ,country:Brasil},{lat:51.55602300000000326463123201392590999603271484375,lng:-0.279548999999999991938892662801663391292095184326171875,name:O Arco do Triunfo Esportivo,gincana_id:69,contexto:Sob um arco ic\u00f4nico, este est\u00e1dio \u00e9 a casa do futebol ingl\u00eas e palco de lend\u00e1rios shows de rock. Aqui, nascem lendas.,city:Londres,state:Inglaterra,country:Reino Unido},{lat:36.061835999999999557985574938356876373291015625,lng:-112.1090769999999992023731465451419353485107421875,name:O Abismo Colorido,gincana_id:70,contexto:Um desfiladeiro monumental esculpido por um rio ao longo de milh\u00f5es de anos. Suas camadas de rocha contam a hist\u00f3ria geol\u00f3gica do nosso planeta.,city:Coconino County,state:Arizona,country:Estados Unidos da Am\u00e9rica},{lat:35.39948299999999647980075678788125514984130859375,lng:138.7618029999999862411641515791416168212890625,name:O Vulc\u00e3o Adormecido,gincana_id:71,contexto:Sou um cone vulc\u00e2nico quase perfeito, um s\u00edmbolo sagrado e o pico mais alto de uma na\u00e7\u00e3o insular. Minha imagem \u00e9 refletida em lagos e na arte.,city:Yamashi,state:Prefeitura de Yamanashi,country:Jap\u00e3o},{lat:-25.695277999999998286284608184359967708587646484375,lng:-54.43666699999999991632648743689060211181640625,name:Garganta do Diabo,gincana_id:72,contexto:Um conjunto de centenas de cataratas que formam um espet\u00e1culo ensurdecedor na fronteira de duas na\u00e7\u00f5es. Minha for\u00e7a e beleza inspiraram lendas.,city:Porto Igua\u00e7u,state:Misiones,country:Argentina},{lat:33.81209199999999981400833348743617534637451171875,lng:-117.9189760000000006812115316279232501983642578125,name:O Lugar Mais Feliz da Terra,gincana_id:73,contexto:Onde contos de fadas se tornam realidade e um castelo ic\u00f4nico \u00e9 o portal para um mundo de fantasia, governado por um rato amig\u00e1vel.,city:Orlando,state:Fl\u00f3rida,country:E.U.A.},{lat:51.46380599999999816418494447134435176849365234375,lng:-0.650808000000000053120174925425089895725250244140625,name:Mundo em Blocos,gincana_id:74,contexto:Um universo constru\u00eddo com pequenos blocos coloridos, onde a criatividade n\u00e3o tem limites e drag\u00f5es, cidades e piratas s\u00e3o feitos de pl\u00e1stico.,city:Windsor,state:Inglaterra,country:Reino Unido},{lat:40.758003000000002202796167694032192230224609375,lng:-73.9854739999999964084054226987063884735107421875,name:A Encruzilhada do Mundo,gincana_id:75,contexto:Sou o cora\u00e7\u00e3o pulsante de uma cidade que nunca dorme, famoso por meus outdoors brilhantes, teatros e a celebra\u00e7\u00e3o de Ano Novo.,city:Nova Iorque,state:Nova Iorque,country:Estados Unidos da Am\u00e9rica},{lat:48.85837000000000074351191869936883449554443359375,lng:2.29448100000000021481127987499348819255828857421875,name:A Dama de Ferro,gincana_id:76,contexto:Fui constru\u00edda para uma Exposi\u00e7\u00e3o Universal e me tornei o s\u00edmbolo de uma capital mundialmente famosa pelo romance e pela arte. \u00c0 noite, eu brilho.,city:Paris,state:Fran\u00e7a metropolitana,country:Fran\u00e7a},{lat:51.5307990000000017971615307033061981201171875,lng:-0.1237810000000000021369572777985013090074062347412109375,name:Partida para a Magia,gincana_id:77,contexto:Em uma esta\u00e7\u00e3o de trem real, h\u00e1 um portal secreto para um mundo de magia. Procure por um carrinho de bagagem desaparecendo em uma parede de tijolos.,city:Londres,state:Inglaterra,country:Reino Unido},{lat:41.38178599999999818237483850680291652679443359375,lng:2.17158400000000018081891539623029530048370361328125,name:O Cora\u00e7\u00e3o Culin\u00e1rio,gincana_id:78,contexto:Um labirinto de cores, cheiros e sabores. Aqui, voc\u00ea encontra desde frutas ex\u00f3ticas a jam\u00f3n ib\u00e9rico, em um dos mercados mais famosos da Europa.,city:Barcelona,state:Catalunha,country:Espanha},{lat:35.66548499999999677356754546053707599639892578125,lng:139.77037000000001398802851326763629913330078125,name:O Reino do Atum,gincana_id:79,contexto:Embora o grande leil\u00e3o de atum tenha se mudado, minhas ruas ainda fervem com o melhor sushi, frutos do mar frescos e a agita\u00e7\u00e3o da culin\u00e1ria japonesa.,city:T\u00f3quio,state:T\u00f3quio,country:Jap\u00e3o},{lat:40.83609799999999978581399773247539997100830078125,lng:14.248324000000000211230144486762583255767822265625,name:O Ber\u00e7o da Rainha,gincana_id:80,contexto:Neste local, em 1889, uma pizza foi criada em homenagem a uma rainha, usando as cores da bandeira nacional. Hoje, \u00e9 a pizza mais famosa do mundo.,city:N\u00e1poles,state:Camp\u00e2nia,country:It\u00e1lia},{lat:51.53208500000000213958628592081367969512939453125,lng:-0.178263000000000004785505325344274751842021942138671875,name:A Travessia Lend\u00e1ria,gincana_id:81,contexto:Uma simples faixa de pedestres que se tornou um dos pontos tur\u00edsticos mais famosos do mundo gra\u00e7as a quatro rapazes de Liverpool e a capa de um de seus \u00e1lbuns.,city:Londres,state:Inglaterra,country:Reino Unido},{lat:34.101551000000000612999428994953632354736328125,lng:-118.3402099999999990131982485763728618621826171875,name:Cal\u00e7ada das Estrelas,gincana_id:82,contexto:Aqui, as estrelas n\u00e3o est\u00e3o no c\u00e9u, mas no ch\u00e3o. Caminhe sobre os nomes dos maiores \u00edcones do cinema, m\u00fasica e entretenimento.,city:Los Angeles,state:Calif\u00f3rnia,country:Estados Unidos da Am\u00e9rica},{lat:-23.56139999999999901092451182194054126739501953125,lng:-46.6563000000000016598278307355940341949462890625,name:O V\u00e3o Livre da Arte,gincana_id:83,contexto:Minha arquitetura \u00e9 um marco, com um imenso v\u00e3o livre de 74 metros. Flutuo sobre uma pra\u00e7a na avenida mais famosa da cidade, guardando tesouros da arte ocidental.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-22.909600000000001074340616469271481037139892578125,lng:-43.1766999999999967485564411617815494537353515625,name:Palco de Ouro,gincana_id:84,contexto:Inspirado na \u00d3pera de Paris, sou uma joia dourada no cora\u00e7\u00e3o da Cinel\u00e2ndia. Meus palcos j\u00e1 receberam os maiores nomes da \u00f3pera e do bal\u00e9 mundial.,city:Rio de Janeiro,state:Rio de Janeiro,country:Brasil},{lat:-12.9718999999999997640998117276467382907867431640625,lng:-38.50930000000000319460013997741043567657470703125,name:Cora\u00e7\u00e3o da Bahia,gincana_id:85,contexto:Minhas ruas de paralelep\u00edpedos e casar\u00f5es coloridos contam a hist\u00f3ria do Brasil. O som dos tambores ecoa em cada esquina, um convite para sentir a alma da primeira capital.,city:Salvador,state:Bahia,country:Brasil},{lat:-23.527499999999999857891452847979962825775146484375,lng:-46.67830000000000012505552149377763271331787109375,name:A Arena Multiuso,gincana_id:86,contexto:Nascido das cinzas de um antigo est\u00e1dio, hoje sou a casa de um alviverde imponente e palco para mega shows internacionais em uma das cidades mais populosas do mundo.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-29.974000000000000198951966012828052043914794921875,lng:-51.19460000000000121644916362129151821136474609375,name:Fortaleza Tricolor,gincana_id:87,contexto:Localizado na entrada de uma capital do sul, sou a casa de um tricolor imortal. Minha arquitetura moderna j\u00e1 foi palco de grandes conquistas e noites de Libertadores.,city:Porto Alegre,state:Rio Grande do Sul,country:Brasil},{lat:-23.545100000000001472244548494927585124969482421875,lng:-46.4739000000000004320099833421409130096435546875,name:A Casa do Povo,gincana_id:88,contexto:Fui constru\u00eddo para a abertura de uma Copa do Mundo. Minha estrutura impressiona e sou o caldeir\u00e3o de uma das maiores e mais fi\u00e9is torcidas do Brasil.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-2.571099999999999941024952931911684572696685791015625,lng:-42.82249999999999801048033987171947956085205078125,name:O Deserto de \u00c1guas,gincana_id:89,contexto:Pare\u00e7o um deserto, mas sou um campo de dunas de areia branca recheado de lagoas de \u00e1gua doce e cristalina. Um para\u00edso que se revela a cada esta\u00e7\u00e3o chuvosa.,city:Barreirinhas,state:Maranh\u00e3o,country:Brasil},{lat:-22.9491000000000013869794202037155628204345703125,lng:-43.15579999999999927240423858165740966796875,name:O Guardi\u00e3o da Ba\u00eda,gincana_id:90,contexto:Sou um monolito de granito que se ergue na entrada da Ba\u00eda de Guanabara. Um telef\u00e9rico, o bondinho, leva visitantes ao meu cume para uma vista deslumbrante.,city:Rio de Janeiro,state:Rio de Janeiro,country:Brasil},{lat:-25.4431000000000011596057447604835033416748046875,lng:-49.239699999999999135980033315718173980712890625,name:A Estufa de Cristal,gincana_id:91,contexto:Sou o cart\u00e3o postal de uma capital modelo. Minha estufa de tr\u00eas ab\u00f3badas, inspirada em pal\u00e1cios de cristal, abriga plantas da floresta atl\u00e2ntica em meio a um jardim de estilo franc\u00eas.,city:Curitiba,state:Paran\u00e1,country:Brasil},{lat:-26.799700000000001409716787748038768768310546875,lng:-48.6143000000000000682121026329696178436279296875,name:O Sonho do Cowboy,gincana_id:92,contexto:O maior parque tem\u00e1tico da Am\u00e9rica Latina, nascido do sonho de um cowboy. Aqui a adrenalina encontra a fantasia, com montanhas-russas, shows e um zool\u00f3gico.,city:Penha,state:Santa Catarina,country:Brasil},{lat:-23.649300000000000210320649784989655017852783203125,lng:-46.70219999999999771489456179551780223846435546875,name:A Turma do Bairro do Limoeiro,gincana_id:93,contexto:Dentro de um shopping, recrio o universo dos gibis mais famosos do Brasil. Aqui voc\u00ea pode encontrar uma menina dentu\u00e7a, seu amigo com planos infal\u00edveis e toda a sua turma.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-23.5441000000000002501110429875552654266357421875,lng:-46.6287999999999982492226990871131420135498046875,name:A Ci\u00eancia \u00e9 Divertida,gincana_id:94,contexto:Ocupo um antigo pal\u00e1cio e sou um museu onde \u00e9 proibido n\u00e3o tocar. Torno a ci\u00eancia divertida e interativa para crian\u00e7as e adultos, com se\u00e7\u00f5es sobre universo, vida e engenho.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-22.951899999999998414068613783456385135650634765625,lng:-43.21050000000000324007487506605684757232666015625,name:De Bra\u00e7os Abertos,gincana_id:95,contexto:Do alto de um morro, aben\u00e7oo uma cidade maravilhosa. Sou uma das novas sete maravilhas do mundo e o principal cart\u00e3o postal de todo o pa\u00eds.,city:Rio de Janeiro,state:Rio de Janeiro,country:Brasil},{lat:-23.56139999999999901092451182194054126739501953125,lng:-46.6563000000000016598278307355940341949462890625,name:O Cora\u00e7\u00e3o que Vira Lazer,gincana_id:96,contexto:Durante a semana sou o centro financeiro do pa\u00eds. Aos domingos, me fecho para os carros e me abro para as pessoas, a cultura e a arte.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-23.610499999999998266275724745355546474456787109375,lng:-46.6991000000000013869794202037155628204345703125,name:O X da Marginal,gincana_id:97,contexto:Sou um dos mais novos cart\u00f5es postais de uma grande metr\u00f3pole. Minhas duas pistas curvas se cruzam em um \u00fanico mastro em formato de X, iluminando o rio \u00e0 noite.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-23.54129999999999967030817060731351375579833984375,lng:-46.62930000000000063664629124104976654052734375,name:O Pal\u00e1cio do Sandu\u00edche,gincana_id:98,contexto:Famoso por meus vitrais e colunas imponentes. Aqui, a fartura \u00e9 lei, especialmente no famoso sandu\u00edche de mortadela e no pastel de bacalhau.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-22.90559999999999973852027324028313159942626953125,lng:-43.177199999999999135980033315718173980712890625,name:Caf\u00e9 com Hist\u00f3ria,gincana_id:99,contexto:Sou um peda\u00e7o da Belle \u00c9poque no centro de uma cidade agitada. Meus espelhos belgas j\u00e1 serviram presidentes e artistas. Um simples caf\u00e9 aqui \u00e9 uma viagem no tempo.,city:Rio de Janeiro,state:Rio de Janeiro,country:Brasil},{lat:-15.856899999999999550936990999616682529449462890625,lng:-48.9566999999999978854248183779418468475341796875,name:Sabor do Cerrado,gincana_id:100,contexto:Meu nome oficial \u00e9 Rua do Ros\u00e1rio, mas todos me conhecem pela divers\u00e3o. Sou uma rua de pedra em uma cidade hist\u00f3rica, cheia de bares e restaurantes que servem o melhor da culin\u00e1ria goiana.,city:Piren\u00f3polis,state:Goi\u00e1s,country:Brasil}; // Passar informação de autenticação para o JavaScript window.isAuthenticated false; // Quando esta tela for usada via rota de jogar, o controller injeta o id da gincana atual // Modo e dados de quiz (quando aplicável) — definir com defaults seguros window.gincanaModo null || null; // null > interpretado como mapa no JS window.gincanaQuiz null || null; // objeto ou null window.gincanaOffer null || null; // oferta vinculada (quiz_oferta) // Config de UI: esconder avatar no Street View e usar FAB de chat window.uiConfig { showAvatar: false }; // Sincronização via updateUI no game.js (sem game-info superior)/script> /main> footer classrelative bg-white border-t border-slate-200 z-10> div classpt-6 pb-5> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center md:text-left> div classflex flex-col md:flex-row md:items-center md:justify-between gap-4> div classtext-xs tracking-wide text-slate-600>© 2025 span classtext-slate-900 font-semibold>Gincaneiros/span>. Todos os direitos reservados./div> div classflex items-center justify-center gap-6 text-13px font-medium> a href# onclickevent.preventDefault(); mostrarSobreJogo() classtext-sky-600 hover:text-emerald-600 transition>Contate-nos./a> /div> /div> /div> /div>/footer> /div>script async defer srchttps://maps.googleapis.com/maps/api/js?keyAIzaSyBs7CC0DZvYKvAqQFvS1E8LnsgQPWRzi3M&callbackinitGame&librariesgeometry>/script>script> // Inicializa sempre (também em modo oferta) para termos Street View e slider reutilizável (function waitForGame(){ const apiReady typeof google ! undefined && google.maps; const fnReady typeof window.initGame function; if(apiReady && fnReady){ try { window.initGame(); } catch(e){ console.error(Falha ao iniciar jogo:, e); } return; } setTimeout(waitForGame, 60); })();/script>script> // Expor o prompt de instalação globalmente para outros componentes (ex: navbar) window.__pwaDeferredPrompt null; // Detecta Android/Chromium e guarda o evento para acionar depois via clique do usuário window.addEventListener(beforeinstallprompt, (e) > { e.preventDefault(); window.__pwaDeferredPrompt e; // Botão flutuante desativado por solicitação: manter oculto // Notifica outros componentes que o prompt está disponível window.dispatchEvent(new CustomEvent(pwa:prompt-available)); }); // Botão flutuante removido por solicitação; apenas brand/menu podem acionar a instalação // Detecta iOS e mostra instruções const isIOS /iphone|ipad|ipod/.test(window.navigator.userAgent.toLowerCase()); const isInStandalone (standalone in window.navigator) && window.navigator.standalone; if (isIOS && !isInStandalone) { Swal.fire({ icon: info, title: Instalar no iPhone, html: Para instalar, toque em strong>Compartilhar/strong> e escolha em>Adicionar à Tela de Início/em>., confirmButtonText: Entendi, confirmButtonColor: #2563eb }); }/script>script> // Ajuste dinâmico caso existam páginas legacy claras que definem body_class contendo bg-gray (function(){ const legacyLight document.body.className.match(/bg-gray/); if(legacyLight){ document.body.classList.add(text-slate-900); document.getElementById(app-bg-layer)?.classList.add(hidden); } })();/script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 16 Oct 2025 23:36:29 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveContent-Security-Policy: upgrade-insecure-requestsVary: X-Proxy-ProviderCache-Control: max-age0, no-cache, no-store, must-revalidateSet-Cookie: XSRF-TOKENeyJpdiI6InhuZDQ2M01zdWd2OHd3TGcwNWcvU3c9PSIsInZhbHVlIjoidnhscHdva3hUTWdWVzB5dUhpTDJvNEUxOGFFV1BHbW9kM1orT1VqcGt1MTU5TEVmUUE2dlFMdzgrMndvMWNFU0VkQWhJREV4WG1OMmRoNFdML1NjeVVBUFhyNUZPMndsNnZ4V1N5MjdQcVlnQkI3VzhMSWlZc000dHZqMVIzd1MiLCJtYWMiOiI4MTM0ZjA2ZWI2YjRjMWI5ZjNhOTM4NDVhMGU1YTM5NGFhOTIyNmE1ZTI4ODg5N2Y5ZjJlYTI2NThiMjU4NTgwIiwidGFnIjoiIn0%3D; expiresFri, 17 Oct 2025 01:36:26 GMT; Max-Age7200; path/; samesitelaxSet-Cookie: gincaneiros_sessioneyJpdiI6IkhVV1NGQTFMWEU4OVhNN3lWc20zbGc9PSIsInZhbHVlIjoiSmxSQmNiNURDZXpja2tOSWViaG5JRkhMWkQxeUpqKzhEQ2tIZEdmT1QvR1JhTFNqN09VaEJhZUxpdkdQVHVpaXVKQm5URENrbElkM2QrcmxEVEZHb2tNbmRaVXRnM3FPNWFOMmpiWGpIM0dJWnNsb1VzMndHVm5iSTBSb0xvWm4iLCJtYWMiOiIwMTdiMzFjOTZiNWExMWRhODE5NDBhMjBhMDlkNWJiZTRmM2UxZjYzZThiNmJkYmEzNjRiMTY4MzhiMTEzNzkxIiwidGFnIjoiIn0%3D; expiresFri, 17 Oct 2025 01:36:26 GMT; Max-Age7200; path/; httponly; samesitelaxExpires: Wed, 11 Jan 1984 05:00:00 GMT !DOCTYPE html>html langen>head> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1> meta namecsrf-token contentac0ZCmjiXvEcx062LIRV2Lpu9Ef6uQD3uoGSj1pC> title> Gincaneiros - Desafio do bem! /title> meta nametheme-color content#2563eb /> meta nameapple-mobile-web-app-capable contentyes> meta nameapple-mobile-web-app-status-bar-style contentblack-translucent> meta namemobile-web-app-capable contentyes> link relapple-touch-icon href/images/gincaneiros_logo.png> link relmanifest href/manifest.webmanifest?v2025-09-30-1 crossoriginuse-credentials> !-- Fonts --> link relpreconnect hrefhttps://fonts.bunny.net> link hrefhttps://fonts.bunny.net/css?familyinstrument-sans:400,500,600&displayswap relstylesheet /> !-- SweetAlert2 --> script srchttps://cdn.jsdelivr.net/npm/sweetalert2@11>/script> link relpreload asstyle hrefhttp://www.gincaneiros.com/build/assets/app-CMaFSfn6.css />link relpreload asstyle hrefhttp://www.gincaneiros.com/build/assets/game-3C4Ctgp2.css />link relmodulepreload hrefhttp://www.gincaneiros.com/build/assets/app-r9kI2XXW.js />link relmodulepreload hrefhttp://www.gincaneiros.com/build/assets/game-DRfbQrf-.js />link relstylesheet hrefhttp://www.gincaneiros.com/build/assets/app-CMaFSfn6.css />link relstylesheet hrefhttp://www.gincaneiros.com/build/assets/game-3C4Ctgp2.css />script typemodule srchttp://www.gincaneiros.com/build/assets/app-r9kI2XXW.js>/script>script typemodule srchttp://www.gincaneiros.com/build/assets/game-DRfbQrf-.js>/script> script>window.LaravelIsAuthenticated false;/script> script>window.APP_VAPID_KEY BHUoDgtR3BoWhnwPIHSsALfZvu10o8Ub0NrxvpD3b175hXHJ14bpZV7i61zxHtYIWCnWVb4Q_8D0G7q4-hAjm0k;/script>/head>body class font-sans antialiased min-h-screen flex flex-col relative bg-#0a0717 text-slate-100> !-- Background Gamificado Dark --> div classpointer-events-none fixed inset-0 -z-10 overflow-hidden idapp-bg-layer> div classabsolute inset-0 opacity-95 stylebackground:radial-gradient(circle at 22% 18%,#24134f 0%,#140b2e 55%,#0a0717 100%);>/div> !-- Decor grid --> div classabsolute inset-0 mix-blend-overlay opacity-0.07 bg-radial-gradient(circle_at_center,rgba(255,255,255,0.35)_0,transparent_60%)>/div> div classabsolute inset-0 bg-linear-gradient(115deg,rgba(0,255,199,0.15)_0%,rgba(0,102,255,0.05)_40%,rgba(255,0,199,0.12)_85%) opacity-30 animate-pulse>/div> /div> div classflex-1 flex flex-col> nav classflex items-center justify-between p-2 md:p-4 bg-white shadow-md z-50 relative> style> /* Realce suave quando há notificações não lidas */ #notif-bell.unread span#notif-bell-icon { animation: notifPulse 1.4s ease-in-out infinite; } @keyframes notifPulse { 0% { transform: scale(1); filter: drop-shadow(0 0 0 rgba(255,0,0,0.4)); } 50% { transform: scale(1.12); filter: drop-shadow(0 0 4px rgba(255,0,0,0.55)); } 100% { transform: scale(1); filter: drop-shadow(0 0 0 rgba(255,0,0,0.4)); } } /style> !-- Logo / Brand à esquerda --> div classflex items-center min-w-0> span classflex items-center gap-2 font-bold text-lg md:text-xl text-gray-800 whitespace-nowrap select-none> img src/images/gincaneiros_logo.png altGincaneiros classh-7 w-7 md:h-8 md:w-8 object-contain loadinglazy /> span classtracking-tight>Gincaneiros/span> /span> !-- Instalar (mobile only, visitante) - movido ao lado do logo --> a href# idmobile-install-link-guest classhidden md:hidden p-1 rounded-md hover:bg-gray-100 ml-1 onclickevent.preventDefault(); titleInstalar> img srchttps://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExazZwemNoMGRja3NwZ2RrYjBqMmR2ajJ2dnRkYW1zYTk2d2NhOG56ciZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/Iha8mghCOKWYONp31N/giphy.gif altInstalar classh-8 w-auto object-contain pointer-events-none select-none loadinglazy /> /a> /div> !-- Ações à direita (mobile + desktop) --> div classflex items-center gap-2 md:gap-4 ml-4> !-- MODO VISITANTE (mostrar ícones também no mobile) --> div classflex items-center gap-2> !-- Comentários (visitante, mobile only) --> button idpostBtn typebutton classmd:hidden p-1 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-400 hover:scale-1.05 active:scale-95 transition-transform aria-labelComentários titleComentários (C)> img srchttps://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExcDlqMjIxOXhsMjJtbTI0bXkyNzZtendqNDBsdWdscDVueWMyaW81aSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/RgtSwwGh0quPtE0qGg/giphy.gif altComentários classh-8 w-auto object-contain pointer-events-none select-none bg-gray-300 loadinglazy /> /button> a href# idcomo-jogar-btn onclickevent.preventDefault(); mostrarComoJogar() aria-labelComo Jogar titleComo Jogar classp-1 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-400 hover:scale-1.05 active:scale-95 transition-transform> img srchttps://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExeW11anQ4bHhtZ2dubjNidmIzbWZtazE2MGZnMWNyZXU1MXAwbzh6eiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/1UwHF7R67LzHi/giphy.gif altComo Jogar classh-8 w-auto object-contain pointer-events-none select-none loadinglazy /> /a> a hrefhttp://www.gincaneiros.com/login aria-labelEntrar titleEntrar classp-1 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-400 hover:scale-1.05 active:scale-95 transition-transform> img srchttps://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExNmtlZTVtbHRmbWM3Z2QwNjExeTFxbG03dGt5ZmN1emZmeTU1N3JrYiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/QRkrLyKVsZQL2Wk40J/giphy.gif altEntrar classh-12 w-auto object-contain pointer-events-none select-none loadinglazy /> /a> /div> /div> /nav> script> // Sem gatilho de instalação no brand: comportamento padrão restaurado /script> !-- Overlay / Offcanvas mobile menu (auth only) --> !-- Scripts globais para todos os usuários --> script> // Funções SweetAlert - funcionam para todos os usuários function mostrarComoJogar() { Swal.fire({ title: Como Jogar, html: ` div classtext-left> h4 classfont-bold mb-2>🎯 Objetivo do Jogo:/h4> p classmb-3>Adivinhe onde está apenas pela imagem do Street View./p> h4 classfont-bold mb-2>🎮 Como Jogar/h4> ul classlist-disc list-inside mb-3 space-y-1> li>Analise a imagem e busque por pistas/li> li>Clique em Start e marque o local no mapa/li> li>Confirme o Palpite, você tem 5 tentativas/li> li>Caso erre, leia a dica da distância e direção!/li> /ul> /div> `, icon: info, showDenyButton: true, confirmButtonText: Entendi!, denyButtonText: Quem Somos, confirmButtonColor: #2563eb, denyButtonColor: #6b7280, // gray-500 width: 600px }).then((result)>{ if(result.isDenied){ mostrarSobreJogo(); } }); } function mostrarSobreJogo() { Swal.fire({ title: Sobre o Gincaneiros, html: ` div classtext-left> h4 classfont-bold mb-2>🌍 O que é o Gincaneiros?/h4> p classmb-3>É uma brincadeira de desafios para testar a memória afetiva dos seus amigos e parentes ou ainda mostrar para eles lugares que você já visitou ou quer visitar./p> h4 classfont-bold mb-2>🎯 Crie sua Gincana/h4> ul classlist-disc list-inside mb-3 space-y-1> li>strong>Infância:/strong> Desafie alguém se lembrar de determinado local/li> li>strong>Viagens:/strong> Desafie alguém adivinhar o local que você quer conhecer/li> /ul> h4 classfont-bold mb-2>🔍 Procure gicanas de amigos ou aleatórias./h4> h4 classfont-bold mb-2>br>📞 Contato (zap): 53 981056952/h4> /div> `, icon: question, confirmButtonText: Legal!, confirmButtonColor: #2563eb, width: 600px }); } /script> script> // Interação sino + avatar + polling (menu mobile removido) document.addEventListener(DOMContentLoaded, function() { const notifBtn document.getElementById(notif-bell); const notifDropdown document.getElementById(notif-dropdown); const notifList document.getElementById(notif-list); const notifBadge document.getElementById(notif-badge); const notifBellIcon document.getElementById(notif-bell-icon); const markAllBtn document.getElementById(notif-mark-all); const reloadBtn document.getElementById(notif-reload); const userBtn document.getElementById(user-menu-btn); const userDropdown document.getElementById(user-menu-dropdown); const desktopGincanasBtn document.getElementById(desktop-gincanas-btn); const desktopGincanasDd document.getElementById(desktop-gincanas-dd); const desktopRankingsBtn document.getElementById(desktop-rankings-btn); const desktopRankingsDd document.getElementById(desktop-rankings-dd); const desktopTerrBtn document.getElementById(desktop-territorios-btn); const desktopTerrDd document.getElementById(desktop-territorios-dd); // Mobile menu (auth only) const mobileMenuBtn document.getElementById(mobile-menu-btn); const mobileMenu document.getElementById(mobile-menu); const mobileMenuPanel document.getElementById(mobile-menu-panel); const mobileMenuClose document.getElementById(mobile-menu-close); function hide(el){ if(el && !el.classList.contains(hidden)) el.classList.add(hidden); } function toggle(el){ el.classList.toggle(hidden); } // Mantém o GIF configurado no HTML do sino; não sobrescrever com emoji. async function fetchNotifs(){ if(!window.LaravelIsAuthenticated) return; try { const r await fetch(/notifications); if(!r.ok) return; const data await r.json(); // novo formato: { unread_groups, gincanas: ... } const groups data.gincanas || ; const unreadGroups data.unread_groups || 0; if(unreadGroups>0){ notifBadge.textContent unreadGroups>99?99+:unreadGroups; notifBadge.classList.remove(hidden); notifBtn?.classList.add(unread); } else { notifBadge.classList.add(hidden); notifBtn?.classList.remove(unread); } notifList.innerHTML ; if(groups.length0){ notifList.innerHTML li classp-3 text-center text-xs text-gray-400>Sem notificações/li>; } else { groups.forEach(n > { const li document.createElement(li); li.className p-3 hover:bg-gray-50 cursor-pointer flex items-start justify-between gap-2; const countBadge n.unread_count>0 ? `span classml-2 inline-flex items-center justify-center min-w-20px h-20px px-1 rounded-full bg-red-600 text-white text-11px font-bold>${n.unread_count>99?99+:n.unread_count}/span>` : ; li.innerHTML ` div> div classfont-medium text-gray-800 mb-0.5>${n.gincana_nome||(Gincana # + n.gincana_id)}/div> div classtext-gray-600 text-sm>${(n.last_author_name||Alguém)}: ${(n.last_preview||).substring(0,120)}/div> div classtext-xs text-gray-400 mt-1>Atualizado: ${(n.updated_at? new Date(n.updated_at).toLocaleString() : )}/div> /div> div classflex items-center>${countBadge}/div>`; li.addEventListener(click, async () > { if(n.gincana_id){ // zera só essa gincana e navega try { await fetch(/notifications/read, {method:POST, headers:{Content-Type:application/json,X-CSRF-TOKEN:document.querySelector(metanamecsrf-token).content}, body: JSON.stringify({gincana_id:n.gincana_id})}); } catch(e){} window.location.href /gincana/ + n.gincana_id; return; } }); notifList.appendChild(li); }); } } catch(e){ /* silencia */ } } markAllBtn?.addEventListener(click, async (e)>{ e.preventDefault(); await fetch(/notifications/read,{method:POST, headers:{X-CSRF-TOKEN:document.querySelector(metanamecsrf-token).content}}); fetchNotifs(); }); reloadBtn?.addEventListener(click, (e)>{ e.preventDefault(); fetchNotifs(); }); document.addEventListener(click, (e) > { // Sino if(notifBtn && notifBtn.contains(e.target)) { toggle(notifDropdown); if(!notifDropdown.classList.contains(hidden)) fetchNotifs(); } else if(notifDropdown && !notifDropdown.contains(e.target) && !notifBtn.contains(e.target)) { hide(notifDropdown); } // User menu if(userBtn && userBtn.contains(e.target)) { toggle(userDropdown); } else if(userDropdown && !userDropdown.contains(e.target) && !userBtn.contains(e.target)) { hide(userDropdown); } // Desktop dropdowns (Gincanas) if (desktopGincanasBtn && desktopGincanasBtn.contains(e.target)) { e.preventDefault(); desktopGincanasDd?.classList.toggle(hidden); // Fecha o outro dropdown if (!desktopGincanasDd.classList.contains(hidden)) { desktopRankingsDd?.classList.add(hidden); desktopTerrDd?.classList.add(hidden); } } else if (desktopGincanasDd && !desktopGincanasDd.contains(e.target) && !desktopGincanasBtn?.contains(e.target)) { desktopGincanasDd.classList.add(hidden); } // Desktop dropdowns (Rankings) if (desktopRankingsBtn && desktopRankingsBtn.contains(e.target)) { e.preventDefault(); desktopRankingsDd?.classList.toggle(hidden); if (!desktopRankingsDd.classList.contains(hidden)) { desktopGincanasDd?.classList.add(hidden); desktopTerrDd?.classList.add(hidden); } } else if (desktopRankingsDd && !desktopRankingsDd.contains(e.target) && !desktopRankingsBtn?.contains(e.target)) { desktopRankingsDd.classList.add(hidden); } // Desktop dropdowns (Territórios) if (desktopTerrBtn && desktopTerrBtn.contains(e.target)) { e.preventDefault(); desktopTerrDd?.classList.toggle(hidden); if (!desktopTerrDd.classList.contains(hidden)) { desktopGincanasDd?.classList.add(hidden); desktopRankingsDd?.classList.add(hidden); } } else if (desktopTerrDd && !desktopTerrDd.contains(e.target) && !desktopTerrBtn?.contains(e.target)) { desktopTerrDd.classList.add(hidden); } }); // Mobile menu handlers function openMobileMenu(){ if(!mobileMenu || !mobileMenuPanel) return; mobileMenu.classList.remove(hidden); requestAnimationFrame(()> mobileMenuPanel.classList.remove(translate-x-full)); } function closeMobileMenu(){ if(!mobileMenu || !mobileMenuPanel) return; mobileMenuPanel.classList.add(translate-x-full); setTimeout(()> mobileMenu.classList.add(hidden), 300); } mobileMenuBtn?.addEventListener(click, openMobileMenu); mobileMenuClose?.addEventListener(click, closeMobileMenu); mobileMenu?.addEventListener(click, (e)>{ if(e.target mobileMenu) closeMobileMenu(); }); document.addEventListener(keydown, (e)>{ if(e.keyEscape) closeMobileMenu(); }); if(window.LaravelIsAuthenticated){ fetchNotifs(); setInterval(fetchNotifs, 15000); document.addEventListener(visibilitychange, () > { if(!document.hidden) fetchNotifs(); }); if (navigator.serviceWorker && navigator.serviceWorker.addEventListener) { navigator.serviceWorker.addEventListener(message, (event) > { if(event?.data?.type NOTIFICATIONS_UPDATED) { fetchNotifs(); } }); } } window.addEventListener(resize, ()>{ // Fecha dropdowns ao redimensionar desktopGincanasDd?.classList.add(hidden); desktopRankingsDd?.classList.add(hidden); desktopTerrDd?.classList.add(hidden); if(window.innerWidth > 768) closeMobileMenu(); }); // Exibir link Instalar somente quando o prompt estiver disponível function setupMobileInstallLink(linkEl){ if(!linkEl) return; linkEl.classList.add(hidden); function show(){ linkEl.classList.remove(hidden); } function clickHandler(e){ e.preventDefault(); if(window.__pwaDeferredPrompt){ window.__pwaDeferredPrompt.prompt(); window.__pwaDeferredPrompt.userChoice.then(()>{ window.__pwaDeferredPrompt null; linkEl.classList.add(hidden); }); } } linkEl.addEventListener(click, clickHandler); // Esconde se já estiver instalado (standalone) const isStandalone window.matchMedia((display-mode: standalone)).matches || window.navigator.standalone true || window.matchMedia((display-mode: minimal-ui)).matches; if (isStandalone) { linkEl.classList.add(hidden); return; } if(window.__pwaDeferredPrompt){ show(); } window.addEventListener(pwa:prompt-available, show, { once: true }); window.addEventListener(appinstalled, ()>{ linkEl.classList.add(hidden); }); } setupMobileInstallLink(document.getElementById(mobile-install-link)); setupMobileInstallLink(document.getElementById(mobile-install-link-guest)); }); /script> !-- Page Heading --> !-- Page Content --> main classflex-1> div classgame-container> !-- game-info removido: contagem agora só na barra inferior --> div classstreet-view-container> div idstreetview>/div> div classsv-hint aria-livepolite>↔️ Arraste para olhar ao redor/div> /div> !-- Controles do jogo --> div classgame-controls> style> /* Utilitário de acessibilidade */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Botão principal de ação */ .play-container { display: flex; justify-content: center; align-items: center; width: 100%; padding: 10px 0; } .play-btn { font-size: 1.25rem; padding: 12px 20px; border-radius: 10px; border: 0; background: linear-gradient(135deg, #2e7d32, #43a047); color: #fff; cursor: pointer; box-shadow: 0 6px 16px rgba(46, 125, 50, 0.35); transition: transform .08s ease, box-shadow .2s ease, opacity .2s ease; width: 100%; max-width: 240px; } .play-btn:hover { box-shadow: 0 8px 22px rgba(46, 125, 50, 0.45); } .play-btn:active { transform: translateY(1px); } /* Game info como chips/pílulas */ /* game-info removido */ /* Barra inferior: agora não fixa sobre o footer; usa layout normal + sticky leve */ .start-game-bar { position:sticky; bottom:0; background:rgba(255,255,255,.9); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); box-shadow:0 -2px 10px rgba(0,0,0,.12); padding:14px clamp(12px,3vw,32px) 18px; display:flex; justify-content:center; z-index:1100; border-top:1px solid rgba(0,0,0,.06); transition:transform .3s ease, opacity .25s ease; } .start-game-bar.hide-on-map { transform:translateY(110%); opacity:0; pointer-events:none; } /* Slider deve aparecer acima da barra */ /* Drawer lateral (direita -> esquerda) */ #mapSlider.map-slider { position:fixed; top:0; right:0; height:100vh; width:min(480px,92vw); background:#fff; transform:translateX(100%); transition:transform .4s cubic-bezier(.65,.05,.36,1); z-index:2200; box-shadow:-4px 0 22px -4px rgba(0,0,0,.25), -1px 0 4px rgba(0,0,0,.12); display:flex; flex-direction:column; border-top-left-radius:18px; border-bottom-left-radius:18px; } #mapSlider.active { transform:translateX(0); } .map-slider-header { border-top-left-radius:18px; } #mapBackdrop { position:fixed; inset:0; background:transparent; opacity:1; visibility:hidden; transition:none; z-index:2100; pointer-events:none; } #mapBackdrop.active { visibility:visible; } .start-game-inner { width:100%; max-width:620px; } #showMapBtn { width:100%; border:0; border-radius:14px; background:linear-gradient(135deg,#1b7f2e,#27a53f); color:#fff; font-size:1.05rem; font-weight:600; padding:14px 22px; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:10px; box-shadow:0 4px 14px rgba(0,0,0,.18),0 2px 4px rgba(0,0,0,.12); transition:.18s ease; } #showMapBtn:hover { box-shadow:0 6px 18px rgba(0,0,0,.22); background:linear-gradient(135deg,#1a7739,#2cb548); } #showMapBtn:active { transform:translateY(1px); } #showMapBtn:focus-visible { outline:3px solid rgba(255,255,255,.8); outline-offset:2px; } .start-game-hint { font-size:.7rem; text-align:center; margin-top:6px; letter-spacing:1px; text-transform:uppercase; color:#2d5544; font-weight:600; } /* Label após o número: sem uppercase para permitir singular/plural natural */ .attempts-label { font-size:.8rem; letter-spacing:1px; opacity:.9; font-weight:600; } .attempts-value { font-size:1.65rem; font-variant-numeric:tabular-nums; text-shadow:0 0 6px rgba(255,255,255,.35); } /* Animação removida (sem pulse / brightness) */ @media (max-width:640px){ .attempts-pill { padding:9px 18px; gap:10px; } .attempts-value { font-size:1.4rem; } } /* Hint inicial do Street View */ .street-view-container { position: relative; } .street-view-container > #streetview { position: absolute; inset: 0; width: 100%; height: 100%; } .sv-hint { position: absolute; left: 50%; top: 12px; transform: translateX(-50%); background: rgba(0,0,0,.65); color: #fff; padding: 6px 10px; border-radius: 999px; font-size: .9rem; box-shadow: 0 2px 8px rgba(0,0,0,.2); pointer-events: none; opacity: 1; animation: svHintFade .35s ease 10s forwards; z-index: 2001; } @keyframes svHintFade { to { opacity: 0; visibility: hidden; } } /* FAB para destacar o avatar */ .sv-fab { position: absolute; right: 16px; width: 48px; height: 48px; border-radius: 50%; border: 0; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg,#0d6efd,#4dabf7); color: #fff; box-shadow: 0 8px 18px rgba(13,110,253,.35); transition: transform .08s ease, box-shadow .2s ease, background .2s ease; z-index: 2002; } .sv-fab-chat { top: 50%; transform: translateY(-50%); } .sv-fab img { width: 36px; height: 36px; object-fit: contain; display: block; } .sv-fab:hover { box-shadow: 0 10px 24px rgba(229,46,113,.45); } .sv-fab:active { transform: translateY(1px); } .sv-fab:focus-visible { outline: 3px solid rgba(229,46,113,.55); outline-offset: 2px; } /* Animação sutil nas instruções do mapa */ .map-instructions-icon { display: inline-block; animation: bounce 1.2s ease-in-out infinite; } @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } } /* Destaque quando o confirmar estiver habilitado */ #confirmGuessBtn:disabled { opacity: .6; cursor: not-allowed; } #confirmGuessBtn:not(:disabled) { animation: pulse 1.4s ease-in-out infinite; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(76, 175, 80, .55); } 70% { box-shadow: 0 0 0 10px rgba(76, 175, 80, 0); } 100% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0); } } /* Popup e overlay mais atraentes */ .overlay { position: fixed; inset: 0; background: rgba(0,0,0,.45); opacity: 0; visibility: hidden; transition: .2s ease; z-index:2500; } .overlay.active { opacity: 1; visibility: visible; } .popup { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%) scale(.98); background: #fff; border-radius: 12px; width: min(92vw, 560px); padding: 22px; box-shadow: 0 18px 50px rgba(0,0,0,.18), 0 8px 18px rgba(0,0,0,.12); opacity: 0; visibility: hidden; transition: .22s ease; z-index:2550; } .popup.active { opacity: 1; visibility: visible; transform: translate(-50%, -50%) scale(1); } #popupTitle { font-size: 1.4rem; margin-bottom: 6px; font-weight: 700; color: #222; } #popupMessage { color: #4a5568; line-height: 1.5; } #continueBtn.btn { margin-top: 14px; background: #0d6efd; color: #fff; border: 0; border-radius: 10px; padding: 10px 16px; box-shadow: 0 6px 16px rgba(13,110,253,.25); } #continueBtn.btn:hover { background: #0b5ed7; } /* Header do slider melhorado */ .map-slider-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: linear-gradient(135deg,#5b2be1,#7b3fe7); color: #fff; border-top-left-radius: 12px; border-top-right-radius: 12px; } .map-slider-title { margin: 0; font-weight: 600; } .close-btn { display: inline-flex; align-items: center; gap: 6px; background: rgba(255,255,255,.1); color: #fff; border: 0; border-radius: 8px; padding: 6px 10px; cursor: pointer; transition: background .2s ease, transform .08s ease; } .close-btn:hover { background: rgba(255,255,255,.18); } .close-btn:active { transform: translateY(1px); } /* Focus-visible para acessibilidade */ .play-btn:focus-visible, #confirmGuessBtn:focus-visible, #closeMapBtn:focus-visible, #continueBtn:focus-visible { outline: 3px solid rgba(13,110,253,.55); outline-offset: 2px; } @media (max-width: 600px) { .game-controls > div { padding: 0 5px; } .play-btn { font-size: 1.1rem; padding: 10px 16px; } /* Altura responsiva agora é calculada via JS; nada fixo aqui */ .sv-fab { right: 12px; } .sv-fab-chat { top: 50%; transform: translateY(-50%); } } /* Mobile: slider ocupa toda a largura */ @media (max-width: 640px) { #mapSlider.map-slider { width:100vw; max-width:100vw; border-top-left-radius:0; border-bottom-left-radius:0; } /* Elevar mais a barra de JOGAR e ocupar toda a largura no mobile */ .start-game-bar { bottom: 28px; margin-left: 0; margin-right: 0; border-radius: 0; } /* Elevar o footer do slider (Confirmar Palpite) para não sumir sob a barra do navegador */ #mapSlider .slider-controls { position: sticky; bottom: 28px; z-index: 2300; } } /* Acolher áreas seguras e dar respiro adicional na base quando necessário */ @supports(padding: max(0px)) { .start-game-bar { padding-bottom: max(18px, calc(env(safe-area-inset-bottom) + 10px)); } @media (max-width: 640px) { #mapSlider .slider-controls { padding-bottom: max(14px, calc(env(safe-area-inset-bottom) + 8px)); } } } /* Quiz Mode Styles */ #mapSlider.quiz-mode { background: rgba(255,255,255,0.5); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } #mapSlider.quiz-mode .map-slider-header { background: linear-gradient(135deg,#7c3aed,#a855f7); } .quiz-wrap { padding: 8px 12px; } .quiz-wrap h4 { color:#111827; } .quiz-opt { display:block; text-align:left; border:0; border-radius:12px; padding:12px 14px; background: rgba(255,255,255,0.92); color:#111827; box-shadow: 0 6px 16px rgba(0,0,0,.08); transition: transform .05s ease, box-shadow .2s ease, background .2s ease; } .quiz-opt:hover { box-shadow: 0 8px 22px rgba(0,0,0,.12); } .quiz-opt:active { transform: translateY(1px); } .quiz-opt.has-guess { outline: 2px solid #8b5cf6; background: #f5f3ff; } /* Offer Mode Styles */ #mapSlider.offer-mode { background: #fff; } #mapSlider.offer-mode .map-slider-header { background: linear-gradient(135deg,#0ea5e9,#22c55e); } .offer-wrap { padding: 10px 12px; } .offer-card { border-radius: 14px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,.12); border:1px solid rgba(0,0,0,.06); background:#fff; } .offer-banner { position: relative; height: 180px; background:#f3f4f6; } .offer-banner img { width: 100%; height: 100%; object-fit: cover; display: block; } .offer-banner .badge { position: absolute; left: 10px; top: 10px; padding: 6px 10px; border-radius: 999px; font-size: .75rem; color:#fff; box-shadow:0 4px 12px rgba(0,0,0,.18); } .offer-banner .badge-primary { background: linear-gradient(135deg,#f59e0b,#ef4444); } .offer-banner .badge-secondary { left: auto; right: 10px; background: linear-gradient(135deg,#6366f1,#a855f7); } .offer-banner .discount-bubble { position:absolute; right:12px; bottom:12px; background:#16a34a; color:#fff; font-weight:800; border-radius:14px; padding:8px 10px; box-shadow:0 8px 18px rgba(22,163,74,.35); } .offer-body { padding: 12px 14px 8px; } .offer-city { font-size: .8rem; color:#475569; margin-bottom: 4px; } .offer-title { font-weight: 800; color:#0f172a; margin-bottom: 6px; } .offer-price { font-size: .85rem; color:#0f766e; margin-bottom: 6px; } .offer-meta { font-size: .8rem; color:#374151; } .offer-meta a { color:#1d4ed8; text-decoration: underline; } .offer-meta .hot { color:#ef4444; font-weight:700; margin-right:6px; } .offer-footer { padding: 10px 14px 14px; } .offer-buy-btn { display:block; text-align:center; width:100%; border:0; background:linear-gradient(135deg,#10b981,#22c55e); color:#fff; padding:12px 14px; border-radius:12px; font-weight:800; box-shadow:0 10px 22px rgba(16,185,129,.35); } /style> /div> !-- Slider do mapa --> div idmapBackdrop classmap-backdrop aria-hiddentrue>/div> div idmapSlider classmap-slider> !-- Header com título e botão fechar --> div classmap-slider-header> h3 classmap-slider-title>📍 Marque seu palpite/h3> button idcloseMapBtn classclose-btn aria-labelFechar> span>✕ Fechar/span> /button> /div> !-- Instruções --> div idmapInstructions classmap-instructions> span classmap-instructions-icon>👆/span> span>Clique no mapa onde você acha que está!/span> /div> !-- Container do mapa --> div idmap classmap-container>/div> !-- Footer com controles --> div classslider-controls> button idconfirmGuessBtn classbtn btn-success disabled> 🎯 Confirmar Palpite /button> /div> /div> !-- Popup de feedback --> div idoverlay classoverlay>/div> div idpopup classpopup> h3 idpopupTitle>Resultado/h3> p idpopupMessage>/p> button idcontinueBtn classbtn>Continuar/button> /div>/div>!-- Barra inferior para iniciar o jogo -->div classstart-game-bar roleregion aria-labelIniciar ação> div classstart-game-inner> button idshowMapBtn aria-labelIniciar jogo titleIniciar jogo>🎮 JOGAR/button> div classstart-game-hint aria-livepolite>Você tem span idattemptsHint>5/span> span idattemptsWord>jogadas/span>/div> /div>/div>script> // Passar os locais do backend para o JavaScript window.gameLocations {lat:-29.386128299999999313740772777236998081207275390625,lng:-50.874129699999997455961420200765132904052734375,name:Terra da Fantasia,gincana_id:64,contexto:Local onde s\u00e3o produzidos discos m\u00e1gicos que encantam todos que passam por esta cidade incr\u00edvel.,city:Gramado,state:RS,country:Brasil},{lat:48.86061099999999868259692448191344738006591796875,lng:2.33764400000000005519495971384458243846893310546875,name:O Sorriso Misterioso,gincana_id:65,contexto:Lar de uma dama com um sorriso enigm\u00e1tico e uma pir\u00e2mide de vidro em sua entrada. Milhares de obras de arte esperam por voc\u00ea em seus corredores.,city:Paris,state:Fran\u00e7a metropolitana,country:Fran\u00e7a},{lat:41.89021000000000327645466313697397708892822265625,lng:12.492231000000000307181835523806512355804443359375,name:Arena dos Gladiadores,gincana_id:66,contexto:Onde gladiadores um dia lutaram pela gl\u00f3ria, este anfiteatro monumental \u00e9 um s\u00edmbolo eterno de um antigo imp\u00e9rio.,city:Roma,state:L\u00e1cio,country:It\u00e1lia},{lat:40.43180799999999663896232959814369678497314453125,lng:116.5703740000000010468284017406404018402099609375,name:A Serpente de Pedra,gincana_id:67,contexto:Uma muralha que se estende por montanhas, constru\u00edda para proteger um imp\u00e9rio. \u00c9 a \u00fanica obra humana que dizem ser vis\u00edvel do espa\u00e7o... ou ser\u00e1 que n\u00e3o?,city:Pequim,state:Pequim,country:China},{lat:-22.912133999999998223984221112914383411407470703125,lng:-43.2301819999999992205630405806005001068115234375,name:O Templo do Futebol,gincana_id:68,contexto:Palco de finais de Copa do Mundo e casa de gigantes do futebol carioca. J\u00e1 fui o maior do mundo e minha alma ecoa com o som de mais de cem mil vozes.,city:Rio de Janeiro,state:RJ,country:Brasil},{lat:51.55602300000000326463123201392590999603271484375,lng:-0.279548999999999991938892662801663391292095184326171875,name:O Arco do Triunfo Esportivo,gincana_id:69,contexto:Sob um arco ic\u00f4nico, este est\u00e1dio \u00e9 a casa do futebol ingl\u00eas e palco de lend\u00e1rios shows de rock. Aqui, nascem lendas.,city:Londres,state:Inglaterra,country:Reino Unido},{lat:36.061835999999999557985574938356876373291015625,lng:-112.1090769999999992023731465451419353485107421875,name:O Abismo Colorido,gincana_id:70,contexto:Um desfiladeiro monumental esculpido por um rio ao longo de milh\u00f5es de anos. Suas camadas de rocha contam a hist\u00f3ria geol\u00f3gica do nosso planeta.,city:Coconino County,state:Arizona,country:Estados Unidos da Am\u00e9rica},{lat:35.39948299999999647980075678788125514984130859375,lng:138.7618029999999862411641515791416168212890625,name:O Vulc\u00e3o Adormecido,gincana_id:71,contexto:Sou um cone vulc\u00e2nico quase perfeito, um s\u00edmbolo sagrado e o pico mais alto de uma na\u00e7\u00e3o insular. Minha imagem \u00e9 refletida em lagos e na arte.,city:Yamashi,state:Prefeitura de Yamanashi,country:Jap\u00e3o},{lat:-25.695277999999998286284608184359967708587646484375,lng:-54.43666699999999991632648743689060211181640625,name:Garganta do Diabo,gincana_id:72,contexto:Um conjunto de centenas de cataratas que formam um espet\u00e1culo ensurdecedor na fronteira de duas na\u00e7\u00f5es. Minha for\u00e7a e beleza inspiraram lendas.,city:Porto Igua\u00e7u,state:Misiones,country:Argentina},{lat:33.81209199999999981400833348743617534637451171875,lng:-117.9189760000000006812115316279232501983642578125,name:O Lugar Mais Feliz da Terra,gincana_id:73,contexto:Onde contos de fadas se tornam realidade e um castelo ic\u00f4nico \u00e9 o portal para um mundo de fantasia, governado por um rato amig\u00e1vel.,city:Orlando,state:Fl\u00f3rida,country:E.U.A.},{lat:51.46380599999999816418494447134435176849365234375,lng:-0.650808000000000053120174925425089895725250244140625,name:Mundo em Blocos,gincana_id:74,contexto:Um universo constru\u00eddo com pequenos blocos coloridos, onde a criatividade n\u00e3o tem limites e drag\u00f5es, cidades e piratas s\u00e3o feitos de pl\u00e1stico.,city:Windsor,state:Inglaterra,country:Reino Unido},{lat:40.758003000000002202796167694032192230224609375,lng:-73.9854739999999964084054226987063884735107421875,name:A Encruzilhada do Mundo,gincana_id:75,contexto:Sou o cora\u00e7\u00e3o pulsante de uma cidade que nunca dorme, famoso por meus outdoors brilhantes, teatros e a celebra\u00e7\u00e3o de Ano Novo.,city:Nova Iorque,state:Nova Iorque,country:Estados Unidos da Am\u00e9rica},{lat:48.85837000000000074351191869936883449554443359375,lng:2.29448100000000021481127987499348819255828857421875,name:A Dama de Ferro,gincana_id:76,contexto:Fui constru\u00edda para uma Exposi\u00e7\u00e3o Universal e me tornei o s\u00edmbolo de uma capital mundialmente famosa pelo romance e pela arte. \u00c0 noite, eu brilho.,city:Paris,state:Fran\u00e7a metropolitana,country:Fran\u00e7a},{lat:51.5307990000000017971615307033061981201171875,lng:-0.1237810000000000021369572777985013090074062347412109375,name:Partida para a Magia,gincana_id:77,contexto:Em uma esta\u00e7\u00e3o de trem real, h\u00e1 um portal secreto para um mundo de magia. Procure por um carrinho de bagagem desaparecendo em uma parede de tijolos.,city:Londres,state:Inglaterra,country:Reino Unido},{lat:41.38178599999999818237483850680291652679443359375,lng:2.17158400000000018081891539623029530048370361328125,name:O Cora\u00e7\u00e3o Culin\u00e1rio,gincana_id:78,contexto:Um labirinto de cores, cheiros e sabores. Aqui, voc\u00ea encontra desde frutas ex\u00f3ticas a jam\u00f3n ib\u00e9rico, em um dos mercados mais famosos da Europa.,city:Barcelona,state:Catalunha,country:Espanha},{lat:35.66548499999999677356754546053707599639892578125,lng:139.77037000000001398802851326763629913330078125,name:O Reino do Atum,gincana_id:79,contexto:Embora o grande leil\u00e3o de atum tenha se mudado, minhas ruas ainda fervem com o melhor sushi, frutos do mar frescos e a agita\u00e7\u00e3o da culin\u00e1ria japonesa.,city:T\u00f3quio,state:T\u00f3quio,country:Jap\u00e3o},{lat:40.83609799999999978581399773247539997100830078125,lng:14.248324000000000211230144486762583255767822265625,name:O Ber\u00e7o da Rainha,gincana_id:80,contexto:Neste local, em 1889, uma pizza foi criada em homenagem a uma rainha, usando as cores da bandeira nacional. Hoje, \u00e9 a pizza mais famosa do mundo.,city:N\u00e1poles,state:Camp\u00e2nia,country:It\u00e1lia},{lat:51.53208500000000213958628592081367969512939453125,lng:-0.178263000000000004785505325344274751842021942138671875,name:A Travessia Lend\u00e1ria,gincana_id:81,contexto:Uma simples faixa de pedestres que se tornou um dos pontos tur\u00edsticos mais famosos do mundo gra\u00e7as a quatro rapazes de Liverpool e a capa de um de seus \u00e1lbuns.,city:Londres,state:Inglaterra,country:Reino Unido},{lat:34.101551000000000612999428994953632354736328125,lng:-118.3402099999999990131982485763728618621826171875,name:Cal\u00e7ada das Estrelas,gincana_id:82,contexto:Aqui, as estrelas n\u00e3o est\u00e3o no c\u00e9u, mas no ch\u00e3o. Caminhe sobre os nomes dos maiores \u00edcones do cinema, m\u00fasica e entretenimento.,city:Los Angeles,state:Calif\u00f3rnia,country:Estados Unidos da Am\u00e9rica},{lat:-23.56139999999999901092451182194054126739501953125,lng:-46.6563000000000016598278307355940341949462890625,name:O V\u00e3o Livre da Arte,gincana_id:83,contexto:Minha arquitetura \u00e9 um marco, com um imenso v\u00e3o livre de 74 metros. Flutuo sobre uma pra\u00e7a na avenida mais famosa da cidade, guardando tesouros da arte ocidental.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-22.909600000000001074340616469271481037139892578125,lng:-43.1766999999999967485564411617815494537353515625,name:Palco de Ouro,gincana_id:84,contexto:Inspirado na \u00d3pera de Paris, sou uma joia dourada no cora\u00e7\u00e3o da Cinel\u00e2ndia. Meus palcos j\u00e1 receberam os maiores nomes da \u00f3pera e do bal\u00e9 mundial.,city:Rio de Janeiro,state:Rio de Janeiro,country:Brasil},{lat:-12.9718999999999997640998117276467382907867431640625,lng:-38.50930000000000319460013997741043567657470703125,name:Cora\u00e7\u00e3o da Bahia,gincana_id:85,contexto:Minhas ruas de paralelep\u00edpedos e casar\u00f5es coloridos contam a hist\u00f3ria do Brasil. O som dos tambores ecoa em cada esquina, um convite para sentir a alma da primeira capital.,city:Salvador,state:Bahia,country:Brasil},{lat:-23.527499999999999857891452847979962825775146484375,lng:-46.67830000000000012505552149377763271331787109375,name:A Arena Multiuso,gincana_id:86,contexto:Nascido das cinzas de um antigo est\u00e1dio, hoje sou a casa de um alviverde imponente e palco para mega shows internacionais em uma das cidades mais populosas do mundo.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-29.974000000000000198951966012828052043914794921875,lng:-51.19460000000000121644916362129151821136474609375,name:Fortaleza Tricolor,gincana_id:87,contexto:Localizado na entrada de uma capital do sul, sou a casa de um tricolor imortal. Minha arquitetura moderna j\u00e1 foi palco de grandes conquistas e noites de Libertadores.,city:Porto Alegre,state:Rio Grande do Sul,country:Brasil},{lat:-23.545100000000001472244548494927585124969482421875,lng:-46.4739000000000004320099833421409130096435546875,name:A Casa do Povo,gincana_id:88,contexto:Fui constru\u00eddo para a abertura de uma Copa do Mundo. Minha estrutura impressiona e sou o caldeir\u00e3o de uma das maiores e mais fi\u00e9is torcidas do Brasil.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-2.571099999999999941024952931911684572696685791015625,lng:-42.82249999999999801048033987171947956085205078125,name:O Deserto de \u00c1guas,gincana_id:89,contexto:Pare\u00e7o um deserto, mas sou um campo de dunas de areia branca recheado de lagoas de \u00e1gua doce e cristalina. Um para\u00edso que se revela a cada esta\u00e7\u00e3o chuvosa.,city:Barreirinhas,state:Maranh\u00e3o,country:Brasil},{lat:-22.9491000000000013869794202037155628204345703125,lng:-43.15579999999999927240423858165740966796875,name:O Guardi\u00e3o da Ba\u00eda,gincana_id:90,contexto:Sou um monolito de granito que se ergue na entrada da Ba\u00eda de Guanabara. Um telef\u00e9rico, o bondinho, leva visitantes ao meu cume para uma vista deslumbrante.,city:Rio de Janeiro,state:Rio de Janeiro,country:Brasil},{lat:-25.4431000000000011596057447604835033416748046875,lng:-49.239699999999999135980033315718173980712890625,name:A Estufa de Cristal,gincana_id:91,contexto:Sou o cart\u00e3o postal de uma capital modelo. Minha estufa de tr\u00eas ab\u00f3badas, inspirada em pal\u00e1cios de cristal, abriga plantas da floresta atl\u00e2ntica em meio a um jardim de estilo franc\u00eas.,city:Curitiba,state:Paran\u00e1,country:Brasil},{lat:-26.799700000000001409716787748038768768310546875,lng:-48.6143000000000000682121026329696178436279296875,name:O Sonho do Cowboy,gincana_id:92,contexto:O maior parque tem\u00e1tico da Am\u00e9rica Latina, nascido do sonho de um cowboy. Aqui a adrenalina encontra a fantasia, com montanhas-russas, shows e um zool\u00f3gico.,city:Penha,state:Santa Catarina,country:Brasil},{lat:-23.649300000000000210320649784989655017852783203125,lng:-46.70219999999999771489456179551780223846435546875,name:A Turma do Bairro do Limoeiro,gincana_id:93,contexto:Dentro de um shopping, recrio o universo dos gibis mais famosos do Brasil. Aqui voc\u00ea pode encontrar uma menina dentu\u00e7a, seu amigo com planos infal\u00edveis e toda a sua turma.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-23.5441000000000002501110429875552654266357421875,lng:-46.6287999999999982492226990871131420135498046875,name:A Ci\u00eancia \u00e9 Divertida,gincana_id:94,contexto:Ocupo um antigo pal\u00e1cio e sou um museu onde \u00e9 proibido n\u00e3o tocar. Torno a ci\u00eancia divertida e interativa para crian\u00e7as e adultos, com se\u00e7\u00f5es sobre universo, vida e engenho.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-22.951899999999998414068613783456385135650634765625,lng:-43.21050000000000324007487506605684757232666015625,name:De Bra\u00e7os Abertos,gincana_id:95,contexto:Do alto de um morro, aben\u00e7oo uma cidade maravilhosa. Sou uma das novas sete maravilhas do mundo e o principal cart\u00e3o postal de todo o pa\u00eds.,city:Rio de Janeiro,state:Rio de Janeiro,country:Brasil},{lat:-23.56139999999999901092451182194054126739501953125,lng:-46.6563000000000016598278307355940341949462890625,name:O Cora\u00e7\u00e3o que Vira Lazer,gincana_id:96,contexto:Durante a semana sou o centro financeiro do pa\u00eds. Aos domingos, me fecho para os carros e me abro para as pessoas, a cultura e a arte.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-23.610499999999998266275724745355546474456787109375,lng:-46.6991000000000013869794202037155628204345703125,name:O X da Marginal,gincana_id:97,contexto:Sou um dos mais novos cart\u00f5es postais de uma grande metr\u00f3pole. Minhas duas pistas curvas se cruzam em um \u00fanico mastro em formato de X, iluminando o rio \u00e0 noite.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-23.54129999999999967030817060731351375579833984375,lng:-46.62930000000000063664629124104976654052734375,name:O Pal\u00e1cio do Sandu\u00edche,gincana_id:98,contexto:Famoso por meus vitrais e colunas imponentes. Aqui, a fartura \u00e9 lei, especialmente no famoso sandu\u00edche de mortadela e no pastel de bacalhau.,city:S\u00e3o Paulo,state:S\u00e3o Paulo,country:Brasil},{lat:-22.90559999999999973852027324028313159942626953125,lng:-43.177199999999999135980033315718173980712890625,name:Caf\u00e9 com Hist\u00f3ria,gincana_id:99,contexto:Sou um peda\u00e7o da Belle \u00c9poque no centro de uma cidade agitada. Meus espelhos belgas j\u00e1 serviram presidentes e artistas. Um simples caf\u00e9 aqui \u00e9 uma viagem no tempo.,city:Rio de Janeiro,state:Rio de Janeiro,country:Brasil},{lat:-15.856899999999999550936990999616682529449462890625,lng:-48.9566999999999978854248183779418468475341796875,name:Sabor do Cerrado,gincana_id:100,contexto:Meu nome oficial \u00e9 Rua do Ros\u00e1rio, mas todos me conhecem pela divers\u00e3o. Sou uma rua de pedra em uma cidade hist\u00f3rica, cheia de bares e restaurantes que servem o melhor da culin\u00e1ria goiana.,city:Piren\u00f3polis,state:Goi\u00e1s,country:Brasil}; // Passar informação de autenticação para o JavaScript window.isAuthenticated false; // Quando esta tela for usada via rota de jogar, o controller injeta o id da gincana atual // Modo e dados de quiz (quando aplicável) — definir com defaults seguros window.gincanaModo null || null; // null > interpretado como mapa no JS window.gincanaQuiz null || null; // objeto ou null window.gincanaOffer null || null; // oferta vinculada (quiz_oferta) // Config de UI: esconder avatar no Street View e usar FAB de chat window.uiConfig { showAvatar: false }; // Sincronização via updateUI no game.js (sem game-info superior)/script> /main> footer classrelative bg-white border-t border-slate-200 z-10> div classpt-6 pb-5> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center md:text-left> div classflex flex-col md:flex-row md:items-center md:justify-between gap-4> div classtext-xs tracking-wide text-slate-600>© 2025 span classtext-slate-900 font-semibold>Gincaneiros/span>. Todos os direitos reservados./div> div classflex items-center justify-center gap-6 text-13px font-medium> a href# onclickevent.preventDefault(); mostrarSobreJogo() classtext-sky-600 hover:text-emerald-600 transition>Contate-nos./a> /div> /div> /div> /div>/footer> /div>script async defer srchttps://maps.googleapis.com/maps/api/js?keyAIzaSyBs7CC0DZvYKvAqQFvS1E8LnsgQPWRzi3M&callbackinitGame&librariesgeometry>/script>script> // Inicializa sempre (também em modo oferta) para termos Street View e slider reutilizável (function waitForGame(){ const apiReady typeof google ! undefined && google.maps; const fnReady typeof window.initGame function; if(apiReady && fnReady){ try { window.initGame(); } catch(e){ console.error(Falha ao iniciar jogo:, e); } return; } setTimeout(waitForGame, 60); })();/script>script> // Expor o prompt de instalação globalmente para outros componentes (ex: navbar) window.__pwaDeferredPrompt null; // Detecta Android/Chromium e guarda o evento para acionar depois via clique do usuário window.addEventListener(beforeinstallprompt, (e) > { e.preventDefault(); window.__pwaDeferredPrompt e; // Botão flutuante desativado por solicitação: manter oculto // Notifica outros componentes que o prompt está disponível window.dispatchEvent(new CustomEvent(pwa:prompt-available)); }); // Botão flutuante removido por solicitação; apenas brand/menu podem acionar a instalação // Detecta iOS e mostra instruções const isIOS /iphone|ipad|ipod/.test(window.navigator.userAgent.toLowerCase()); const isInStandalone (standalone in window.navigator) && window.navigator.standalone; if (isIOS && !isInStandalone) { Swal.fire({ icon: info, title: Instalar no iPhone, html: Para instalar, toque em strong>Compartilhar/strong> e escolha em>Adicionar à Tela de Início/em>., confirmButtonText: Entendi, confirmButtonColor: #2563eb }); }/script>script> // Ajuste dinâmico caso existam páginas legacy claras que definem body_class contendo bg-gray (function(){ const legacyLight document.body.className.match(/bg-gray/); if(legacyLight){ document.body.classList.add(text-slate-900); document.getElementById(app-bg-layer)?.classList.add(hidden); } })();/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]