1document.addEventListener('DOMContentLoaded', () => { 2 const canvas = document.getElementById('stars'); 3 if (canvas) { 4 const ctx = canvas.getContext('2d'); 5 canvas.width = window.innerWidth; 6 canvas.height = window.innerHeight; 7 8 let stars = []; 9 for (let i = 0; i < 100; i++) { 10 stars.push({ 11 x: Math.random() * canvas.width, 12 y: Math.random() * canvas.height, 13 radius: Math.random() * 2, 14 speed: Math.random() * 0.5 + 0.2, 15 color: Math.random() > 0.5 ? '#ff0000' : '#ffffff' 16 }); 17 } 18 19 function drawStars() { 20 ctx.clearRect(0, 0, canvas.width, canvas.height); 21 stars.forEach(s => { 22 ctx.beginPath(); 23 ctx.arc(s.x, s.y, s.radius, 0, Math.PI * 2); 24 ctx.fillStyle = s.color; 25 ctx.fill(); 26 s.y += s.speed; 27 if (s.y > canvas.height) s.y = 0; 28 }); 29 requestAnimationFrame(drawStars); 30 } 31 drawStars(); 32 33 window.addEventListener('resize', () => { 34 canvas.width = window.innerWidth; 35 canvas.height = window.innerHeight; 36 }); 37 } 38 39 const loginLink = document.getElementById('login-link'); 40 const modal = document.getElementById('login-modal'); 41 const closeModal = document.querySelector('.modal-close'); 42 const loginForm = document.getElementById('login-form'); 43 const logoutBtn = document.getElementById('logout-btn'); 44 const registerForm = document.getElementById('register-form'); 45 46 if (loginLink) { 47 loginLink.addEventListener('click', () => modal.style.display = 'flex'); 48 } 49 if (closeModal) { 50 closeModal.addEventListener('click', () => modal.style.display = 'none'); 51 } 52 window.addEventListener('click', e => { 53 if (e.target === modal) modal.style.display = 'none'; 54 }); 55 56 if (loginForm) { 57 loginForm.addEventListener('submit', e => { 58 e.preventDefault(); 59 document.getElementById('username').textContent = 'TestPlayer'; 60 document.getElementById('profile').style.display = 'block'; 61 modal.style.display = 'none'; 62 loginLink.innerHTML = '<a href="#">Logout</a>'; 63 }); 64 } 65 66 if (registerForm) { 67 registerForm.addEventListener('submit', e => { 68 e.preventDefault(); 69 alert('Registered! Please log in.'); 70 window.location.href = 'index.html'; 71 }); 72 } 73 74 document.querySelectorAll('.oauth').forEach(btn => { 75 btn.addEventListener('click', () => alert(`${btn.textContent} login mock`)); 76 }); 77 78 if (logoutBtn) { 79 logoutBtn.addEventListener('click', () => { 80 document.getElementById('profile').style.display = 'none'; 81 loginLink.innerHTML = '<a href="#">Login</a>'; 82 }); 83 } 84 85 const slides = document.querySelectorAll('.carousel-slide'); 86 let current = 0; 87 function showSlide(n) { 88 slides.forEach(s => s.classList.remove('active')); 89 slides[n].classList.add('active'); 90 } 91 if (slides.length) { 92 document.querySelector('.carousel-prev').addEventListener('click', () => { 93 current = (current - 1 + slides.length) % slides.length; 94 showSlide(current); 95 }); 96 document.querySelector('.carousel-next').addEventListener('click', () => { 97 current = (current + 1) % slides.length; 98 showSlide(current); 99 }); 100 setInterval(() => { 101 current = (current + 1) % slides.length; 102 showSlide(current); 103 }, 5000); 104 } 105 106 const fadeElements = document.querySelectorAll('.fade-in'); 107 const observer = new IntersectionObserver(entries => { 108 entries.forEach(entry => { 109 if (entry.isIntersecting) entry.target.classList.add('visible'); 110 }); 111 }, { threshold: 0.1 }); 112 fadeElements.forEach(el => observer.observe(el)); 113 114 setInterval(() => { 115 const table = document.getElementById('leaderboard-table'); 116 if (table) { 117 table.children[0].children[2].textContent = Math.floor(Math.random() * 20000 + 10000); 118 } 119 }, 300000); 120 121 document.querySelectorAll('[data-captcha]').forEach(btn => { 122 btn.addEventListener('click', () => alert('CAPTCHA verified - action completed')); 123 }); 124 125 document.querySelectorAll('.chat button').forEach(btn => { 126 btn.addEventListener('click', () => { 127 const input = btn.previousElementSibling; 128 if (input.value) { 129 const msg = document.createElement('p'); 130 msg.textContent = `You: ${input.value}`;
131 input.previousElementSibling.appendChild(msg); 132 input.value = ''; 133 } 134 }); 135 }); 136 137 document.querySelectorAll('.forum button').forEach(btn => { 138 btn.addEventListener('click', () => { 139 const input = btn.previousElementSibling; 140 if (input.value) { 141 const post = document.createElement('p'); 142 post.textContent = `You: ${input.value}`; 143 input.previousElementSibling.appendChild(post); 144 input.value = ''; 145 } 146 }); 147 }); 148 149 document.querySelectorAll('.ugc button').forEach(btn => { 150 btn.addEventListener('click', () => alert('Content uploaded!')); 151 }); 152 153 document.querySelectorAll('#quiz button').forEach(btn => { 154 btn.addEventListener('click', () => alert('Answer submitted! +10 Credits')); 155 }); 156 157 if ('Notification' in window) { 158 Notification.requestPermission().then(perm => { 159 if (perm === 'granted') { 160 setInterval(() => new Notification('Titan Games', { body: 'Check out new updates!' }), 3600000); 161 } 162 }); 163 } 164}); 165 166// Additions to script.js 167 168// Retro Arcade Platform Selection 169const platformSelect = document.getElementById('platform-select'); 170if (platformSelect) { 171 platformSelect.addEventListener('change', (e) => { 172 const platform = e.target.value; 173 if (platform) { 174 window.location.hash = platform; 175 document.querySelectorAll('.platform-link').forEach(link => { 176 link.classList.toggle('active', link.getAttribute('href').includes(platform)); 177 }); 178 } 179 }); 180 181 // Highlight active platform based on URL hash 182 window.addEventListener('hashchange', () => { 183 const platform = window.location.hash.slice(1); 184 platformSelect.value = platform; 185 document.querySelectorAll('.platform-link').forEach(link => { 186 link.classList.toggle('active', link.getAttribute('href').includes(platform)); 187 }); 188 }); 189 190 // Initial hash check 191 if (window.location.hash) { 192 const platform = window.location.hash.slice(1); 193 platformSelect.value = platform; 194 document.querySelectorAll('.platform-link').forEach(link => { 195 link.classList.toggle('active', link.getAttribute('href').includes(platform)); 196 }); 197 } 198} 199 200// ============================================================ 201// ð ADVANCED STARFIELD ENHANCEMENTS (Conflict-Free Version) 202// ============================================================ 203document.addEventListener('DOMContentLoaded', () => { 204 const canvas = document.getElementById('stars'); 205 if (!canvas) return; 206 207 const ctx = canvas.getContext('2d'); 208 let stars = [], flares = [], nebulae = [], shootingStars = []; 209 let parallaxX = 0, parallaxY = 0; 210 211 const STAR_COUNT = 200; 212 const NEBULA_COUNT = 5; 213 const startTime = Date.now(); 214 215 // Ensure proper sizing 216 const resizeCanvas = () => { 217 canvas.width = window.innerWidth; 218 canvas.height = window.innerHeight; 219 }; 220 resizeCanvas(); 221 window.addEventListener('resize', resizeCanvas); 222 223 // --- Create stars 224 for (let i = 0; i < STAR_COUNT; i++) { 225 stars.push({ 226 x: Math.random() * canvas.width, 227 y: Math.random() * canvas.height, 228 radius: Math.random() * 1.5, 229 dx: (Math.random() - 0.5) * 0.3, 230 dy: (Math.random() - 0.5) * 0.3, 231 color: Math.random() > 0.6 ? 'red' : 'white' 232 }); 233 } 234 235 // --- Create nebula clouds 236 for (let i = 0; i < NEBULA_COUNT; i++) { 237 nebulae.push({ 238 x: Math.random() * canvas.width, 239 y: Math.random() * canvas.height, 240 radius: 250 + Math.random() * 300, 241 dx: (Math.random() - 0.5) * 0.1, 242 dy: (Math.random() - 0.5) * 0.1, 243 color: `rgba(255,0,60,${0.05 + Math.random() * 0.1})` 244 }); 245 } 246 247 // --- Animation loop 248 function drawEnhancedStars() { 249 ctx.clearRect(0, 0, canvas.width, canvas.height); 250 251 const elapsed = (Date.now() - startTime) / 1000; 252 const pulse = 0.8 + 0.2 * Math.sin((elapsed / 4) * Math.PI * 2); 253 254 // === Nebula background === 255 nebulae.forEach(neb => { 256 const grad = ctx.createRadialGradient( 257 neb.x, neb.y, neb.radius * 0.2, 258 neb.x, neb.y, neb.radius 259 ); 260 grad.addColorStop(0, neb.color); 261 grad.addColorStop(1, 'transparent'); 262 ctx.fillStyle = grad; 263 ctx.beginPath(); 264 ctx.arc(neb.x, neb.y, neb.radius, 0, Math.PI * 2); 265 ctx.fill(); 266 267 neb.x += neb.dx; 268 neb.y += neb.dy; 269 if (neb.x > canvas.width + neb.radius) neb.x = -neb.radius; 270 if (neb.x < -neb.radius) neb.x = canvas.width + neb.radius; 271 if (neb.y > canvas.height + neb.radius) neb.y = -neb.radius; 272 if (neb.y < -neb.radius) neb.y = canvas.height + neb.radius; 273 });
274 275 // === Stars === 276 stars.forEach(s => { 277 ctx.beginPath(); 278 ctx.arc( 279 s.x + parallaxX * (s.radius * 0.5), 280 s.y + parallaxY * (s.radius * 0.5), 281 s.radius * pulse, 282 0, 283 Math.PI * 2 284 ); 285 ctx.fillStyle = s.color; 286 ctx.shadowColor = s.color; 287 ctx.shadowBlur = 10 * pulse; 288 ctx.fill(); 289 290 s.x += s.dx; 291 s.y += s.dy; 292 if (s.x < 0 || s.x > canvas.width) s.dx *= -1; 293 if (s.y < 0 || s.y > canvas.height) s.dy *= -1; 294 }); 295 296 // === Flares (Novas) === 297for (let i = flares.length - 1; i >= 0; i--) { 298 const flare = flares[i]; 299 const life = (Date.now() - flare.start) / flare.duration; 300 if (life > 1) { 301 flares.splice(i, 1); 302 continue; 303 } 304 305 const progress = 1 - life; 306 const alpha = progress; 307 308 // --- Multi-color plasma core --- 309 const grad = ctx.createRadialGradient( 310 flare.x, flare.y, 0, 311 flare.x, flare.y, flare.maxRadius 312 ); 313 grad.addColorStop(0, `rgba(255,255,255,${alpha})`); 314 grad.addColorStop(0.25, `rgba(255,200,120,${alpha * 0.9})`); 315 grad.addColorStop(0.55, `rgba(255,0,0,${alpha * 0.6})`); 316 grad.addColorStop(1, 'rgba(0,0,0,0)'); 317 ctx.fillStyle = grad; 318 ctx.beginPath(); 319 ctx.arc(flare.x, flare.y, flare.maxRadius, 0, Math.PI * 2); 320 ctx.fill(); 321 322 // --- Rotating starburst rays --- 323 const rayCount = 8 + Math.floor(Math.random() * 4); 324 const rotation = life * Math.PI * 2 * flare.rotationDir; 325 for (let r = 0; r < rayCount; r++) { 326 const angle = (Math.PI * 2 / rayCount) * r + rotation; 327 const rayLength = flare.maxRadius * 2.5 * progress; 328 const rayWidth = 1.5 + 1.5 * progress; 329 330 ctx.save(); 331 ctx.translate(flare.x, flare.y); 332 ctx.rotate(angle); 333 334 const rayGrad = ctx.createLinearGradient(0, 0, rayLength, 0); 335 rayGrad.addColorStop(0, `rgba(255,255,255,${alpha})`); 336 rayGrad.addColorStop(0.4, `rgba(255,120,80,${alpha * 0.8})`); 337 rayGrad.addColorStop(1, 'rgba(0,0,0,0)'); 338 339 ctx.fillStyle = rayGrad; 340 ctx.fillRect(0, -rayWidth / 2, rayLength, rayWidth); 341 ctx.restore(); 342 } 343} 344 345// === Balanced flare generator (cinematic slower timing) === 346function spawnFlare() { 347 // Limit to 2 simultaneous flares 348 if (flares.length >= 2) return; 349 350 flares.push({ 351 x: Math.random() * canvas.width, 352 y: Math.random() * canvas.height, 353 maxRadius: 50 + Math.random() * 70, 354 duration: 2000 + Math.random() * 1000, // â³ lasts 2â3 seconds 355 start: Date.now(), 356 rotationDir: Math.random() > 0.5 ? 1 : -1 357 }); 358 359 // Next flare spawns every 2â3.5 seconds (slower pacing) 360 const nextTime = 2000 + Math.random() * 1500; 361 setTimeout(spawnFlare, nextTime); 362} 363spawnFlare(); 364 365 366 // === Shooting stars === 367 for (let i = shootingStars.length - 1; i >= 0; i--) { 368 const s = shootingStars[i]; 369 ctx.strokeStyle = `rgba(255,255,255,${s.opacity})`; 370 ctx.lineWidth = 2; 371 ctx.beginPath(); 372 ctx.moveTo(s.x, s.y); 373 ctx.lineTo(s.x - s.length, s.y + s.length * 0.3); 374 ctx.stroke(); 375 s.x -= s.speed; 376 s.y += s.speed * 0.3; 377 s.opacity -= 0.01; 378 if (s.opacity <= 0) shootingStars.splice(i, 1); 379 } 380 381 requestAnimationFrame(drawEnhancedStars); 382 } 383 384 drawEnhancedStars(); 385 386 // === Random flare generator === 387 setInterval(() => { 388 flares.push({ 389 x: Math.random() * canvas.width, 390 y: Math.random() * canvas.height, 391 maxRadius: 30 + Math.random() * 50, 392 duration: 800 + Math.random() * 800, 393 start: Date.now() 394 }); 395 }, 3000); 396 397 // === Shooting stars === 398 setInterval(() => { 399 shootingStars.push({ 400 x: Math.random() * canvas.width, 401 y: Math.random() * canvas.height * 0.5, 402 length: 250, 403 speed: 6 + Math.random() * 4, 404 opacity: 1 405 }); 406 }, 8000); 407 408 // === Parallax effect === 409 document.addEventListener('mousemove', e => { 410 const centerX = window.innerWidth / 2; 411 const centerY = window.innerHeight / 2; 412 parallaxX = (e.clientX - centerX) / 100; 413 parallaxY = (e.clientY - centerY) / 100; 414 }); 415 416 // === Interactive Glow Proximity Effect === 417 const interactiveEls = document.querySelectorAll( 418 '.play-btn, .social-btn, .view-all, .cta' 419 ); 420 421 const translations = { 422 en: { 423 // --- Core & Navigation --- 424 title: "Titan Games - Conquer the Cosmos", 425 nav_games: "Games", 426 nav_featured: "Featured", 427 nav_community: "Community", 428 nav_tournaments: "Tournaments", 429 ticker: "ð¥ Titan Week: Double Credits! | ð® New Update! | ð Join Tournaments!", 430 fallback: "Fallback: Cosmic background video not loaded.", 431
432 // --- Auth / Login --- 433 login_title: "Login to Titan Games", 434 login_btn: "Login", 435 or_use: "Or use:", 436 register: "Register", 437 438 // --- Hero Section --- 439 hero_subtitle: "Unite ⢠Play ⢠Conquer", 440 cta_explore: "Explore Now", 441 442 // --- Featured / Games --- 443 featured: "Featured Games", 444 games: "Our Games", 445 play: "Play", 446 view_all: "View All Games", 447 448 fallout_desc: "Survive the apocalypse.", 449 survival_desc: "Zombie wasteland adventure.", 450 robo_desc: "Command robotic armies.", 451 mono_desc: "Strategic board game.", 452 tank_desc: "Blast enemies in tank battles.", 453 sky_desc: "Aerial combat MMO.", 454 455 // --- Upcoming Section --- 456 upcoming: "Upcoming Releases", 457 quest_desc: "Epic RPG adventure.", 458 starstrike_desc: "Space exploration epic.", 459 trailer: "Trailer", 460 461 // --- News --- 462 news: "Titan News Hub", 463 news_1: "New bosses, improved loot, and cross-server events are now live!", 464 news_2: "Check out the top 3 incredible vault designs created by players!", 465 news_3: "Battle your way through the cosmos â now available on Apple devices!", 466 467 // --- Community --- 468 community: "Our Community", 469 discord_join: "Join Us on Discord", 470 youtube: "YouTube", 471 facebook: "Facebook", 472 google_play: "Google Play", 473 474 // --- Tournaments --- 475 tournaments: "Tournaments", 476 tournaments_desc: "Compete for exclusive rewards!", 477 countdown: "Next Event Starts In", 478 479 // --- Support / Footer --- 480 support: "Support Us", 481 donate: "Donate", 482 privacy: "Privacy Policy", 483 terms: "Terms", 484 contact: "Contact", 485 footer_rights: "Titan Empire © 2025", 486 language_label: "ð Language:" 487 }, 488 489 en: { 490 // --- Core & Navigation --- 491 title: "Titan Games - Conquer the Cosmos", 492 nav_games: "Games", 493 nav_featured: "Featured", 494 nav_community: "Community", 495 nav_tournaments: "Tournaments", 496 ticker: "ð¥ Titan Week: Double Credits! | ð® New Update! | ð Join Tournaments!", 497 fallback: "Fallback: Cosmic background video not loaded.", 498 499 // --- Auth / Login --- 500 login_title: "Login to Titan Games", 501 login_btn: "Login", 502 or_use: "Or use:", 503 register: "Register", 504 505 // --- Hero Section --- 506 hero_subtitle: "Unite ⢠Play ⢠Conquer", 507 cta_explore: "Explore Now", 508 509 // --- Featured / Games --- 510 featured: "Featured Games", 511 games: "Our Games", 512 play: "Play", 513 view_all: "View All Games", 514 fallout_desc: "Survive the apocalypse.", 515 survival_desc: "Zombie wasteland adventure.", 516 robo_desc: "Command robotic armies.", 517 mono_desc: "Strategic board game.", 518 tank_desc: "Blast enemies in tank battles.", 519 sky_desc: "Aerial combat MMO.", 520 521 // --- Upcoming Section --- 522 upcoming: "Upcoming Releases", 523 quest_desc: "Epic RPG adventure.", 524 starstrike_desc: "Space exploration epic.", 525 trailer: "Trailer", 526 527 // --- News --- 528 news: "Titan News Hub", 529 news_1: "New bosses, improved loot, and cross-server events are now live!", 530 news_2: "Check out the top 3 incredible vault designs created by players!", 531 news_3: "Battle your way through the cosmos â now available on Apple devices!", 532 533 // --- Community --- 534 community: "Our Community", 535 discord_join: "Join Us on Discord", 536 youtube: "YouTube", 537 facebook: "Facebook", 538 google_play: "Google Play", 539 540 // --- Tournaments --- 541 tournaments: "Tournaments", 542 tournaments_desc: "Compete for exclusive rewards!", 543 countdown: "Next Event Starts In", 544 545 // --- Support / Footer --- 546 support: "Support Us", 547 donate: "Donate", 548 privacy: "Privacy Policy", 549 terms: "Terms", 550 contact: "Contact", 551 footer_rights: "Titan Empire © 2025", 552 language_label: "ð Language:" 553 }, 554 555 es: { 556 title: "Titan Games - Conquista el Cosmos", 557 nav_games: "Juegos", 558 nav_featured: "Destacados", 559 nav_community: "Comunidad", 560 nav_tournaments: "Torneos", 561 ticker: "ð¥ Semana Titan: ¡Créditos Dobles! | ð® ¡Nueva Actualización! | ð ¡Ãnete a los Torneos!", 562 fallback: "Error al cargar el video de fondo cósmico.", 563 login_title: "Iniciar sesión en Titan Games", 564 login_btn: "Iniciar Sesión", 565 or_use: "O usa:", 566 register: "Registrarse", 567 hero_subtitle: "Unidos ⢠Juega ⢠Conquista", 568 cta_explore: "Explorar Ahora", 569 featured: "Juegos Destacados", 570 games: "Nuestros Juegos", 571 play: "Jugar", 572 view_all: "Ver Todos los Juegos", 573 fallout_desc: "Sobrevive al apocalipsis.", 574 survival_desc: "Aventura en un páramo zombi.", 575 robo_desc: "Comanda ejércitos robóticos.",
576 mono_desc: "Juego de mesa estratégico.", 577 tank_desc: "Destruye enemigos en batallas de tanques.", 578 sky_desc: "MMO de combate aéreo.", 579 upcoming: "Próximos Lanzamientos", 580 quest_desc: "Aventura RPG épica.", 581 starstrike_desc: "Ãpica de exploración espacial.", 582 trailer: "Tráiler", 583 news: "Centro de Noticias Titan", 584 news_1: "¡Nuevos jefes, botines mejorados y eventos entre servidores ya están disponibles!", 585 news_2: "¡Descubre los 3 mejores diseños de búnker creados por jugadores!", 586 news_3: "¡Lucha a través del cosmos, ahora disponible en dispositivos Apple!", 587 community: "Nuestra Comunidad", 588 discord_join: "Ãnete a Nosotros en Discord", 589 youtube: "YouTube", 590 facebook: "Facebook", 591 google_play: "Google Play", 592 tournaments: "Torneos", 593 tournaments_desc: "¡Compite por recompensas exclusivas!", 594 countdown: "El Próximo Evento Comienza En", 595 support: "Apóyanos", 596 donate: "Donar", 597 privacy: "PolÃtica de Privacidad", 598 terms: "Términos", 599 contact: "Contacto", 600 footer_rights: "Titan Empire © 2025", 601 language_label: "ð Idioma:" 602 }, 603 604 fr: { 605 title: "Titan Games - Conquérir le Cosmos", 606 nav_games: "Jeux", 607 nav_featured: "En Vedette", 608 nav_community: "Communauté", 609 nav_tournaments: "Tournois", 610 ticker: "ð¥ Semaine Titan : Crédits Doubles ! | ð® Nouvelle Mise à Jour ! | ð Participez aux Tournois !", 611 fallback: "Ãchec du chargement de la vidéo de fond cosmique.", 612 login_title: "Connexion à Titan Games", 613 login_btn: "Se Connecter", 614 or_use: "Ou utiliser :", 615 register: "S'inscrire", 616 hero_subtitle: "Unir ⢠Jouer ⢠Conquérir", 617 cta_explore: "Explorer Maintenant", 618 featured: "Jeux en Vedette", 619 games: "Nos Jeux", 620 play: "Jouer", 621 view_all: "Voir Tous les Jeux", 622 fallout_desc: "Survivez à l'apocalypse.", 623 survival_desc: "Aventure dans un monde infesté de zombies.", 624 robo_desc: "Commandez des armées robotiques.", 625 mono_desc: "Jeu de société stratégique.", 626 tank_desc: "Affrontez vos ennemis dans des batailles de chars.", 627 sky_desc: "MMO de combat aérien.", 628 upcoming: "Sorties à Venir", 629 quest_desc: "Aventure RPG épique.", 630 starstrike_desc: "Ãpopée d'exploration spatiale.", 631 trailer: "Bande-Annonce", 632 news: "Centre dâActualités Titan", 633 news_1: "De nouveaux boss, un meilleur butin et des événements inter-serveurs !", 634 news_2: "Découvrez les 3 meilleurs abris conçus par les joueurs !", 635 news_3: "Combattez dans le cosmos â maintenant sur appareils Apple !", 636 community: "Notre Communauté", 637 discord_join: "Rejoignez-nous sur Discord", 638 youtube: "YouTube", 639 facebook: "Facebook", 640 google_play: "Google Play", 641 tournaments: "Tournois", 642 tournaments_desc: "Participez pour des récompenses exclusives !", 643 countdown: "Prochain Ãvénement Dans", 644 support: "Nous Soutenir", 645 donate: "Faire un Don", 646 privacy: "Politique de Confidentialité", 647 terms: "Conditions", 648 contact: "Contact", 649 footer_rights: "Titan Empire © 2025", 650 language_label: "ð Langue :" 651 }, 652 653 de: { 654 title: "Titan Games - Erobere das Universum", 655 nav_games: "Spiele", 656 nav_featured: "Empfohlen", 657 nav_community: "Community", 658 nav_tournaments: "Turniere", 659 ticker: "ð¥ Titan-Woche: Doppelte Credits! | ð® Neues Update! | ð Nimm an Turnieren teil!", 660 fallback: "Kosmisches Hintergrundvideo konnte nicht geladen werden.", 661 login_title: "Bei Titan Games anmelden", 662 login_btn: "Anmelden", 663 or_use: "Oder nutzen:", 664 register: "Registrieren", 665 hero_subtitle: "Vereinen ⢠Spielen ⢠Erobern", 666 cta_explore: "Jetzt Entdecken", 667 featured: "Empfohlene Spiele", 668 games: "Unsere Spiele", 669 play: "Spielen", 670 view_all: "Alle Spiele Ansehen", 671 fallout_desc: "Ãberlebe die Apokalypse.", 672 survival_desc: "Zombie-Ãdland-Abenteuer.", 673 robo_desc: "Befehle robotische Armeen.", 674 mono_desc: "Strategisches Brettspiel.", 675 tank_desc: "Zerstöre Feinde in Panzerkämpfen.",
676 sky_desc: "Luftkampf-MMO.", 677 upcoming: "Bevorstehende Veröffentlichungen", 678 quest_desc: "Episches RPG-Abenteuer.", 679 starstrike_desc: "Weltraum-Entdeckungsepos.", 680 trailer: "Trailer", 681 news: "Titan Nachrichtenhub", 682 news_1: "Neue Bosse, verbesserte Beute und serverübergreifende Events sind jetzt live!", 683 news_2: "Sieh dir die Top 3 unglaublichen Bunker-Designs der Spieler an!", 684 news_3: "Kämpfe dich durch das Universum â jetzt auf Apple-Geräten verfügbar!", 685 community: "Unsere Gemeinschaft", 686 discord_join: "Trete uns auf Discord bei", 687 youtube: "YouTube", 688 facebook: "Facebook", 689 google_play: "Google Play", 690 tournaments: "Turniere", 691 tournaments_desc: "Kämpfe um exklusive Belohnungen!", 692 countdown: "Nächstes Event In", 693 support: "Unterstütze Uns", 694 donate: "Spenden", 695 privacy: "Datenschutzrichtlinie", 696 terms: "Bedingungen", 697 contact: "Kontakt", 698 footer_rights: "Titan Empire © 2025", 699 language_label: "ð Sprache:" 700 }, 701 702 ru: { 703 title: "Titan Games - ÐокоÑи ÐоÑмоÑ", 704 nav_games: "ÐгÑÑ", 705 nav_featured: "ÐзбÑанное", 706 nav_community: "СообÑеÑÑво", 707 nav_tournaments: "ТÑÑниÑÑ", 708 ticker: "ð¥ ÐÐµÐ´ÐµÐ»Ñ Titan: ÐвойнÑе кÑедиÑÑ! | ð® Ðовое обновление! | ð ÐÑиÑоединÑйÑÑ Ðº ÑÑÑниÑам!", 709 fallback: "Фоновое видео не загÑÑжено.", 710 login_title: "ÐойÑи в Titan Games", 711 login_btn: "ÐойÑи", 712 or_use: "Ðли иÑполÑзоваÑÑ:", 713 register: "РегиÑÑÑаÑиÑ", 714 hero_subtitle: "ÐбÑединÑйÑÑ â¢ ÐгÑай ⢠ÐавоевÑвай", 715 cta_explore: "ÐÑÑледоваÑÑ", 716 featured: "ÐзбÑаннÑе ÐгÑÑ", 717 games: "ÐаÑи ÐгÑÑ", 718 play: "ÐгÑаÑÑ", 719 view_all: "СмоÑÑеÑÑ ÐÑе ÐгÑÑ", 720 fallout_desc: "ÐÑживи поÑле апокалипÑиÑа.", 721 survival_desc: "ÐÑиклÑÑение в миÑе зомби.", 722 robo_desc: "ÐомандÑй аÑмиÑми ÑобоÑов.", 723 mono_desc: "СÑÑаÑегиÑеÑÐºÐ°Ñ Ð½Ð°ÑÑолÑÐ½Ð°Ñ Ð¸Ð³Ñа.", 724 tank_desc: "СÑажайÑÑ Ð² ÑанковÑÑ Ð±Ð¸ÑÐ²Ð°Ñ .", 725 sky_desc: "MMO воздÑÑнÑÑ Ð±Ð¾Ñв.", 726 upcoming: "СкоÑо ÐÑÑ Ð¾Ð´ÑÑие ÐгÑÑ", 727 quest_desc: "ÐпиÑеÑкое RPG-пÑиклÑÑение.", 728 starstrike_desc: "ÐоÑмиÑеÑÐºÐ°Ñ ÑпопеÑ.", 729 trailer: "ТÑейлеÑ", 730 news: "ÐовоÑÑи Titan", 731 community: "ÐаÑе СообÑеÑÑво", 732 discord_join: "ÐÑиÑоединиÑÑÑÑ Ðº Discord", 733 youtube: "YouTube", 734 facebook: "Facebook", 735 google_play: "Google Play", 736 tournaments: "ТÑÑниÑÑ", 737 tournaments_desc: "СоÑевнÑйÑÑ Ð·Ð° ÑкÑклÑзивнÑе нагÑадÑ!", 738 countdown: "СледÑÑÑее СобÑÑие ЧеÑез", 739 support: "ÐоддеÑжи ÐаÑ", 740 donate: "ÐожеÑÑвоваÑÑ", 741 privacy: "ÐолиÑика ÐонÑиденÑиалÑноÑÑи", 742 terms: "УÑловиÑ", 743 contact: "ÐонÑакÑÑ", 744 footer_rights: "Titan Empire © 2025", 745 language_label: "ð ЯзÑк:" 746 }, 747 748 ja: { 749 title: "Titan Games - å®å®ã徿ãã", 750 nav_games: "ã²ã¼ã ", 751 nav_featured: "注ç®", 752 nav_community: "ã³ãã¥ããã£", 753 nav_tournaments: "ãã¼ãã¡ã³ã", 754 ticker: "ð¥ ã¿ã¤ã¿ã³ã¦ã£ã¼ã¯ï¼ã¯ã¬ã¸ãã2åï¼ | ð® æ°ã¢ãããã¼ãï¼ | ð ãã¼ãã¡ã³ãã«åå ãããï¼", 755 fallback: "èæ¯åç»ãèªã¿è¾¼ãã¾ããã§ããã", 756 login_title: "Titan Gamesã«ãã°ã¤ã³", 757 login_btn: "ãã°ã¤ã³", 758 or_use: "ã¾ãã¯æ¬¡ã使ç¨ï¼", 759 register: "ç»é²", 760 hero_subtitle: "å£çµ ⢠ãã¬ã¤ â¢ å¾æ", 761 cta_explore: "ä»ããæ¢æ¤", 762 featured: "注ç®ã®ã²ã¼ã ", 763 games: "ç§ãã¡ã®ã²ã¼ã ", 764 play: "ãã¬ã¤", 765 view_all: "ãã¹ã¦ã®ã²ã¼ã ãè¦ã", 766 fallout_desc: "çµæ«ãçãå»¶ã³ãã", 767 survival_desc: "ã¾ã³ãèéã®åéºã",
768 robo_desc: "ããè»å£ãææ®ããã", 769 mono_desc: "æ¦ç¥çãã¼ãã²ã¼ã ã", 770 tank_desc: "æ¦è»ããã«ã§æµãç²ç ããã", 771 sky_desc: "ç©ºä¸æ¦MMOã", 772 upcoming: "è¿æ¥ãªãªã¼ã¹", 773 quest_desc: "壮大ãªRPGã¢ããã³ãã£ã¼ã", 774 starstrike_desc: "å®å®æ¢ç´¢ã®ç©èªã", 775 trailer: "ãã¬ã¼ã©ã¼", 776 news: "Titanãã¥ã¼ã¹ãã", 777 community: "ç§ãã¡ã®ã³ãã¥ããã£", 778 discord_join: "Discordã«åå ", 779 youtube: "YouTube", 780 facebook: "Facebook", 781 google_play: "Google Play", 782 tournaments: "ãã¼ãã¡ã³ã", 783 tournaments_desc: "éå®å ±é ¬ãæã«å ¥ãããï¼", 784 countdown: "次ã®ã¤ãã³ãã¾ã§", 785 support: "ãµãã¼ã", 786 donate: "å¯ä»ãã", 787 privacy: "ãã©ã¤ãã·ã¼ããªã·ã¼", 788 terms: "å©ç¨è¦ç´", 789 contact: "ãåãåãã", 790 footer_rights: "Titan Empire © 2025", 791 language_label: "ð è¨èªï¼" 792 }, 793 794 "zh-CN": { 795 title: "Titan Games - 徿å®å®", 796 nav_games: "游æ", 797 nav_featured: "ç²¾é", 798 nav_community: "社åº", 799 nav_tournaments: "馿 èµ", 800 ticker: "ð¥ Titanå¨ï¼åå积åï¼ | ð® æ°æ´æ°ä¸çº¿ï¼ | ð å å ¥é¦æ èµï¼", 801 fallback: "èæ¯è§é¢å 载失败ã", 802 login_title: "ç»å½Titan Games", 803 login_btn: "ç»å½", 804 or_use: "æä½¿ç¨ï¼", 805 register: "注å", 806 hero_subtitle: "èå â¢ æ¸¸ç© â¢ å¾æ", 807 cta_explore: "ç«å³æ¢ç´¢", 808 featured: "ç²¾éæ¸¸æ", 809 games: "æä»¬ç游æ", 810 play: "å¼å§æ¸¸æ", 811 view_all: "æ¥çæææ¸¸æ", 812 fallout_desc: "卿«æ¥ä¸çåã", 813 survival_desc: "åµå°¸èååé©ã", 814 robo_desc: "ææ¥æºå¨äººåéã", 815 mono_desc: "çç¥æ¡æ¸¸ã", 816 tank_desc: "å¦å 大æä¸å»è´¥æäººã", 817 sky_desc: "空æMMOã", 818 upcoming: "å³å°ä¸çº¿", 819 quest_desc: "å²è¯RPGåé©ã", 820 starstrike_desc: "太空æ¢ç´¢å²è¯ã", 821 trailer: "é¢åç", 822 news: "Titanæ°é»ä¸å¿", 823 community: "æä»¬ç社åº", 824 discord_join: "å å ¥Discord", 825 youtube: "YouTube", 826 facebook: "Facebook", 827 google_play: "Google Play", 828 tournaments: "馿 èµ", 829 tournaments_desc: "èµ¢åç¬å®¶å¥å±ï¼", 830 countdown: "ä¸ä¸ä¸ªæ´»å¨å计æ¶", 831 support: "æ¯ææä»¬", 832 donate: "æèµ ", 833 privacy: "éç§æ¿ç", 834 terms: "æ¡æ¬¾", 835 contact: "èç³»æä»¬", 836 footer_rights: "Titan Empire © 2025", 837 language_label: "ð è¯è¨ï¼" 838 }, 839 840 "pt-BR": { 841 title: "Titan Games - Conquiste o Cosmos", 842 nav_games: "Jogos", 843 nav_featured: "Destaques", 844 nav_community: "Comunidade", 845 nav_tournaments: "Torneios", 846 ticker: "ð¥ Semana Titan: Créditos em Dobro! | ð® Nova Atualização! | ð Participe dos Torneios!", 847 fallback: "VÃdeo de fundo não carregado.", 848 login_title: "Entrar no Titan Games", 849 login_btn: "Entrar", 850 or_use: "Ou usar:", 851 register: "Registrar", 852 hero_subtitle: "Unir ⢠Jogar ⢠Conquistar", 853 cta_explore: "Explorar Agora", 854 featured: "Jogos em Destaque", 855 games: "Nossos Jogos", 856 play: "Jogar", 857 view_all: "Ver Todos os Jogos", 858 fallout_desc: "Sobreviva ao apocalipse.", 859 survival_desc: "Aventura em terras zumbis.", 860 robo_desc: "Comande exércitos robóticos.", 861 mono_desc: "Jogo de tabuleiro estratégico.", 862 tank_desc: "Destrua inimigos em batalhas de tanques.", 863 sky_desc: "MMO de combate aéreo.", 864 upcoming: "Lançamentos em Breve", 865 quest_desc: "Aventura RPG Ãpica.", 866 starstrike_desc: "Exploração Espacial Ãpica.", 867 trailer: "Trailer", 868 news: "Central de NotÃcias Titan", 869 community: "Nossa Comunidade", 870 discord_join: "Junte-se no Discord", 871 youtube: "YouTube", 872 facebook: "Facebook", 873 google_play: "Google Play", 874 tournaments: "Torneios", 875 tournaments_desc: "Compita por recompensas exclusivas!", 876 countdown: "Próximo Evento em", 877 support: "Apoie-nos", 878 donate: "Doar", 879 privacy: "PolÃtica de Privacidade", 880 terms: "Termos", 881 contact: "Contato", 882 footer_rights: "Titan Empire © 2025", 883 language_label: "ð Idioma:" 884 }, 885 886 it: { 887 title: "Titan Games - Conquista il Cosmo", 888 nav_games: "Giochi", 889 nav_featured: "In Evidenza", 890 nav_community: "Comunità ", 891 nav_tournaments: "Tornei", 892 ticker: "ð¥ Settimana Titan: Crediti Doppi! | ð® Nuovo Aggiornamento! | ð Partecipa ai Tornei!", 893 fallback: "Video di sfondo non caricato.", 894 login_title: "Accedi a Titan Games", 895 login_btn: "Accedi", 896 or_use: "Oppure usa:", 897 register: "Registrati", 898 hero_subtitle: "Unisciti ⢠Gioca ⢠Conquista", 899 cta_explore: "Esplora Ora", 900 featured: "Giochi in Evidenza",
901 games: "I Nostri Giochi", 902 play: "Gioca", 903 view_all: "Vedi Tutti i Giochi", 904 fallout_desc: "Sopravvivi all'apocalisse.", 905 survival_desc: "Avventura nel mondo dei zombie.", 906 robo_desc: "Comanda eserciti robotici.", 907 mono_desc: "Gioco da tavolo strategico.", 908 tank_desc: "Distruggi i nemici in battaglie tra carri armati.", 909 sky_desc: "MMO di combattimento aereo.", 910 upcoming: "Prossime Uscite", 911 quest_desc: "Epica avventura RPG.", 912 starstrike_desc: "Epica esplorazione spaziale.", 913 trailer: "Trailer", 914 news: "Centro Notizie Titan", 915 community: "La Nostra Comunità ", 916 discord_join: "Unisciti su Discord", 917 youtube: "YouTube", 918 facebook: "Facebook", 919 google_play: "Google Play", 920 tournaments: "Tornei", 921 tournaments_desc: "Competi per premi esclusivi!", 922 countdown: "Prossimo Evento In", 923 support: "Sostienici", 924 donate: "Dona", 925 privacy: "Informativa sulla Privacy", 926 terms: "Termini", 927 contact: "Contatti", 928 footer_rights: "Titan Empire © 2025", 929 language_label: "ð Lingua:" 930 }, 931 932 ko: { 933 title: "Titan Games - ì°ì£¼ë¥¼ ì ë³µíë¼", 934 nav_games: "ê²ì", 935 nav_featured: "ì¶ì²", 936 nav_community: "커뮤ëí°", 937 nav_tournaments: "í ë먼í¸", 938 ticker: "ð¥ íì´í 주ê°: ë ë°° í¬ë ë§! | ð® ì ì ë°ì´í¸! | ð í ë먼í¸ì ì°¸ì¬íì¸ì!", 939 fallback: "ë°°ê²½ ë¹ëì¤ë¥¼ ë¶ë¬ì¬ ì ììµëë¤.", 940 login_title: "Titan Games ë¡ê·¸ì¸", 941 login_btn: "ë¡ê·¸ì¸", 942 or_use: "ëë ì¬ì©:", 943 register: "ë±ë¡", 944 hero_subtitle: "ë¨ê²° ⢠íë ì´ â¢ ì ë³µ", 945 cta_explore: "ì§ê¸ ííí기", 946 featured: "ì¶ì² ê²ì", 947 games: "ì°ë¦¬ì ê²ì", 948 play: "íë ì´", 949 view_all: "모ë ê²ì 보기", 950 fallout_desc: "ì¢ ë§ í ìì¡´íë¼.", 951 survival_desc: "ì¢ë¹ í©ë¬´ì§ 모í.", 952 robo_desc: "ë¡ë´ êµ°ë를 ì§ííë¼.", 953 mono_desc: "ì ëµ ë³´ë ê²ì.", 954 tank_desc: "ì ì°¨ ì í¬ìì ì ì 격ííë¼.", 955 sky_desc: "íê³µì MMO.", 956 upcoming: "ì¶ì ìì ", 957 quest_desc: "ìì¬ì RPG 모í.", 958 starstrike_desc: "ì°ì£¼ íí ëìì¬ì.", 959 trailer: "í¸ë ì¼ë¬", 960 news: "Titan ë´ì¤ íë¸", 961 community: "ì°ë¦¬ì 커뮤ëí°", 962 discord_join: "Discordì ì°¸ì¬", 963 youtube: "YouTube", 964 facebook: "Facebook", 965 google_play: "Google Play", 966 tournaments: "í ë먼í¸", 967 tournaments_desc: "ë ì ë³´ìì ìí´ ê²½ìíì¸ì!", 968 countdown: "ë¤ì ì´ë²¤í¸ê¹ì§", 969 support: "ì§ì", 970 donate: "기ë¶", 971 privacy: "ê°ì¸ì ë³´ ë³´í¸ì ì± ", 972 terms: "ì´ì©ì½ê´", 973 contact: "ì°ë½ì²", 974 footer_rights: "Titan Empire © 2025", 975 language_label: "ð ì¸ì´:" 976 }, 977 978 pl: { 979 title: "Titan Games - Podbij Kosmos", 980 nav_games: "Gry", 981 nav_featured: "Polecane", 982 nav_community: "SpoÅecznoÅÄ", 983 nav_tournaments: "Turnieje", 984 ticker: "ð¥ TydzieÅ Titan: Podwójne Kredyty! | ð® Nowa Aktualizacja! | ð DoÅÄ cz do Turniejów!", 985 fallback: "Nie udaÅo siÄ zaÅadowaÄ tÅa wideo.", 986 login_title: "Zaloguj siÄ do Titan Games", 987 login_btn: "Zaloguj siÄ", 988 or_use: "Lub użyj:", 989 register: "Zarejestruj siÄ", 990 hero_subtitle: "Zjednocz siÄ â¢ Graj ⢠Podbijaj", 991 cta_explore: "Odkrywaj Teraz", 992 featured: "Polecane Gry", 993 games: "Nasze Gry", 994 play: "Graj", 995 view_all: "Zobacz Wszystkie Gry", 996 fallout_desc: "Przetrwaj apokalipsÄ.", 997 survival_desc: "Przygoda na pustkowiu zombie.", 998 robo_desc: "Dowódź armiami robotów.", 999 mono_desc: "Strategiczna gra planszowa.", 1000 tank_desc: "Pokonaj wrogów w bitwach czoÅgowych.", 1001 sky_desc: "MMO walk powietrznych.", 1002 upcoming: "NadchodzÄ ce Premiery", 1003 quest_desc: "Epicka przygoda RPG.", 1004 starstrike_desc: "Epopeja o eksploracji kosmosu.", 1005 trailer: "Zwiastun", 1006 news: "Centrum WiadomoÅci Titan", 1007 community: "Nasza SpoÅecznoÅÄ", 1008 discord_join: "DoÅÄ cz na Discord", 1009 youtube: "YouTube", 1010 facebook: "Facebook", 1011 google_play: "Google Play", 1012 tournaments: "Turnieje", 1013 tournaments_desc: "Rywalizuj o ekskluzywne nagrody!", 1014 countdown: "NastÄpne Wydarzenie Za",
1015 support: "Wesprzyj Nas", 1016 donate: "Wspomóż", 1017 privacy: "Polityka PrywatnoÅci", 1018 terms: "Warunki", 1019 contact: "Kontakt", 1020 footer_rights: "Titan Empire © 2025", 1021 language_label: "ð JÄzyk:" 1022 }, 1023 1024 tr: { 1025 title: "Titan Games - Evreni Fethet", 1026 nav_games: "Oyunlar", 1027 nav_featured: "Ãne Ãıkanlar", 1028 nav_community: "Topluluk", 1029 nav_tournaments: "Turnuvalar", 1030 ticker: "ð¥ Titan Haftası: Ãift Kredi! | ð® Yeni Güncelleme! | ð Turnuvalara Katıl!", 1031 fallback: "Arka plan videosu yüklenemedi.", 1032 login_title: "Titan Games'e GiriÅ Yap", 1033 login_btn: "GiriÅ Yap", 1034 or_use: "Veya kullan:", 1035 register: "Kayıt Ol", 1036 hero_subtitle: "BirleŠ⢠Oyna ⢠Fethede", 1037 cta_explore: "Hemen KeÅfet", 1038 featured: "Ãne Ãıkan Oyunlar", 1039 games: "Oyunlarımız", 1040 play: "Oyna", 1041 view_all: "Tüm Oyunları Gör", 1042 fallout_desc: "Kıyametten saÄ Ã§Ä±k.", 1043 survival_desc: "Zombi diyarında macera.", 1044 robo_desc: "Robot ordularına komuta et.", 1045 mono_desc: "Stratejik masa oyunu.", 1046 tank_desc: "Tank savaÅlarında düÅmanlarını yok et.", 1047 sky_desc: "Hava savaÅı MMO.", 1048 upcoming: "Yakında Ãıkacaklar", 1049 quest_desc: "Efsanevi RPG macerası.", 1050 starstrike_desc: "Uzay keÅif destanı.", 1051 trailer: "Fragman", 1052 news: "Titan Haber Merkezi", 1053 community: "TopluluÄumuz", 1054 discord_join: "Discordâa Katıl", 1055 youtube: "YouTube", 1056 facebook: "Facebook", 1057 google_play: "Google Play", 1058 tournaments: "Turnuvalar", 1059 tournaments_desc: "Ãzel ödüller için yarıÅ!", 1060 countdown: "Sonraki Etkinlik BaÅlıyor", 1061 support: "Bizi Destekle", 1062 donate: "BaÄıŠYap", 1063 privacy: "Gizlilik Politikası", 1064 terms: "Åartlar", 1065 contact: "İletiÅim", 1066 footer_rights: "Titan Empire © 2025", 1067 language_label: "ð Dil:" 1068 } 1069}; 1070 1071// ========================================================== 1072// ð CONTACT PAGE TRANSLATIONS (MERGED INTO MAIN SYSTEM) 1073// ========================================================== 1074Object.keys(translations).forEach(lang => { 1075 if (!translations[lang]) translations[lang] = {}; 1076 const t = translations[lang]; 1077 1078 const merged = { 1079 contact_title: { 1080 en: "Contact Titan Games", 1081 es: "Contactar a Titan Games", 1082 fr: "Contacter Titan Games", 1083 de: "Kontakt zu Titan Games", 1084 ru: "СвÑзаÑÑÑÑ Ñ Titan Games", 1085 ja: "Titan Gamesã¸ã®ãåãåãã", 1086 "zh-CN": "èç³» Titan Games", 1087 "pt-BR": "Contate a Titan Games", 1088 it: "Contatta Titan Games", 1089 ko: "Titan Games 문ìí기", 1090 pl: "Skontaktuj siÄ z Titan Games", 1091 tr: "Titan Games ile İletiÅim" 1092 }, 1093 contact_intro: { 1094 en: "Weâd love to hear from you! Whether youâre reporting a bug, submitting feedback, or requesting collaboration â get in touch below.", 1095 es: "¡Nos encantarÃa saber de ti! Ya sea que informes un error, envÃes comentarios o solicites colaboración, contáctanos a continuación.", 1096 fr: "Nous serions ravis dâavoir de vos nouvelles ! Que vous signaliez un bug, donniez un avis ou proposiez une collaboration â contactez-nous ci-dessous.", 1097 de: "Wir würden uns freuen, von dir zu hören! Ob du einen Fehler meldest, Feedback gibst oder eine Zusammenarbeit vorschlägst â kontaktiere uns unten.", 1098 ru: "ÐÑ Ð±Ñдем ÑÐ°Ð´Ñ Ð²Ð°Ñ ÑÑлÑÑаÑÑ! СообÑиÑе об оÑибке, оÑÑавÑÑе оÑзÑв или пÑедложиÑе ÑоÑÑÑдниÑеÑÑво â напиÑиÑе нам ниже.", 1099 ja: "ãæè¦ã»ãè¦æããèãããã ããï¼ãã°å ±åããã£ã¼ãããã¯ãã¾ãã¯ã³ã©ãã®ãææ¡ãªã©ã以ä¸ã®ãã©ã¼ã ãããé£çµ¡ãã ããã", 1100 "zh-CN": "æä»¬æå¾ æ¨çæ¥ä¿¡ï¼æ è®ºæ¯æ¥åé®é¢ãæä¾åé¦ï¼è¿æ¯æåºåä½è¯·æ±ï¼è¯·éè¿ä¸æ¹è系表èç³»æä»¬ã", 1101 "pt-BR": "AdorarÃamos ouvir você! Seja para relatar um bug, enviar feedback ou propor colaboração â entre em contato abaixo.", 1102 it: "Ci piacerebbe sentirti! Che si tratti di segnalare un bug, inviare un feedback o proporre una collaborazione â contattaci qui sotto.", 1103 ko: "ë²ê·¸ ë³´ê³ , í¼ëë°± ëë íì ì ì ë± ì¸ì ë íìí©ëë¤! ìë ììì ìì±í´ì£¼ì¸ì.", 1104 pl: "ChÄtnie CiÄ wysÅuchamy! ZgÅoÅ bÅÄ d, podziel siÄ opiniÄ lub zaproponuj wspóÅpracÄ â wypeÅnij poniższy formularz.", 1105 tr: "Sizden haber almak isteriz! Hata bildirimi, geri bildirim veya iÅbirliÄi talebi için aÅaÄıdan bizimle iletiÅime geçin." 1106 }, 1107 contact_name: { 1108 en: "Your Name", es: "Tu Nombre", fr: "Votre Nom", de: "Dein Name", 1109 ru: "ÐаÑе ÐмÑ", ja: "ãåå", "zh-CN": "æ¨çå§å", "pt-BR": "Seu Nome",
1110 it: "Il tuo nome", ko: "ì´ë¦", pl: "Twoje ImiÄ", tr: "Adınız" 1111 }, 1112 contact_email: { 1113 en: "Your Email", es: "Tu Correo Electrónico", fr: "Votre Email", de: "Deine E-Mail", 1114 ru: "ÐÐ°Ñ Email", ja: "ã¡ã¼ã«ã¢ãã¬ã¹", "zh-CN": "æ¨çé®ç®±", "pt-BR": "Seu E-mail", 1115 it: "La tua email", ko: "ì´ë©ì¼", pl: "Twój Email", tr: "E-postanız" 1116 }, 1117 contact_message: { 1118 en: "Your Message", es: "Tu Mensaje", fr: "Votre Message", de: "Deine Nachricht", 1119 ru: "ÐаÑе СообÑение", ja: "ã¡ãã»ã¼ã¸å 容", "zh-CN": "æ¨ççè¨", "pt-BR": "Sua Mensagem", 1120 it: "Il tuo messaggio", ko: "ë©ìì§ ë´ì©", pl: "Twoja WiadomoÅÄ", tr: "Mesajınız" 1121 }, 1122 contact_button: { 1123 en: "Send Message", es: "Enviar Mensaje", fr: "Envoyer le Message", de: "Nachricht Senden", 1124 ru: "ÐÑпÑавиÑÑ Ð¡Ð¾Ð¾Ð±Ñение", ja: "ã¡ãã»ã¼ã¸ãéä¿¡", "zh-CN": "åéæ¶æ¯", "pt-BR": "Enviar Mensagem", 1125 it: "Invia Messaggio", ko: "ë©ìì§ ë³´ë´ê¸°", pl: "WyÅlij WiadomoÅÄ", tr: "Mesaj Gönder" 1126 }, 1127 contact_alt: { 1128 en: "Or email us directly at", es: "O envÃanos un correo directamente a", fr: "Ou envoyez-nous directement un email à ", 1129 de: "Oder sende uns direkt eine E-Mail an", ru: "Ðли напиÑиÑе нам напÑÑмÑÑ Ð½Ð°", ja: "ã¾ãã¯æ¬¡ã®ã¡ã¼ã«ã¢ãã¬ã¹ã¸ç´æ¥ãé£çµ¡ãã ããï¼", 1130 "zh-CN": "æç´æ¥åéé®ä»¶è³", "pt-BR": "Ou envie-nos um e-mail diretamente para", it: "Oppure scrivici direttamente a", 1131 ko: "ëë ë¤ì 주ìë¡ ì§ì ì´ë©ì¼ì ë³´ë´ì£¼ì¸ì:", pl: "Lub napisz bezpoÅrednio na adres", tr: "Veya doÄrudan Åu adrese e-posta gönderin:" 1132 } 1133 }; 1134 1135 for (const key in merged) { 1136 t[key] = merged[key][lang] || merged[key].en; 1137 } 1138}); 1139 1140// ========================================================== 1141// ð PRIVACY PAGE TRANSLATIONS (MERGED INTO MAIN SYSTEM) 1142// ========================================================== 1143Object.keys(translations).forEach(lang => { 1144 if (!translations[lang]) translations[lang] = {}; 1145 const t = translations[lang]; 1146 1147 const merged = { 1148 privacy_title: { 1149 en: "Privacy Policy", es: "PolÃtica de Privacidad", fr: "Politique de Confidentialité", 1150 de: "Datenschutzrichtlinie", ru: "ÐолиÑика конÑиденÑиалÑноÑÑи", ja: "ãã©ã¤ãã·ã¼ããªã·ã¼", 1151 "zh-CN": "éç§æ¿ç", "pt-BR": "PolÃtica de Privacidade", it: "Informativa sulla Privacy", 1152 ko: "ê°ì¸ì ë³´ ë³´í¸ì ì± ", pl: "Polityka PrywatnoÅci", tr: "Gizlilik Politikası" 1153 }, 1154 privacy_updated: { 1155 en: "Last updated: November 6, 2025", es: "Ãltima actualización: 6 de noviembre de 2025", 1156 fr: "Dernière mise à jour : 6 novembre 2025", de: "Zuletzt aktualisiert: 6. November 2025", 1157 ru: "ÐоÑледнее обновление: 6 ноÑбÑÑ 2025", ja: "æçµæ´æ°æ¥: 2025å¹´11æ6æ¥", 1158 "zh-CN": "æåæ´æ°ï¼2025å¹´11æ6æ¥", "pt-BR": "Ãltima atualização: 6 de novembro de 2025", 1159 it: "Ultimo aggiornamento: 6 novembre 2025", ko: "ë§ì§ë§ ì ë°ì´í¸: 2025ë 11ì 6ì¼", 1160 pl: "Ostatnia aktualizacja: 6 listopada 2025", tr: "Son güncelleme: 6 Kasım 2025" 1161 }, 1162 privacy_intro: { 1163 en: "Titan Games values your privacy and explains how we collect, use, and protect your data.", 1164 es: "Titan Games valora tu privacidad y explica cómo recopilamos, usamos y protegemos tus datos.", 1165 fr: "Titan Games accorde une grande importance à votre vie privée et explique comment nous collectons, utilisons et protégeons vos données.", 1166 de: "Titan Games legt Wert auf Ihre Privatsphäre und erklärt, wie wir Ihre Daten erfassen, verwenden und schützen.", 1167 ru: "Titan Games ÑÐµÐ½Ð¸Ñ Ð²Ð°ÑÑ ÐºÐ¾Ð½ÑиденÑиалÑноÑÑÑ Ð¸ обÑÑÑнÑеÑ, как Ð¼Ñ ÑобиÑаем, иÑполÑзÑем и заÑиÑаем ваÑи даннÑе.", 1168 ja: "Titan Gamesã¯ã客æ§ã®ãã©ã¤ãã·ã¼ãéè¦ãããã¼ã¿ã®åéã»å©ç¨ã»ä¿è·ã«ã¤ãã¦èª¬æãã¾ãã", 1169 "zh-CN": "Titan Gameséè§æ¨çéç§ï¼å¹¶è§£éæä»¬å¦ä½æ¶éã使ç¨åä¿æ¤æ¨çæ°æ®ã", 1170 "pt-BR": "A Titan Games valoriza sua privacidade e explica como coletamos, usamos e protegemos seus dados.", 1171 it: "Titan Games tiene alla tua privacy e spiega come raccogliamo, usiamo e protegg
1171iamo i tuoi dati.", 1172 ko: "Titan Gamesë ê·íì ê°ì¸ ì 보를 ìì¤í ì¬ê¸°ë©°, ë°ì´í°ë¥¼ ìì§, ì¬ì© ë° ë³´í¸íë ë°©ë²ì ì¤ëª í©ëë¤.", 1173 pl: "Titan Games ceni TwojÄ prywatnoÅÄ i wyjaÅnia, jak zbieramy, wykorzystujemy i chronimy Twoje dane.", 1174 tr: "Titan Games gizliliÄinize deÄer verir ve verilerinizi nasıl topladıÄımızı, kullandıÄımızı ve koruduÄumuzu açıklar." 1175 }, 1176 privacy_1_title: { 1177 en: "1. Information We Collect", es: "1. Información que recopilamos", fr: "1. Informations collectées", 1178 de: "1. Informationen, die wir sammeln", ru: "1. ÐнÑоÑмаÑиÑ, коÑоÑÑÑ Ð¼Ñ ÑобиÑаем", 1179 ja: "1. åéããæ å ±", "zh-CN": "1. æä»¬æ¶éçä¿¡æ¯", "pt-BR": "1. Informações que coletamos", 1180 it: "1. Informazioni che raccogliamo", ko: "1. ìì§íë ì ë³´", pl: "1. Informacje, które zbieramy", tr: "1. TopladıÄımız Bilgiler" 1181 }, 1182 privacy_2_title: { 1183 en: "2. How We Use Your Data", es: "2. Cómo usamos tus datos", fr: "2. Utilisation de vos données", 1184 de: "2. Wie wir Ihre Daten verwenden", ru: "2. Ðак Ð¼Ñ Ð¸ÑполÑзÑем ваÑи даннÑе", 1185 ja: "2. ãã¼ã¿ã®å©ç¨æ¹æ³", "zh-CN": "2. æä»¬å¦ä½ä½¿ç¨æ¨çæ°æ®", "pt-BR": "2. Como usamos seus dados", 1186 it: "2. Come usiamo i tuoi dati", ko: "2. ë°ì´í° ì¬ì© ë°©ì", pl: "2. Jak wykorzystujemy Twoje dane", tr: "2. Verilerinizi Nasıl Kullanıyoruz" 1187 }, 1188 privacy_3_title: { 1189 en: "3. Cookies", es: "3. Cookies", fr: "3. Cookies", de: "3. Cookies", 1190 ru: "3. Ð¤Ð°Ð¹Ð»Ñ cookie", ja: "3. ã¯ããã¼", "zh-CN": "3. Cookies", "pt-BR": "3. Cookies", 1191 it: "3. Cookie", ko: "3. ì¿ í¤", pl: "3. Pliki cookie", tr: "3. Ãerezler" 1192 }, 1193 privacy_4_title: { 1194 en: "4. Third-Party Services", es: "4. Servicios de terceros", fr: "4. Services tiers", 1195 de: "4. Drittanbieter-Dienste", ru: "4. СÑоÑонние ÑеÑвиÑÑ", ja: "4. ãµã¼ããã¼ãã£ãµã¼ãã¹", 1196 "zh-CN": "4. ç¬¬ä¸æ¹æå¡", "pt-BR": "4. Serviços de Terceiros", it: "4. Servizi di Terze Parti", 1197 ko: "4. ì 3ì ìë¹ì¤", pl: "4. UsÅugi stron trzecich", tr: "4. Ãçüncü Taraf Hizmetleri" 1198 }, 1199 privacy_5_title: { 1200 en: "5. Data Security", es: "5. Seguridad de los Datos", fr: "5. Sécurité des Données", 1201 de: "5. Datensicherheit", ru: "5. ÐезопаÑноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ ", ja: "5. ãã¼ã¿ã®å®å ¨æ§", 1202 "zh-CN": "5. æ°æ®å®å ¨", "pt-BR": "5. Segurança dos Dados", it: "5. Sicurezza dei Dati", 1203 ko: "5. ë°ì´í° ë³´ì", pl: "5. BezpieczeÅstwo Danych", tr: "5. Veri GüvenliÄi" 1204 }, 1205 privacy_6_title: { 1206 en: "6. Contact", es: "6. Contacto", fr: "6. Contact", de: "6. Kontakt", 1207 ru: "6. ÐонÑакÑ", ja: "6. ãåãåãã", "zh-CN": "6. èç³»æä»¬", "pt-BR": "6. Contato", 1208 it: "6. Contatto", ko: "6. 문ì", pl: "6. Kontakt", tr: "6. İletiÅim" 1209 } 1210 }; 1211 1212 for (const key in merged) { 1213 t[key] = merged[key][lang] || merged[key].en; 1214 } 1215}); 1216 1217// ========================================================== 1218// ð TERMS PAGE TRANSLATIONS (MERGED INTO MAIN SYSTEM) 1219// ========================================================== 1220Object.keys(translations).forEach(lang => { 1221 if (!translations[lang]) translations[lang] = {}; 1222 const t = translations[lang]; 1223 1224 const merged = { 1225 terms_title: { 1226 en: "Terms of Service", es: "Términos de Servicio", fr: "Conditions d'utilisation", 1227 de: "Nutzungsbedingungen", ru: "УÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ð±ÑлÑживаниÑ", ja: "å©ç¨è¦ç´", 1228 "zh-CN": "æå¡æ¡æ¬¾", "pt-BR": "Termos de Serviço", it: "Termini di Servizio", 1229 ko: "ìë¹ì¤ ì½ê´", pl: "Warunki korzystania", tr: "Hizmet Åartları" 1230 }, 1231 terms_updated: { 1232 en: "Last updated: November 6, 2025", es: "Ãltima actualización: 6 de noviembre de 2025", 1233 fr: "Dernière mise à jour : 6 novembre 2025", de: "Zuletzt aktualisiert: 6. November 2025", 1234 ru: "ÐоÑледнее обновление: 6 ноÑбÑÑ 2025", ja: "æçµæ´æ°æ¥: 2025å¹´11æ6æ¥", 1235 "zh-CN": "æåæ´æ°ï¼2025å¹´11æ6æ¥", "pt-BR": "Ãltima atualização: 6 de novembro de 2025", 1236 it: "Ultimo aggiornamento: 6 novembre 2025", ko: "ë§ì§ë§ ì ë°ì´í¸: 2025ë 11ì 6ì¼", 1237 pl: "Ostatnia aktualizacja: 6 listopada 2025", tr: "Son güncelleme: 6 Kasım 2025" 1238 }, 1239 terms_1_title: { 1240 en: "1. Acceptance of Terms", es: "1. Aceptación de los Términos", fr: "1. Acceptation des Conditions", 1241 de: "1. Annahme der Bedingungen", ru: "1. ÐÑинÑÑие ÑÑловий", ja: "1. è¦ç´ã®æ¿è«¾", 1242 "zh-CN": "1. æ¥åæ¡æ¬¾", "pt-BR": "1. Aceitação dos Termos", it: "1. Accettazione dei Termini", 1243 ko: "1. ì½ê´ ëì", pl: "1. Akceptacja warunków", tr: "1. Åartların Kabulü" 1244 }, 1245 terms_1_text: { 1246 en: "By using Titan Games, you agree to these Terms of Service.", 1247 es: "Al usar Titan Games, aceptas estos Términos de Servicio.", 1248 fr: "En utilisant Titan Games, vous acceptez ces Conditions d'utilisation.", 1249 de: "Durch die Nutzung von Titan Games stimmen Sie diesen Nutzungsbedingungen zu.", 1250 ru: "ÐÑполÑзÑÑ Titan Games, Ð²Ñ ÑоглаÑаеÑеÑÑ Ñ ÑÑими УÑловиÑми обÑлÑживаниÑ.", 1251 ja: "Titan Gamesãå©ç¨ãããã¨ã§ããããã®å©ç¨è¦ç´ã«åæãããã®ã¨ã¿ãªã
1251ãã¾ãã", 1252 "zh-CN": "使ç¨Titan Gameså³è¡¨ç¤ºæ¨åæè¿äºæå¡æ¡æ¬¾ã", 1253 "pt-BR": "Ao usar o Titan Games, você concorda com estes Termos de Serviço.", 1254 it: "Utilizzando Titan Games, accetti i presenti Termini di Servizio.", 1255 ko: "Titan Games를 ì¬ì©í¨ì¼ë¡ì¨ 본 ì´ì©ì½ê´ì ëìíê² ë©ëë¤.", 1256 pl: "KorzystajÄ c z Titan Games, akceptujesz niniejsze Warunki korzystania.", 1257 tr: "Titan Games'i kullanarak bu Hizmet Åartlarını kabul etmiÅ olursunuz." 1258 }, 1259 terms_2_title: { 1260 en: "2. Use of Services", es: "2. Uso de los Servicios", fr: "2. Utilisation des Services", 1261 de: "2. Nutzung der Dienste", ru: "2. ÐÑполÑзование ÑеÑвиÑов", ja: "2. ãµã¼ãã¹ã®å©ç¨", 1262 "zh-CN": "2. æå¡ä½¿ç¨", "pt-BR": "2. Uso dos Serviços", it: "2. Uso dei Servizi", 1263 ko: "2. ìë¹ì¤ ì´ì©", pl: "2. Korzystanie z UsÅug", tr: "2. Hizmetlerin Kullanımı" 1264 }, 1265 terms_2_item1: { 1266 en: "Be at least 13 years old", es: "Tener al menos 13 años", fr: "Avoir au moins 13 ans", 1267 de: "Mindestens 13 Jahre alt sein", ru: "ÐÑÑÑ Ð½Ðµ моложе 13 леÑ", ja: "13æ³ä»¥ä¸ã§ãããã¨", 1268 "zh-CN": "è³å°13å²", "pt-BR": "Ter pelo menos 13 anos", it: "Avere almeno 13 anni", 1269 ko: "ë§ 13ì¸ ì´ìì´ì´ì¼ í©ëë¤", pl: "MieÄ co najmniej 13 lat", tr: "En az 13 yaÅında olun" 1270 }, 1271 terms_2_item2: { 1272 en: "Refrain from harassment or cheating", es: "Abstenerse de acosar o hacer trampas", 1273 fr: "S'abstenir de harcèlement ou de triche", de: "Kein Belästigen oder Betrügen", 1274 ru: "ÐоздеÑживаÑÑÑÑ Ð¾Ñ Ð´Ð¾Ð¼Ð¾Ð³Ð°ÑелÑÑÑв или моÑенниÑеÑÑва", ja: "å«ãããã䏿£è¡çºãããªããã¨", 1275 "zh-CN": "é¿å éªæ°æä½å¼", "pt-BR": "Abster-se de assédio ou trapaça", it: "Evitare molestie o imbrogli", 1276 ko: "ê´´ë¡íì´ë ë¶ì íì를 íì§ ë§ì¸ì", pl: "Powstrzymaj siÄ od nÄkania lub oszustw", tr: "Taciz veya hileden kaçının" 1277 }, 1278 terms_2_item3: { 1279 en: "Not exploit bugs, hacks, or reverse-engineer our games", 1280 es: "No explotar errores, hacks o ingenierÃa inversa en nuestros juegos", 1281 fr: "Ne pas exploiter de bugs, hacks ou rétro-ingénierie de nos jeux", 1282 de: "Keine Bugs, Hacks ausnutzen oder unsere Spiele rückentwickeln", 1283 ru: "Ðе иÑполÑзоваÑÑ Ð¾Ñибки, Ñ Ð°ÐºÐ¸ или обÑаÑное пÑоекÑиÑование наÑÐ¸Ñ Ð¸Ð³Ñ", 1284 ja: "ãã°ãããã¯ãæªç¨ããããã²ã¼ã ããªãã¼ã¹ã¨ã³ã¸ãã¢ãªã³ã°ããªããã¨", 1285 "zh-CN": "ä¸å¾å©ç¨æ¼æ´ãé»å®¢è¡ä¸ºæååå·¥ç¨æä»¬çæ¸¸æ", 1286 "pt-BR": "Não explorar bugs, hacks ou fazer engenharia reversa de nossos jogos", 1287 it: "Non sfruttare bug, hack o fare reverse engineering dei nostri giochi", 1288 ko: "ë²ê·¸, íµ ëë ìê³µíì íì§ ë§ì¸ì", 1289 pl: "Nie wykorzystuj bÅÄdów, hacków ani nie odtwarzaj naszych gier wstecznie", 1290 tr: "Hataları, hileleri veya oyunlarımızı tersine mühendisliÄi kullanmayın" 1291 } 1292 }; 1293 1294 for (const key in merged) { 1295 t[key] = merged[key][lang] || merged[key].en; 1296 } 1297}); 1298 1299// ========================================================== 1300// ð DONATIONS PAGE TRANSLATIONS (NEW FULL VERSION) 1301// ========================================================== 1302Object.keys(translations).forEach(lang => { 1303 if (!translations[lang]) translations[lang] = {}; 1304 const t = translations[lang]; 1305 1306 const merged = { 1307 donate_title: { 1308 en: "Support the Titan Empire", 1309 es: "Apoya al Imperio Titan", 1310 fr: "Soutenez l'Empire Titan", 1311 de: "Unterstütze das Titan-Imperium", 1312 ru: "ÐоддеÑжиÑе ÐмпеÑÐ¸Ñ Ð¢Ð¸Ñан", 1313 ja: "ã¿ã¤ã¿ã³ã»ã¨ã³ãã¤ã¢ãæ¯æ´ãã", 1314 "zh-CN": "æ¯ææ³°å¦å¸å½", 1315 "pt-BR": "Apoie o Império Titan", 1316 it: "Sostieni lâImpero Titan", 1317 ko: "íì´í ì êµì ì§ìíì¸ì", 1318 pl: "Wesprzyj Imperium Tytanów", 1319 tr: "Titan İmparatorluÄunu Destekle" 1320 }, 1321 donate_intro: { 1322 en: "Titan Games is a <strong>100% free-to-play</strong> universe â no pay-to-win, no unfair advantages. We believe every player deserves a fair battleground where <strong>skill, teamwork, and creativity</strong> define victory. Your support keeps Titan Games thriving â funding new worlds, advanced systems, and a stronger, fairer gaming community.",es: "Titan Games es un universo completamente gratuito â sin pagar para ganar ni ventajas injustas. Creemos que cada jugador merece un campo de batalla justo donde la habilidad, el trabajo en equipo y la creatividad definan la victoria. Tu apoyo mantiene vivo Titan Games, financiando nuevos mundos, sistemas avanzados y una comunidad más fuerte.", 1323 fr: "Titan Games est un univers 100 % gratuit â sans pay-to-win
1323ni avantages injustes. Nous croyons que chaque joueur mérite un champ de bataille équitable où la compétence, le travail d'équipe et la créativité définissent la victoire. Votre soutien fait prospérer Titan Games, finançant de nouveaux mondes, systèmes et une communauté plus forte.", 1324 de: "Titan Games ist ein vollständig kostenloses Universum â kein Pay-to-Win, keine unfairen Vorteile. Wir glauben, dass jeder Spieler ein faires Spielfeld verdient, auf dem Können, Teamwork und Kreativität den Sieg bestimmen. Deine Unterstützung hält Titan Games am Leben und finanziert neue Welten, Systeme und eine faire Community.", 1325 ru: "Titan Games â ÑÑо полноÑÑÑÑ Ð±ÐµÑплаÑÐ½Ð°Ñ Ð²ÑÐµÐ»ÐµÐ½Ð½Ð°Ñ Ð±ÐµÐ· Pay-to-Win и неÑпÑаведливÑÑ Ð¿ÑеимÑÑеÑÑв. ÐÑ Ð²ÐµÑим, ÑÑо каждÑй игÑок заÑлÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑеÑÑного Ð¿Ð¾Ð»Ñ Ð±Ð¾Ñ, где Ð¿Ð¾Ð±ÐµÐ´Ñ Ð¾Ð¿ÑеделÑÑÑ Ð¼Ð°ÑÑеÑÑÑво, ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÑабоÑа и кÑеаÑивноÑÑÑ. ÐаÑа поддеÑжка Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð½Ð°Ð¼ ÑазвиваÑÑ Ð½Ð¾Ð²Ñе миÑÑ, ÑлÑÑÑаÑÑ ÑиÑÑÐµÐ¼Ñ Ð¸ ÑкÑеплÑÑÑ ÑообÑеÑÑво.", 1326 ja: "Titan Gamesã¯å®å ¨ç¡æã®å®å®ã§ããåã¤ããã®èª²éãä¸å ¬å¹³ãªåªä½æ§ã¯ä¸åããã¾ããããã¬ã¤ã¤ã¼å ¨å¡ãã¹ãã«ã¨ãã¼ã ã¯ã¼ã¯ãåµé åã§åè² ã§ããå ¬å¹³ãªæ¦å ´ãæä¾ãã¾ããããªãã®æ¯æ´ã¯Titan Gamesãç¶æããæ°ããä¸çãå ¬æ£ãªã³ãã¥ããã£ã®çºå±ãæ¯ãã¾ãã", 1327 "zh-CN": "Titan Games æ¯ä¸ä¸ªå®å ¨å 费游ç©çå®å®ââæ²¡æä»è´¹åèï¼ä¹æ²¡æä¸å ¬å¹³ä¼å¿ãæä»¬ç¸ä¿¡æ¯ä½ç©å®¶é½åºå¨å ¬å¹³çæåºä¸åå®åãå¢éåä½ä¸åæåèãæ¨çæ¯æè®© Titan Games æç»ç¹è£ï¼èµå©æ°ä¸çãç³»ç»ä¸æ´å¼ºå¤§çç©å®¶ç¤¾åºã", 1328 "pt-BR": "Titan Games é um universo 100% gratuito â sem pagar para vencer, sem vantagens injustas. Acreditamos que todo jogador merece um campo de batalha justo, onde habilidade, trabalho em equipe e criatividade definem a vitória. Seu apoio mantém o Titan Games vivo â financiando novos mundos, sistemas e uma comunidade mais forte.", 1329 it: "Titan Games è un universo completamente gratuito â niente pay-to-win, nessun vantaggio sleale. Crediamo che ogni giocatore meriti un campo di battaglia equo dove abilità , lavoro di squadra e creatività determinano la vittoria. Il tuo supporto mantiene Titan Games in vita, finanziando nuovi mondi e una comunità più forte.", 1330 ko: "Titan Gamesë 100% ë¬´ë£ íë ì´ ì°ì£¼ì ëë¤ â íì´í¬ìì´ë ë¶ê³µì í ì´ì ì ììµëë¤. 모ë íë ì´ì´ê° ì¤ë ¥, íìí¬, ì°½ìë ¥ì¼ë¡ ì¹ë¶í ì ìë ê³µì í ì ì¥ì ë릴 ìê²©ì´ ììµëë¤. ì¬ë¬ë¶ì íìì´ Titan Games를 ë°ì ìí¤ê³ ìë¡ì´ ì¸ê³ì ê³µì í 커뮤ëí°ë¥¼ ë§ëëë¤.", 1331 pl: "Titan Games to w 100% darmowy wszechÅwiat â bez pay-to-win i niesprawiedliwych przewag. Wierzymy, że każdy gracz zasÅuguje na uczciwe pole bitwy, gdzie o zwyciÄstwie decydujÄ umiejÄtnoÅci, wspóÅpraca i kreatywnoÅÄ. Twoje wsparcie utrzymuje Titan Games przy życiu, finansujÄ c nowe Åwiaty i sprawiedliwÄ spoÅecznoÅÄ.", 1332 tr: "Titan Games tamamen ücretsiz bir evrendir â pay-to-win yok, haksız avantaj yok. Her oyuncunun beceri, takım çalıÅması ve yaratıcılıkla zafer kazandıÄı adil bir savaÅ alanını hak ettiÄine inanıyoruz. DesteÄiniz Titan Gamesâin geliÅmesini, yeni dünyalar ve adil bir topluluk oluÅumunu saÄlar." 1333 }, 1334 donate_why_title: { 1335 en: "Where Your Donations Go", 1336 es: "A Dónde Van Tus Donaciones", 1337 fr: "à quoi servent vos dons", 1338 de: "Wofür Spenden verwendet werden", 1339 ru: "Ðа ÑÑо идÑÑ Ð²Ð°Ñи пожеÑÑвованиÑ", 1340 ja: "å¯ä»éã®ä½¿ãé", 1341 "zh-CN": "ææ¬¾çå»å", 1342 "pt-BR": "Como Usamos as Doações", 1343 it: "Come vengono utilizzate le donazioni", 1344 ko: "기ë¶ê¸ì ì¬ì©ì²", 1345 pl: "Na co przeznaczane sÄ darowizny", 1346 tr: "BaÄıÅlarınız nereye gidiyor" 1347 }, 1348 donate_why_1: { 1349 en: "ð Dedicated game servers â stability, security, and performance for every player.", 1350 es: "ð Servidores dedicados: estabilidad, seguridad y rendimiento para todos los jugadores.", 1351 fr: "ð Serveurs de jeu dédiés â stabilité, sécurité et performance pour tous les joueurs.", 1352 de: "ð Dedizierte Spielserver â Stabilität, Sicherheit und Leistung für alle Spieler.", 1353 ru: "ð ÐгÑовÑе ÑеÑвеÑÑ â ÑÑабилÑноÑÑÑ, безопаÑноÑÑÑ Ð¸ вÑÑÐ¾ÐºÐ°Ñ Ð¿ÑоизводиÑелÑноÑÑÑ Ð´Ð»Ñ Ð²ÑÐµÑ Ð¸Ð³Ñоков.", 1354 ja: "ð å°ç¨ã²ã¼ã ãµã¼ãã¼ â å®å®æ§ãã»ãã¥ãªãã£ãããã©ã¼ãã³ã¹ããã¹ã¦ã®ãã¬ã¤ã¤ã¼ã«ã", 1355 "zh-CN": "ð ä¸ç¨æ¸¸ææå¡å¨ââ为ææç©å®¶æä¾ç¨³å®ãå®å ¨ä¸é«æ§è½çä½éªã", 1356 "pt-BR": "ð Servidores dedicados â estabilidade, segurança e desempenho para todos os jogadores.", 1357 it: "ð Server dedicati â stabilità , sicurezza e prestazioni per tutti i giocatori.", 1358 ko: "ð ì ì© ê²ì ìë² â 모ë íë ì´ì´ë¥¼ ìí ìì ì±ê³¼ ì±ë¥ ë³´ì¥.", 1359 pl: "ð Dedykowane serwery â stabilnoÅÄ, bezpieczeÅstwo i wydajnoÅÄ dla wszystkich graczy.", 1360 tr: "ð Ãzel oyun sunucuları â tüm oyuncular için stabilite, güvenlik ve performans." 1361 }, 1362 donate_why_2: { 1363 en: "ðºï¸ New maps, missions, and worlds across the exp
1363anding Titan Universe.", 1364 es: "ðºï¸ Nuevos mapas, misiones y mundos en el universo en expansión de Titan.", 1365 fr: "ðºï¸ Nouvelles cartes, missions et mondes à travers lâunivers en expansion de Titan.", 1366 de: "ðºï¸ Neue Karten, Missionen und Welten im wachsenden Titan-Universum.", 1367 ru: "ðºï¸ ÐовÑе каÑÑÑ, миÑÑии и миÑÑ Ð² ÑаÑÑÑÑей вÑеленной Titan.", 1368 ja: "ðºï¸ æ¡å¤§ãç¶ããTitanå®å®ã®æ°ããããããããã·ã§ã³ãä¸çã", 1369 "zh-CN": "ðºï¸ 䏿æ©å±ç Titan å®å®ä¸çæ°å°å¾ãä»»å¡ä¸ä¸çã", 1370 "pt-BR": "ðºï¸ Novos mapas, missões e mundos pelo universo em expansão de Titan.", 1371 it: "ðºï¸ Nuove mappe, missioni e mondi nellâuniverso in espansione di Titan.", 1372 ko: "ðºï¸ íì¥ëë Titan ì°ì£¼ì ìë¡ì´ ë§µ, 미ì , ê·¸ë¦¬ê³ ì¸ê³ë¤.", 1373 pl: "ðºï¸ Nowe mapy, misje i Åwiaty w rozrastajÄ cym siÄ wszechÅwiecie Titan.", 1374 tr: "ðºï¸ GeniÅleyen Titan Evreninde yeni haritalar, görevler ve dünyalar." 1375 }, 1376 donate_why_3: { 1377 en: "ð¨ Art, sound, and animation enhancements that bring our games to life.", 1378 es: "ð¨ Mejoras en arte, sonido y animación que dan vida a nuestros juegos.", 1379 fr: "ð¨ Améliorations visuelles, sonores et dâanimation donnant vie à nos jeux.", 1380 de: "ð¨ Verbesserte Grafik, Sound und Animationen, die unsere Spiele zum Leben erwecken.", 1381 ru: "ð¨ УлÑÑÑение гÑаÑики, звÑка и анимаÑий, оживлÑÑÑÐ¸Ñ Ð½Ð°Ñи игÑÑ.", 1382 ja: "ð¨ ã²ã¼ã ãçãçãã¨ãããã¢ã¼ãããµã¦ã³ããã¢ãã¡ã¼ã·ã§ã³ã®æ¹è¯ã", 1383 "zh-CN": "ð¨ æ¹è¿æ¸¸æç¾æ¯ã鳿ä¸å¨ç»ï¼è®©æ¯ä¸ªä¸çæ´å çå¨ã", 1384 "pt-BR": "ð¨ Melhorias de arte, som e animações que dão vida aos nossos jogos.", 1385 it: "ð¨ Miglioramenti grafici, sonori e di animazione che danno vita ai giochi.", 1386 ko: "ð¨ ê²ìì ìëª ì ë¶ì´ë£ë ê·¸ëí½, ì¬ì´ë, ì ëë©ì´ì í¥ì.", 1387 pl: "ð¨ Udoskonalenie grafiki, dźwiÄku i animacji, które ożywiajÄ nasze gry.", 1388 tr: "ð¨ Oyunlarımızı hayata geçiren sanat, ses ve animasyon iyileÅtirmeleri." 1389 }, 1390 donate_why_4: { 1391 en: "ð¤ Smarter Discord bots, event systems, and community tools.", 1392 es: "ð¤ Bots de Discord más inteligentes, sistemas de eventos y herramientas comunitarias.", 1393 fr: "ð¤ Bots Discord plus intelligents, systèmes dâévénements et outils communautaires.", 1394 de: "ð¤ Intelligentere Discord-Bots, Events und Community-Tools.", 1395 ru: "ð¤ УмнÑе Discord-боÑÑ, ÑиÑÑÐµÐ¼Ñ ÑобÑÑий и инÑÑÑÑменÑÑ Ð´Ð»Ñ ÑообÑеÑÑва.", 1396 ja: "ð¤ ããè³¢ãDiscordããããã¤ãã³ãã·ã¹ãã ãã³ãã¥ããã£ãã¼ã«ã", 1397 "zh-CN": "ð¤ æ´æºè½ç Discord æºå¨äººãæ´»å¨ç³»ç»ä¸ç¤¾åºå·¥å ·ã", 1398 "pt-BR": "ð¤ Bots de Discord mais inteligentes, sistemas de eventos e ferramentas comunitárias.", 1399 it: "ð¤ Bot Discord più intelligenti, sistemi di eventi e strumenti comunitari.", 1400 ko: "ð¤ ë ì¤ë§í¸í Discord ë´ê³¼ 커뮤ëí° í´, ì´ë²¤í¸ ìì¤í .", 1401 pl: "ð¤ Inteligentniejsze boty Discord, systemy wydarzeÅ i narzÄdzia spoÅecznoÅciowe.", 1402 tr: "ð¤ Daha akıllı Discord botları, etkinlik sistemleri ve topluluk araçları." 1403 }, 1404 donate_why_5: { 1405 en: "ð¡ Player customization â avatars, glowing borders, pets, achievements, and Titan Coins.", 1406 es: "ð¡ Personalización del jugador: avatares, bordes brillantes, mascotas, logros y Titan Coins.", 1407 fr: "ð¡ Personnalisation du joueur â avatars, bordures lumineuses, familiers, succès et Titan Coins.", 1408 de: "ð¡ Spieleranpassung â Avatare, leuchtende Ränder, Haustiere, Erfolge und Titan Coins.", 1409 ru: "ð¡ ÐаÑÑомизаÑÐ¸Ñ Ð¸Ð³Ñоков â аваÑаÑÑ, ÑвеÑÑÑиеÑÑ Ñамки, пиÑомÑÑ, доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ Ð¸ монеÑÑ Titan.", 1410 ja: "ð¡ ãã¬ã¤ã¤ã¼ã«ã¹ã¿ãã¤ãºï¼ã¢ãã¿ã¼ãçºå ãã¼ãã¼ãããããå®ç¸¾ãTitan Coinã", 1411 "zh-CN": "ð¡ ç©å®¶ä¸ªæ§åââ头åãåå è¾¹æ¡ãå
1411® ç©ãæå°±å Titan Coinsã", 1412 "pt-BR": "ð¡ Personalização de jogadores â avatares, bordas brilhantes, pets, conquistas e Titan Coins.", 1413 it: "ð¡ Personalizzazione del giocatore â avatar, bordi luminosi, animali, trofei e Titan Coins.", 1414 ko: "ð¡ íë ì´ì´ 커ì¤í°ë§ì´ì§ â ìë°í, ë¤ì¨ í ë리, í«, ì ì ë° Titan Coin.", 1415 pl: "ð¡ Personalizacja graczy â awatary, ÅwiecÄ ce ramki, zwierzÄta, osiÄ gniÄcia i monety Titan.", 1416 tr: "ð¡ Oyuncu özelleÅtirmesi â avatarlar, parlak kenarlıklar, evcil hayvanlar, baÅarılar ve Titan Coinâler." 1417 }, 1418 donate_why_6: { 1419 en: "ð® More free games, more modes, and continuous updates without paywalls.", 1420 es: "ð® Más juegos gratuitos, más modos y actualizaciones continuas sin muros de pago.", 1421 fr: "ð® Plus de jeux gratuits, plus de modes et des mises à jour continues sans barrières payantes.", 1422 de: "ð® Mehr kostenlose Spiele, mehr Modi und ständige Updates ohne Paywalls.", 1423 ru: "ð® ÐолÑÑе беÑплаÑнÑÑ Ð¸Ð³Ñ, болÑÑе Ñежимов и ÑегÑлÑÑнÑе Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ· донаÑа.", 1424 ja: "ð® ããã«å¤ãã®ç¡æã²ã¼ã ãã¢ã¼ãããã¤ã¦ã©ã¼ã«ã®ãªãç¶ç¶çãªã¢ãããã¼ãã", 1425 "zh-CN": "ð® æ´å¤å 费游æãæ´å¤æ¨¡å¼ä¸æç»æ´æ°ï¼æ ä»è´¹å¢ã", 1426 "pt-BR": "ð® Mais jogos gratuitos, mais modos e atualizações contÃnuas sem paywalls.", 1427 it: "ð® Più giochi gratuiti, più modalità e aggiornamenti continui senza paywall.", 1428 ko: "ð® ë ë§ì ë¬´ë£ ê²ì, ë ë§ì 모ë, íì´ì ìë ì§ìì ì¸ ì ë°ì´í¸.", 1429 pl: "ð® WiÄcej darmowych gier, wiÄcej trybów i ciÄ gÅe aktualizacje bez paywalla.", 1430 tr: "ð® Daha fazla ücretsiz oyun, daha fazla mod ve paywall olmadan sürekli güncellemeler." 1431 }, 1432 donate_why_7: { 1433 en: "ð Tournaments, seasonal events, and giveaways for all players.", 1434 es: "ð Torneos, eventos de temporada y sorteos para todos los jugadores.", 1435 fr: "ð Tournois, événements saisonniers et cadeaux pour tous les joueurs.", 1436 de: "ð Turniere, saisonale Events und Giveaways für alle Spieler.", 1437 ru: "ð ТÑÑниÑÑ, ÑезоннÑе ÑобÑÑÐ¸Ñ Ð¸ ÑозÑгÑÑÑи Ð´Ð»Ñ Ð²ÑÐµÑ Ð¸Ð³Ñоков.", 1438 ja: "ð ãã¹ã¦ã®ãã¬ã¤ã¤ã¼åãã®ãã¼ãã¡ã³ããã·ã¼ãºã³ã¤ãã³ããã®ãã¢ã¦ã§ã¤ã", 1439 "zh-CN": "ð é¢åææç©å®¶ç馿 èµãèµå£æ´»å¨ä¸èµ åæ´»å¨ã", 1440 "pt-BR": "ð Torneios, eventos sazonais e sorteios para todos os jogadores.", 1441 it: "ð Tornei, eventi stagionali e giveaway per tutti i giocatori.", 1442 ko: "ð 모ë íë ì´ì´ë¥¼ ìí í ë먼í¸, ìì¦ ì´ë²¤í¸ ë° ê²½í íì¬.", 1443 pl: "ð Turnieje, wydarzenia sezonowe i rozdania dla wszystkich graczy.", 1444 tr: "ð Tüm oyuncular için turnuvalar, sezonluk etkinlikler ve çekiliÅler." 1445 }, 1446 donate_footer: { 1447 en: "Titan Games runs without intrusive ads or paywalls â your contributions power our servers, innovation, and the next generation of fair gaming. Together, we are building the <strong>Titan Empire</strong> â a universe shaped by players, not purchases.",es: "Titan Games funciona sin anuncios intrusivos ni muros de pago â tus contribuciones impulsan nuestros servidores, la innovación y la próxima generación de juegos justos. Juntos, estamos construyendo el Imperio Titan â un universo creado por jugadores, no por compras.", 1448 fr: "Titan Games fonctionne sans publicités intrusives ni barrières payantes â vos contributions alimentent nos serveurs, lâinnovation et la prochaine génération de jeux équitables. Ensemble, nous construisons lâEmpire Titan â un univers façonné par les joueurs, pas par les achats.", 1449 de: "Titan Games läuft ohne störende Werbung oder Paywalls â eure Unterstützung treibt unsere Server, Innovation und die nächste Generation fairer Spiele an. Gemeinsam bauen wir das Titan-Imperium â ein Universum, das von Spielern, nicht von Käufen, gestaltet wird.", 1450 ru: "Titan Games ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· навÑзÑивой ÑÐµÐºÐ»Ð°Ð¼Ñ Ð¸ донаÑ-загÑаждений â ваÑи пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÐµÑпеÑиваÑÑ ÑеÑвеÑÑ, инноваÑии и бÑдÑÑее ÑеÑÑного гейминга. ÐмеÑÑе Ð¼Ñ ÑоздаÑм ÐмпеÑÐ¸Ñ Ð¢Ð¸Ñан â вÑеленнÑÑ, поÑÑÑоеннÑÑ Ð¸Ð³Ñоками, а не покÑпками.", 1451 ja: "Titan Gamesã¯åºåã課éå¶éãªãã§éå¶ããã¦ãã¾ããããªãã®æ¯æ´ã¯ç§ãã¡ã®ãµã¼ãã¼ã驿°ãããã¦å ¬æ£ãªæ¬¡ä¸ä»£ã²ã¼ã ãæ¯ãã¾ããå ±ã«ããã¬ã¤ã¤ã¼ã«ãã£ã¦ç¯ãããTitanå¸å½ãåµãä¸ãã¾ãããã", 1452 "zh-CN": "Titan Games æ 广åãæ ä»è´¹å¢è¿è¥ââæ¨çæ¯ææ¨å¨æå¡å¨ãåæ°ä¸å ¬å¹³æ¸¸æçæªæ¥ãæä»¬å ±åæé ç±ç©å®¶å¡é çæ³°å¦å¸å½ã",
1453 "pt-BR": "Titan Games funciona sem anúncios invasivos nem paywalls â suas contribuições impulsionam nossos servidores, inovação e a próxima geração de jogos justos. Juntos, estamos construindo o Império Titan â um universo moldado por jogadores, não por compras.", 1454 it: "Titan Games funziona senza pubblicità invasive o paywall â i tuoi contributi alimentano i nostri server, lâinnovazione e la prossima generazione di giochi equi. Insieme stiamo costruendo lâImpero Titan â un universo creato dai giocatori, non dagli acquisti.", 1455 ko: "Titan Gamesë ê´ê³ ë íì´ì ìì´ ì´ìë©ëë¤ â ì¬ë¬ë¶ì íìì´ ìë², íì , ê·¸ë¦¬ê³ ê³µì í ì°¨ì¸ë ê²ìì ë§ë¤ì´ ê°ëë¤. ì°ë¦¬ë í¨ê», êµ¬ë§¤ê° ìë íë ì´ì´ê° ë§ë íì´í ì êµì ê±´ì¤íê³ ììµëë¤.", 1456 pl: "Titan Games dziaÅa bez nachalnych reklam i paywalli â twoje wsparcie napÄdza nasze serwery, innowacje i przyszÅoÅÄ uczciwego grania. Razem budujemy Imperium Titan â wszechÅwiat tworzony przez graczy, nie przez zakupy.", 1457 tr: "Titan Games rahatsız edici reklamlar veya paywall'lar olmadan çalıÅır â katkılarınız sunucularımıza, yeniliÄe ve adil oyunların geleceÄine güç verir. Birlikte, oyuncular tarafından Åekillenen Titan İmparatorluÄunu inÅa ediyoruz." 1458 }, 1459 donate_button: { 1460 en: "Donate via PayPal", 1461 es: "Donar con PayPal", 1462 fr: "Faire un don via PayPal", 1463 de: "Ãber PayPal spenden", 1464 ru: "ÐожеÑÑвоваÑÑ ÑеÑез PayPal", 1465 ja: "PayPalã§å¯ä»ãã", 1466 "zh-CN": "éè¿PayPalæèµ ", 1467 "pt-BR": "Doar via PayPal", 1468 it: "Dona tramite PayPal", 1469 ko: "PayPalë¡ ê¸°ë¶í기", 1470 pl: "WpÅaÄ przez PayPal", 1471 tr: "PayPal ile BaÄıŠYap" 1472 } 1473 }; 1474 1475 for (const key in merged) { 1476 t[key] = merged[key][lang] || merged[key].en; 1477 } 1478}); 1479 1480// ============================================== 1481// ð§© Extend setLanguage() to update placeholders 1482// ============================================== 1483const oldSetLanguage = setLanguage; 1484setLanguage = function (lang) { 1485 oldSetLanguage(lang); 1486 1487 // Update placeholders 1488 document.querySelectorAll("[data-placeholder]").forEach(el => { 1489 const key = el.getAttribute("data-placeholder"); 1490 if (translations[lang][key]) { 1491 el.placeholder = translations[lang][key]; 1492 } 1493 }); 1494}; 1495 1496// ============================================== 1497// ð AUTO-DETECT LANGUAGE BY BROWSER LOCALE 1498// ============================================== 1499(function autoDetectLanguage() { 1500 // Only detect if user hasn't chosen a language yet 1501 if (!localStorage.getItem("lang")) { 1502 const browserLang = navigator.language ? navigator.language.split("-")[0] : "en"; 1503 const supportedLangs = ["en","es","fr","de","ru","ja","zh-CN","pt-BR","it","ko","pl","tr"]; 1504 let detectedLang = supportedLangs.includes(browserLang) ? browserLang : "en"; 1505 1506 // Handle special cases like "zh-CN" or "pt-BR" 1507 if (navigator.language.startsWith("zh")) detectedLang = "zh-CN"; 1508 if (navigator.language.startsWith("pt")) detectedLang = "pt-BR"; 1509 1510 setLanguage(detectedLang); 1511 document.querySelectorAll("#language-select, #language-select-footer").forEach(sel => { 1512 sel.value = detectedLang; 1513 }); 1514 } 1515})(); 1516 1517// ============================================== 1518// ð LANGUAGE SYSTEM 1519// ============================================== 1520function setLanguage(lang) { 1521 if (!translations[lang]) return; 1522 document.querySelectorAll("[data-translate]").forEach(el => { 1523 const key = el.getAttribute("data-translate"); 1524 if (translations[lang][key]) { 1525 el.innerHTML = translations[lang][key]; // â FIXED â preserves <strong>, <b>, etc. 1526 } 1527}); 1528 localStorage.setItem("lang", lang); 1529} 1530 1531// Apply saved or default language 1532const savedLang = localStorage.getItem("lang") || "en"; 1533setLanguage(savedLang); 1534 1535// Sync both selectors and apply on change 1536document.querySelectorAll("#language-select, #language-select-footer").forEach(sel => { 1537 sel.value = savedLang; 1538 sel.addEventListener("change", e => { 1539 const lang = e.target.value;
1540 setLanguage(lang); 1541 document.querySelectorAll("#language-select, #language-select-footer").forEach(s => (s.value = lang)); 1542 }); 1543}); 1544 1545// ============================================== 1546// ð¬ DARK / LIGHT MODE TOGGLE 1547// ============================================== 1548(function themeToggleSystem() { 1549 const toggleBtn = document.getElementById("theme-toggle"); 1550 const currentTheme = localStorage.getItem("theme") || "dark"; 1551 1552 // Apply saved theme on load 1553 if (currentTheme === "light") { 1554 document.body.classList.add("light-mode"); 1555 if (toggleBtn) toggleBtn.textContent = "âï¸"; 1556 } else { 1557 if (toggleBtn) toggleBtn.textContent = "ð"; 1558 } 1559 1560 // Handle toggle click 1561 if (toggleBtn) { 1562 toggleBtn.addEventListener("click", () => { 1563 document.body.classList.toggle("light-mode"); 1564 const isLight = document.body.classList.contains("light-mode"); 1565 toggleBtn.textContent = isLight ? "âï¸" : "ð"; 1566 localStorage.setItem("theme", isLight ? "light" : "dark"); 1567 }); 1568 } 1569})(); 1570 1571function startCountdown(targetDate) { 1572 const timerEl = document.getElementById("countdown-timer"); 1573 if (!timerEl) return; 1574 1575 function updateTimer() { 1576 const now = new Date(); 1577 const diff = targetDate - now; 1578 if (diff <= 0) { 1579 timerEl.textContent = "LIVE NOW!"; 1580 timerEl.style.color = "lime"; 1581 return; 1582 } 1583 const days = Math.floor(diff / (1000 * 60 * 60 * 24)); 1584 const hours = Math.floor((diff / (1000 * 60 * 60)) % 24); 1585 const mins = Math.floor((diff / (1000 * 60)) % 60); 1586 const secs = Math.floor((diff / 1000) % 60); 1587 timerEl.textContent = `${days}d ${hours}h ${mins}m ${secs}s`; 1588 } 1589 1590 updateTimer(); 1591 setInterval(updateTimer, 1000); 1592} 1593 1594// Example: Event starts Dec 1, 2025 1595startCountdown(new Date("2025-12-01T00:00:00")); 1596 1597 document.addEventListener('mousemove', e => { 1598 interactiveEls.forEach(el => { 1599 const rect = el.getBoundingClientRect(); 1600 const elX = rect.left + rect.width / 2; 1601 const elY = rect.top + rect.height / 2; 1602 const dist = Math.hypot(e.clientX - elX, e.clientY - elY); 1603 const maxDist = 250; 1604 1605 if (dist < maxDist) { 1606 const intensity = 1 - dist / maxDist; 1607 el.style.boxShadow = `0 0 ${25 * intensity}px red, 0 0 ${50 * intensity}px crimson`; 1608 el.style.transform = `scale(${1 + 0.05 * intensity})`; 1609 } else { 1610 el.style.boxShadow = ''; 1611 el.style.transform = ''; 1612 } 1613 }); 1614 }); 1615}); 1616
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.