// ==UserScript==
// @name Egg Navigator Pro
// @namespace eggHunt.Navigator.Pro
// @version 3.2.1
// @description AIO Enhanced Egg Navigator with built-in egg detection and navigation across 200+ pages — the largest, cleanest collection available anywhere.
// @author Oo_Max_Payne_oO [2909733]
// @match https://www.torn.com/*
// @grant GM.addStyle
// @run-at document-start
// @license CC-BY
// @homepageURL https://greasyfork.org/en/scripts/533245-egg-hunt-navigator-pro
// @supportURL https://www.torn.com/forums.php#p=threads&f=67&t=16464782&b=0&a=0
// ==/UserScript==
// Egg Hunt Navigator Pro
//
// Features:
// - Now works on EVERY page in Torn. No more hitting the "Back" button.
// - Automatically detects eggs on the page, alerts you, and moves them to the top of the screen for easier interaction.
// - Click the egg icon to toggle the Navigator between minimized (1 line) and expanded (4 lines).
// - Drag and drop the Navigator by holding and moving the title bar ("Egg Finder").
// - Navigate through predefined links using the "Next Page" button or right arrow button.
// - Directly jump to a specific page by entering an index number in the "Nav Jump" input box.
// - The Navigator remembers its position and visibility state across sessions.
//
// Usage:
// - Egg Detection: Automatically finds and positions eggs for quick collection.
// - Minimize/Maximize: Click the egg icon to save space or reveal full functionality.
// - Move: Drag the title bar to reposition the Navigator; changes are saved automatically.
// - Navigate: Click "Next Page" or the right arrow button to visit the next link in the sequence.
// - Jump: Enter a valid page index in "Nav Jump" to navigate directly to that page.
//
// Note:
// Some pages may appear more than once in the navigation list, however they have different URLs.
'use strict';
let linkIndex = parseInt(localStorage.getItem("eeh-index")) || 0; // Current page index
const EVERY_LINK = [
// Player Pages
//unprogrammable: "https://www.torn.com/level2.php"
// - leveling up page. For level holders, you can still visit this page, once there just choose "hold"
"",
"/preferences.php",
"/personalstats.php",
"/playerreport.php",
"/page.php?sid=report#/add",
"/authenticate.php",
"/page.php?sid=log",
"/page.php?sid=events",
"/page.php?sid=events#onlySaved=true",
"/events.php#/step=all",
"/page.php?sid=list&type=friends",
"/friendlist.php#p=add",
"/page.php?sid=list&type=enemies",
"/page.php?sid=list&type=targets",
"/messages.php",
"/messages.php#/p=inbox",
"/messages.php#/p=compose",
"/messages.php#/p=outbox",
"/messages.php#/p=saved",
"/messages.php#/p=ignorelist",
"/awards.php",
"/index.php",
"/page.php?sid=gallery",
"/item.php",
"/itemuseparcel.php",
"/page.php?sid=ammo",
"/displaycase.php",
"/displaycase.php#display/",
"/displaycase.php#manage",
"/displaycase.php#add",
"/page.php?sid=hof",
"/trade.php",
"/bazaar.php#/",
"/bazaar.php#/add",
"/bazaar.php#/personalize",
"/loader.php?sid=itemsMods",
"/companies.php?step=your&type=1",
"/pc.php",
//
// Torn Info Pages
"/calendar.php",
"/usersonline.php",
"/page.php?sid=UserList",
"/bringafriend.php",
"/forums.php",
"forums.php#/p=threads&f=67&t=16464782&b=0&a=0",
"/old_forums.php",
"/rules.php",
"/credits.php",
"/undefined.php",
"/citystats.php",
//
// City
"/city.php",
// West Side
"/page.php?sid=education",
"/education.php#/step=main",
"/gym.php",
"/page.php?sid=travel",
// North Side
"/amarket.php",
"/church.php",
"/church.php?step=proposals",
"/page.php?sid=ItemMarket#/market/view=category&categoryName=Most%20Popular",
"/points.php",
"/pmarket.php",
"/shops.php?step=pawnshop",
"/shops.php?step=pharmacy",
"/shops.php?step=postoffice",
"/shops.php?step=printstore",
"/shops.php?step=recyclingcenter",
"/shops.php?step=super",
"/shops.php?step=candy",
"/shops.php?step=clothes",
"/token_shop.php",
// Red Light
"/casino.php",
"/page.php?sid=slots",
"/page.php?sid=slotsLastRolls",
"/page.php?sid=slotsStats",
"/page.php?sid=roulette",
"/page.php?sid=rouletteLastSpins",
"/page.php?sid=rouletteStatistics",
"/page.php?sid=highlow",
"/page.php?sid=highlowLastGames",
"/page.php?sid=highlowStats",
"/page.php?sid=keno",
"/page.php?sid=kenoLastGames",
"/page.php?sid=kenoStatistics",
"/page.php?sid=craps",
"/page.php?sid=crapsLastRolls",
"/page.php?sid=crapsStats",
"/page.php?sid=bookie",
"/page.php?sid=bookie#/your-bets",
"/page.php?sid=bookie#/stats/",
"/page.php?sid=lottery",
"/page.php?sid=lotteryTicketsBought",
"/page.php?sid=lotteryPreviousWinners",
"/page.php?sid=blackjack",
"/page.php?sid=blackjackLastGames",
"/page.php?sid=blackjackStatistics",
"/page.php?sid=holdem",
"/page.php?sid=holdemStats",
"/page.php?sid=holdemFull",
"/page.php?sid=russianRoulette",
"/loader.php?sid=viewRussianRouletteLastGames",
"/loader.php?sid=viewRussianRouletteStats",
"/page.php?sid=spinTheWheel",
"/page.php?sid=spinTheWheelLastSpins",
"/dump.php",
"/dump.php#/trash",
"/loan.php",
"/loader.php?sid=missions",
"/loader.php?sid=racing",
// Residential
"/properties.php",
"/properties.php#/p=yourProperties",
"/properties.php#/p=spousesProperties",
// City Center
"/archives.php#",
"/archives.php#/TheBirthOfTorn",
"/archives.php#/Factions",
"/archives.php#/Employment",
"/archives.php#/TheMarkets",
"/archives.php#/RealEstate",
"/fans.php",
"/hospitalview.php",
"/jailview.php",
"/committee.php#/step=main",
"/staff.php",
// Financial
//nb: checked to here
"/bank.php",
"/donator.php",
"/messageinc.php",
"/messageinc2.php#!p=main",
"/messageinc2.php#!p=viewall",
"/messageinc2.php#!p=viewall",
"/newspaper.php#/",
"/newspaper.php#/archive",
"/joblist.php#!p=main",
"/joblist.php#/p=corpinfo&userID=1699485",
"/joblist.php?step=search#!p=corpinfo&ID=79286",
"/freebies.php#!p=main",
"/newspaper_class.php",
"/personals.php#!p=main",
"/bounties.php#!p=main",
"/bounties.php#/p=add",
"/comics.php#!p=main",
"/chronicles.php",
"/newspaper.php#/tell_your_story",
"/page.php?sid=stocks",
// East Side
"/bigalgunshop.php",
"/shops.php?step=bitsnbobs",
"/shops.php?step=cyberforce",
"/shops.php?step=docks",
"/estateagents.php",
"/properties.php?step=rentalmarket",
"/properties.php?step=sellingmarket",
"/shops.php?step=jewelry",
"/shops.php?step=nikeh",
//
// Other Torn Stores
"/page.php?sid=keepsakes",
"/page.php?sid=bunker",
"/museum.php",
//
"/page.php?sid=crimes2",
"/crimes.php",
"/loader.php?sid=crimes#/searchforcash",
"/loader.php?sid=crimes#/bootlegging",
"/loader.php?sid=crimes#/graffiti",
"/loader.php?sid=crimes#/shoplifting",
"/loader.php?sid=crimes#/pickpocketing",
"/loader.php?sid=crimes#/cardskimming",
"/loader.php?sid=crimes#/burglary",
"/loader.php?sid=crimes#/hustling",
"/loader.php?sid=crimes#/disposal",
"/loader.php?sid=crimes#/cracking",
"/loader.php?sid=crimes#/forgery",
"/loader.php?sid=crimes#/scamming",
//
// NPCS:
"/profiles.php?XID=1",
"/userimages.php?XID=1",
"/bazaar.php?userId=1",
"/personalstats.php?ID=1",
"/displaycase.php#display/1",
"/loader.php?sid=attack&user2ID=1",
"/profiles.php?XID=3",
"/profiles.php?XID=4",
"/bazaar.php?userId=4",
"/displaycase.php#display/4",
"/profiles.php?XID=7",
"/bazaar.php?userId=7",
"/displaycase.php#display/7",
"/profiles.php?XID=8",
"/profiles.php?XID=9",
"/profiles.php?XID=10",
"/bazaar.php?userId=10",
"/displaycase.php#display/10",
"/profiles.php?XID=15",
"/bazaar.php?userId=15",
"/displaycase.php#display/15",
"/profiles.php?XID=17",
"/loader.php?sid=attack&user2ID=17",
"/profiles.php?XID=19",
"/bazaar.php?userId=19",
"/profiles.php?XID=20",
"/bazaar.php?userId=20",
"/loader.php?sid=attackLog&ID=62ffe20613b5b8cc8821c38989873f4b",
"/profiles.php?XID=21",
"/bazaar.php?userId=21",
"/profiles.php?XID=23",
"/bazaar.php?userId=23",
"/profiles.php?XID=50",
"/bazaar.php?userId=50",
"/displaycase.php#display/50",
"/profiles.php?XID=100",
"/profiles.php?XID=101",
"/profiles.php?XID=102",
"/profiles.php?XID=103",
"/profiles.php?XID=104",
//
// Faction Specific
"/factions.php",
"/factions.php?step=your",
"/factions.php?step=your#/tab=info",
"/factions.php?step=your#/tab=territory",
"/factions.php?step=your#/tab=rank",
"/factions.php?step=your#/tab=oc",
"/factions.php?step=your#/tab=upgrades",
"/factions.php?step=your#/tab=armoury",
"/factions.php?step=your#/tab=controls",
"/page.php?sid=factionWarfare",
"/page.php?sid=factionWarfare#/ranked",
"/page.php?sid=factionWarfare#/territory",
"/page.php?sid=factionWarfare#/raids",
"/page.php?sid=factionWarfare#/chains",
"/page.php?sid=factionWarfare#/dirty-bombs",
"/war.php?step=chainreport&chainID=36587144",
"/war.php?step=warreport&warID=41189",
"/war.php?step=rankreport&rankID=12096",
//
// Other
"/christmas_town.php#/",
"/christmas_town.php#/mymaps",
"/christmas_town.php#/mapeditor",
"/christmas_town.php#/parametereditor",
"/christmas_town.php#/npceditor",
"/joblisting.php",
//
//Overseas
"/index.php?page=fortune",
"/index.php?page=rehab",
"/index.php?page=people",
// To Add - Faction senate specific, eg: applications, musuem contributions, etc.
];
let pressTimer;
const easteregg_svg = `
<svg xmlns="http://www.w3.org/2000/svg" fill="url(#egg-gradient)" stroke="transparent" stroke-width="0" width="15" height="20" viewBox="0 0 15 20">
<defs>
<linearGradient id="egg-gradient" gradientTransform="rotate(90)">
<stop offset="0%" stop-color="#FFD700" /> <!-- Gold -->
<stop offset="100%" stop-color="#FF4500" /> <!-- Orange -->
</linearGradient>
<filter id="egg-shadow" x="0" y="0" width="200%" height="200%">
<feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0, 0, 0, 0.25)" />
</filter>
</defs>
<path style="filter: url(#egg-shadow);" d="M1.68,16a5.6,5.6,0,0,0,.43.41A5.72,5.72,0,0,0,3,17a4.73,4.73,0,0,0,.74.39,5.08,5.08,0,0,0,.8.3,5.35,5.35,0,0,0,.69.17,8.62,8.62,0,0,0,.87.11h.84a8.46,8.46,0,0,0,.88-.11l.69-.17a7.14,7.14,0,0,0,.81-.31q.38-.18.72-.39a6.57,6.57,0,0,0,.9-.67,5.14,5.14,0,0,0,.41-.4A6.3,6.3,0,0,0,13,11.67a8.86,8.86,0,0,0-.09-1.21c0-.31-.1-.64-.17-1s-.2-.85-.33-1.29-.3-.93-.48-1.39-.33-.81-.51-1.2c-.1-.2-.19-.39-.29-.58L11,4.72c-.18-.33-.4-.69-.64-1s-.4-.55-.62-.82A4.41,4.41,0,0,0,6.5,1,4.41,4.41,0,0,0,3.29,2.86a9.15,9.15,0,0,0-.61.82c-.24.34-.44.68-.62,1L1.87,5l-.33.66c-.16.36-.32.72-.46,1.09S.74,7.7.61,8.16a13.14,13.14,0,0,0-.34,1.3,10,10,0,0,0-.18,1A8.47,8.47,0,0,0,0,11.67a6.29,6.29,0,0,0,.89,3.25A6.63,6.63,0,0,0,1.68,16Z">
</path>
</svg>`;
if (document.readyState === "interactive" || document.readyState === "complete") {
console.log("Page already interactive or fully loaded, initializing...");
setupEggDetection();
createEggNavigatorButton();
ensureNavigatorInBounds();
} else {
document.addEventListener("DOMContentLoaded", function () {
console.log("DOM fully loaded, initializing navigator and egg detection...");
setupEggDetection();
createEggNavigatorButton();
ensureNavigatorInBounds();
});
};
function createEggNavigatorButton() {
let buttonWrapper = document.getElementById("eggNavigatorButton");
if (buttonWrapper) return;
buttonWrapper = document.createElement("div");
buttonWrapper.id = "eggNavigatorButton";
buttonWrapper.style.position = "fixed";
const defaultTop = "10px";
const defaultLeft = "90%";
const storedTop = localStorage.getItem("buttonTop");
const storedLeft = localStorage.getItem("buttonLeft");
buttonWrapper.style.top = storedTop || defaultTop;
buttonWrapper.style.left = storedLeft || defaultLeft;
buttonWrapper.style.width = "150px";
buttonWrapper.style.zIndex = "399999";
buttonWrapper.style.padding = "10px";
buttonWrapper.style.cursor = "move";
buttonWrapper.style.display = "flex";
buttonWrapper.style.flexDirection = "column";
buttonWrapper.style.alignItems = "center";
buttonWrapper.style.gap = "10px";
buttonWrapper.style.backgroundColor = "var(--default-bg-panel-color)";
buttonWrapper.style.border = "1px solid var(--default-panel-divider-outer-side-color)";
buttonWrapper.style.borderRadius = "5px";
buttonWrapper.style.boxShadow = "0 2px 12px rgba(0, 0, 0, 0.15)";
document.body.appendChild(buttonWrapper);
makeButtonDraggable(buttonWrapper);
const titleWrapper = document.createElement("div");
titleWrapper.style.display = "flex";
titleWrapper.style.flexDirection = "row";
titleWrapper.style.alignItems = "center";
titleWrapper.style.justifyContent = "center";
titleWrapper.style.width = "100%";
titleWrapper.style.whiteSpace = "nowrap";
titleWrapper.style.gap = "4px";
titleWrapper.style.position = "relative";
const rightArrowButton = document.createElement("button");
rightArrowButton.innerHTML = "▶";
rightArrowButton.style.width = "30px";
rightArrowButton.style.height = "20px";
rightArrowButton.style.position = "absolute";
rightArrowButton.style.top = "50%";
rightArrowButton.style.transform = "translateY(-50%)";
rightArrowButton.style.right = "0";
rightArrowButton.style.padding = "0";
rightArrowButton.style.background = "linear-gradient(00deg, #444444 0%, #222222 60%, #111111 100%)";
rightArrowButton.style.border = "none";
rightArrowButton.style.borderRadius = "5px";
rightArrowButton.style.color = "#DDDDDD";
rightArrowButton.style.cursor = "pointer";
rightArrowButton.style.boxShadow = "0 2px 12px rgba(0, 0, 0, 0.15)";
rightArrowButton.addEventListener("mouseover", () => {
rightArrowButton.style.background = "linear-gradient(180deg, #333333 0%, #111111 60%, #000000 100%)";
rightArrowButton.style.color = "#CCCCCC";
});
rightArrowButton.addEventListener("mouseout", () => {
rightArrowButton.style.background = "linear-gradient(00deg, #444444 0%, #222222 60%, #111111 100%)";
rightArrowButton.style.color = "#DDDDDD";
});
titleWrapper.appendChild(rightArrowButton);
const eggImage = document.createElement("div");
eggImage.innerHTML = easteregg_svg;
eggImage.style.flexShrink = "0";
eggImage.style.width = "20px";
eggImage.style.height = "20px";
eggImage.style.cursor = "pointer";
const title = document.createElement("span");
title.textContent = "Navigator Pro";
title.style.fontWeight = "bold";
title.style.fontSize = "12px";
title.style.overflow = "hidden";
title.style.textOverflow = "ellipsis";
title.style.whiteSpace = "nowrap";
title.style.marginLeft = "3px";
title.style.marginRight = "25px";
title.style.color = "#FFFFFF";
titleWrapper.appendChild(eggImage);
titleWrapper.appendChild(title);
buttonWrapper.appendChild(titleWrapper);
const contentWrapper = document.createElement("div");
contentWrapper.style.display = localStorage.getItem("navigatorContentState") === "hidden" ? "none" : "flex";
contentWrapper.style.flexDirection = "column";
contentWrapper.style.width = "100%";
contentWrapper.style.gap = "10px";
rightArrowButton.style.display = localStorage.getItem("navigatorContentState") === "hidden" ? "block" : "none";
const nextPageButton = document.createElement("button");
nextPageButton.textContent = "Next Page";
nextPageButton.style.padding = "5px 10px";
nextPageButton.style.borderRadius = "3px";
nextPageButton.style.border = "1px solid var(--default-panel-divider-outer-side-color)";
nextPageButton.style.backgroundColor = "var(--info-msg-bg-gradient)";
nextPageButton.style.cursor = "pointer";
nextPageButton.style.width = "auto";
nextPageButton.style.color = "#FFFFFF";
nextPageButton.addEventListener("click", navigateToNextPage);
contentWrapper.appendChild(nextPageButton);
rightArrowButton.addEventListener("click", navigateToNextPage);
const navLabelWrapper = document.createElement("div");
navLabelWrapper.style.width = "100%";
navLabelWrapper.style.textAlign = "left";
const navLabel = document.createElement("span");
navLabel.textContent = "Nav Jump:";
navLabel.style.color = "#FFFFFF";
navLabelWrapper.appendChild(navLabel);
contentWrapper.appendChild(navLabelWrapper);
const navJumpWrapper = document.createElement("div");
navJumpWrapper.style.whiteSpace = "nowrap";
navJumpWrapper.style.display = "flex";
navJumpWrapper.style.flexDirection = "row";
navJumpWrapper.style.alignItems = "center";
navJumpWrapper.style.justifyContent = "center";
navJumpWrapper.style.gap = "6px";
navJumpWrapper.style.width = "100%";
const navJumpInput = document.createElement("input");
navJumpInput.type = "number";
navJumpInput.min = "0";
navJumpInput.max = EVERY_LINK.length - 1;
navJumpInput.value = linkIndex;
navJumpInput.style.width = "50px";
navJumpInput.style.textAlign = "center";
navJumpInput.style.flexShrink = "0";
navJumpInput.addEventListener("change", () => {
const newIndex = parseInt(navJumpInput.value, 10);
if (!isNaN(newIndex) && newIndex >= 0 && newIndex < EVERY_LINK.length) {
linkIndex = newIndex;
localStorage.setItem("eeh-index", linkIndex);
} else {
navJumpInput.value = linkIndex;
}
});
const pageCount = document.createElement("span");
pageCount.textContent = ` / ${EVERY_LINK.length}`;
pageCount.style.flexShrink = "0";
pageCount.style.color = "#FFFFFF";
navJumpWrapper.appendChild(navJumpInput);
navJumpWrapper.appendChild(pageCount);
contentWrapper.appendChild(navJumpWrapper);
buttonWrapper.appendChild(contentWrapper);
eggImage.addEventListener("click", function () {
if (contentWrapper.style.display === "none") {
contentWrapper.style.display = "flex";
rightArrowButton.style.display = "none";
localStorage.setItem("navigatorContentState", "visible");
} else {
contentWrapper.style.display = "none";
rightArrowButton.style.display = "block";
localStorage.setItem("navigatorContentState", "hidden");
}
});
console.log("[Egg Finder] Button created with toggle functionality.");
window.addEventListener("resize", () => {
const rect = buttonWrapper.getBoundingClientRect();
const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;
if (rect.right > viewportWidth) {
buttonWrapper.style.left = `${viewportWidth - buttonWrapper.offsetWidth}px`;
}
if (rect.bottom > viewportHeight) {
buttonWrapper.style.top = `${viewportHeight - buttonWrapper.offsetHeight}px`;
}
});
}
function navigateToNextPage() {
linkIndex++;
if (linkIndex >= EVERY_LINK.length) linkIndex = 0;
localStorage.setItem("eeh-index", linkIndex);
window.location.href = EVERY_LINK[linkIndex];
}
function ensureNavigatorInBounds() {
const buttonWrapper = document.getElementById("eggNavigatorButton");
if (buttonWrapper) {
const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;
const rect = buttonWrapper.getBoundingClientRect();
let adjusted = false;
if (rect.right > viewportWidth) {
buttonWrapper.style.left = `${viewportWidth - buttonWrapper.offsetWidth}px`;
adjusted = true;
}
if (rect.bottom > viewportHeight) {
buttonWrapper.style.top = `${viewportHeight - buttonWrapper.offsetHeight}px`;
adjusted = true;
}
if (rect.left < 0) {
buttonWrapper.style.left = "0px";
adjusted = true;
}
if (rect.top < 0) {
buttonWrapper.style.top = "0px";
adjusted = true;
}
if (adjusted) {
console.log("Navigator position adjusted to stay in bounds.");
}
}
}
function makeButtonDraggable(button) {
let offsetX = 0;
let offsetY = 0;
let isDragging = false;
function preventDefaultTouch(e) {
e.preventDefault();
}
button.addEventListener("mousedown", function (e) {
isDragging = true;
offsetX = e.clientX - button.getBoundingClientRect().left;
offsetY = e.clientY - button.getBoundingClientRect().top;
});
document.addEventListener("mousemove", function (e) {
if (isDragging) {
const newLeft = Math.max(0, Math.min(window.innerWidth - button.offsetWidth, e.clientX - offsetX));
const newTop = Math.max(0, Math.min(window.innerHeight - button.offsetHeight, e.clientY - offsetY));
button.style.left = `${newLeft}px`;
button.style.top = `${newTop}px`;
}
});
document.addEventListener("mouseup", function () {
if (isDragging) {
isDragging = false;
localStorage.setItem("buttonLeft", button.style.left);
localStorage.setItem("buttonTop", button.style.top);
}
});
button.addEventListener("touchstart", function (e) {
isDragging = true;
const touch = e.touches[0];
offsetX = touch.clientX - button.getBoundingClientRect().left;
offsetY = touch.clientY - button.getBoundingClientRect().top;
document.addEventListener("touchmove", preventDefaultTouch, { passive: false }); // Prevent scrolling
});
document.addEventListener("touchmove", function (e) {
if (isDragging) {
const touch = e.touches[0];
const newLeft = Math.max(0, Math.min(window.innerWidth - button.offsetWidth, touch.clientX - offsetX));
const newTop = Math.max(25, Math.min(window.innerHeight - button.offsetHeight, touch.clientY - offsetY));
button.style.left = `${newLeft}px`;
button.style.top = `${newTop}px`;
}
});
document.addEventListener("touchend", function () {
if (isDragging) {
isDragging = false;
localStorage.setItem("buttonLeft", button.style.left);
localStorage.setItem("buttonTop", button.style.top);
document.removeEventListener("touchmove", preventDefaultTouch);
}
});
}
function setupEggDetection() {
const egg = document.getElementById('easter-egg-hunt-root');
if (egg) {
if (egg.classList.contains('egg-finder-found')) {
return;
}
egg.classList.add('egg-finder-found');
alert('Egg found!');
moveEgg(egg);
}
}
function moveEgg(egg) {
const buttons = egg.querySelectorAll('button');
if (buttons.length === 0) {
setTimeout(() => moveEgg(egg), 50);
return;
}
buttons.forEach(b => {
// Move and size the entire button container
b.style.top = '50%';
b.style.left = '50%';
b.style.transform = 'translate(-50%, -50%)';
b.style.height = '50%';
b.style.width = '50%';
b.style.position = 'fixed';
b.style.zIndex = '9999';
b.style.display = 'flex';
b.style.alignItems = 'center';
b.style.justifyContent = 'center';
b.style.overflow = 'visible';
b.style.borderStyle = 'solid';
b.style.borderWidth = '6px';
b.style.borderColor = 'gold';
b.style.borderRadius = '50%';
b.style.boxShadow = '0 0 16px 6px rgba(255, 215, 0, 1)';
b.style.webkitBoxShadow = '0 0 16px 6px rgba(255, 215, 0, 1)';
const children = b.children;
// Enlarge egg image
if (children.length > 0) {
const eggImage = children[0];
eggImage.style.height = '100%';
eggImage.style.width = '100%';
eggImage.style.objectFit = 'contain';
}
// Ensure particle effects fill the space
const particles = children[children.length - 1];
if (particles) {
particles.style.left = '0';
particles.style.top = '0';
particles.style.width = '100%';
particles.style.height = '100%';
particles.style.position = 'absolute';
}
});
if (!document.getElementById('egg-mobile-resize-style')) {
const style = document.createElement('style');
style.id = 'egg-mobile-resize-style';
style.textContent = `
@media (max-width: 768px) {
.eggAnim___ktpqQ {
width: 80% !important;
height: 80% !important;
}
.eggAnim___ktpqQ img {
width: 100% !important;
height: 100% !important;
object-fit: contain !important;
}
}
`;
document.head.appendChild(style);
}
}
GM.addStyle(`
#eggNavigatorButton {
background: linear-gradient(00deg, #555555 0%, #333333 60%, #222222 100%);
border-radius: 5px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
padding: 10px;
}
#eggNavigatorButton button {
border: none;
border-radius: 5px;
padding: 5px 10px;
cursor: pointer;
font-weight: bold;
background-color: #666666 !important;
color: #FFFFFF;
}
#eggNavigatorButton button:hover {
background: linear-gradient(180deg, #444444 0%, #222222 60%, #111111 100%);
color: #DDDDDD;
}
#eggNavigatorButton input {
text-align: center;
width: 50px;
}
#eggNavigatorButton span {
font-weight: bold;
}
#eggNavigatorButton div {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
}
@media (max-width: 768px) {
#eggNavigatorButton button {
all: unset; /* Resets most browser-specific styles */
background-color: #444444;
color: #FFFFFF;
padding: 5px 10px;
border: 1px solid var(--default-panel-divider-outer-side-color);
border-radius: 3px;
cursor: pointer;
}
#eggNavigatorButton button:hover {
background: #333333;
color: #FFFFFF;
}
}
`);