1// Auto-generated from site-chrome.ts â DO NOT EDIT DIRECTLY 2// Source of truth: firebase/functions/src/functions/sharing/site-chrome.ts 3// Regenerate: cd firebase/functions && npm run generate-chrome 4(function() { 5 // Inject header CSS 6 var style = document.createElement('style'); 7 style.textContent = "\n /* ========== SITE HEADER ========== */\n .site-header {\n background: #FFFFFF;\n border-bottom: 1px solid #E9ECEF;\n position: sticky;\n top: 0;\n z-index: 100;\n }\n .site-chrome-container {\n max-width: 1120px;\n margin: 0 auto;\n padding: 0 20px;\n }\n .nav-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 64px;\n }\n .nav-logo {\n display: flex;\n align-items: center;\n gap: 10px;\n text-decoration: none;\n color: #041E42;\n }\n .nav-logo img {\n height: 36px;\n width: 36px;\n border-radius: 8px;\n }\n .nav-logo span {\n font-family: 'Anton', sans-serif;\n font-size: 22px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n .nav-links {\n display: none;\n list-style: none;\n gap: 24px;\n align-items: center;\n }\n .nav-links a {\n color: #041E42;\n font-size: 14px;\n font-weight: 500;\n text-decoration: none;\n transition: color 0.15s;\n }\n .nav-links a:hover { color: #BF0D3E; text-decoration: none; }\n .nav-cta { display: none; }\n .nav-toggle {\n display: flex;\n flex-direction: column;\n gap: 5px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 8px;\n }\n .nav-toggle span {\n display: block;\n width: 24px;\n height: 2px;\n background: #041E42;\n border-radius: 2px;\n transition: transform 0.2s;\n }\n .mobile-menu {\n display: none;\n background: #FFFFFF;\n border-bottom: 1px solid #E9ECEF;\n padding: 16px 20px;\n }\n .mobile-menu.open { display: block; }\n .mobile-menu a {\n display: block;\n padding: 10px 0;\n color: #041E42;\n font-size: 16px;\n font-weight: 500;\n border-bottom: 1px solid #F8F9FA;\n text-decoration: none;\n }\n .mobile-menu a:last-child { border-bottom: none; }\n .mobile-menu a:hover { color: #BF0D3E; text-decoration: none; }\n @media (min-width: 768px) {\n .nav-links { display: flex; }\n .nav-cta { display: block; }\n .nav-toggle { display: none; }\n }"; 8 document.head.appendChild(style); 9 10 // Replace placeholder with header HTML 11 var el = document.getElementById('site-header'); 12 if (el) { 13 el.outerHTML = "<header class=\"site-header\">\n <div class=\"site-chrome-container\">\n <nav class=\"nav-inner\">\n <a href=\"/\" class=\"nav-logo\" aria-label=\"Fanarchy Home\">\n <img src=\"/email-assets/fanarchy-icon-1024.png\" alt=\"\" width=\"36\" height=\"36\">\n <span>Fanarchy</span>\n </a>\n\n <ul class=\"nav-links\">\n <li><a href=\"/games/search\">Games</a></li>\n <li><a href=\"/players/search\">Players</a></li>\n <li><a href=\"/news\">News</a></li>\n <li><a href=\"/slack\">Slack</a></li>\n <li><a href=\"/discord\">Discord</a></li>\n <li><a href=\"/#features\">Features</a></li>\n <li><a href=\"/faq\">FAQ</a></li>\n <li><a href=\"/about\">About</a></li>\n <li><a href=\"/compare\">Compare</a></li>\n </ul>\n\n <div class=\"nav-cta\">\n <a href=\"https://fanarchy.onelink.me/s9P9/fu1emsnk\" target=\"_blank\" rel=\"noopener noreferrer\" data-install-trigger=\"nav_header\">\n <img src=\"/email-assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg\" alt=\"Download Fanarchy on the App Store\" class=\"app-store-badge\" style=\"height: 36px;\">\n </a>\n </div>\n\n <button class=\"nav-toggle\" aria-label=\"Open menu\" onclick=\"document.querySelector('.mobile-menu').classList.toggle('open')\">
13\n <span></span><span></span><span></span>\n </button>\n </nav>\n </div>\n <div class=\"mobile-menu\">\n <a href=\"/games/search\">Games</a>\n <a href=\"/players/search\">Players</a>\n <a href=\"/news\">News</a>\n <a href=\"/slack\">Slack</a>\n <a href=\"/discord\">Discord</a>\n <a href=\"/#features\">Features</a>\n <a href=\"/faq\">FAQ</a>\n <a href=\"/about\">About</a>\n <a href=\"/compare\">Compare</a>\n <a href=\"https://fanarchy.onelink.me/s9P9/fu1emsnk\" target=\"_blank\" rel=\"noopener noreferrer\" data-install-trigger=\"nav_mobile\">\n <img src=\"/email-assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg\" alt=\"Download Fanarchy on the App Store\" class=\"app-store-badge\" style=\"height: 36px;\">\n </a>\n </div>\n </header>"; 14 } 15 16 // Highlight active nav item based on current path 17 var path = window.location.pathname; 18 var map = { 19 '/games': 'games', 20 '/players': 'players', 21 '/p': 'players', 22 '/news': 'news', 23 '/slack': 'slack', 24 '/discord': 'discord', 25 '/about': 'about', 26 '/compare': 'compare' 27 }; 28 var active = null; 29 for (var prefix in map) { 30 if (path === prefix || path.startsWith(prefix + '/')) { 31 active = prefix; 32 break; 33 } 34 } 35 if (active) { 36 var links = document.querySelectorAll('.nav-links a, .mobile-menu a'); 37 for (var i = 0; i < links.length; i++) { 38 var href = links[i].getAttribute('href'); 39 if (href && (href === active || href.startsWith(active + '/'))) { 40 links[i].style.color = '#BF0D3E'; 41 } 42 } 43 } 44})();
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.