Adds a Zen Mode toggle to hide the race track on nitrotype.com/race after the race starts.
// ==UserScript==
// @name NitroType Zen Mode Toggle (Hide After Start)
// @namespace https://singdev.wixsite.com/sing-developments
// @version 1.4
// @license MIT
// @description Adds a Zen Mode toggle to hide the race track on nitrotype.com/race after the race starts.
// @author SiDaStuff
// @match https://www.nitrotype.com/race
// @icon https://www.nitrotype.com/favicon.ico
// @grant none
// ==/UserScript==
(function() {
'use strict';
const TOGGLE_ID = 'zen-mode-toggle';
const STORAGE_KEY = 'zenModeEnabled';
// Get Zen Mode saved state
function isZenModeEnabled() {
return localStorage.getItem(STORAGE_KEY) === 'true';
}
// Show or hide track based on race state + Zen Mode
function applyZenMode() {
const trackDiv = document.querySelector('.racev3-track');
const raceContainer = document.querySelector('#raceContainer');
if (!trackDiv || !raceContainer) return;
const raceStarted = raceContainer.classList.contains('is-racing');
// If race hasn't started → always show track
if (!raceStarted) {
trackDiv.style.visibility = 'visible';
return;
}
// Hide or show based on Zen Mode when race starts
trackDiv.style.visibility = isZenModeEnabled() ? 'hidden' : 'visible';
}
// Create Zen Mode toggle button
function createToggle() {
if (document.getElementById(TOGGLE_ID)) return;
const button = document.createElement('button');
button.id = TOGGLE_ID;
button.textContent = isZenModeEnabled() ? 'Zen Mode: ON' : 'Zen Mode: OFF';
button.style.position = 'fixed';
button.style.top = '80px';
button.style.right = '20px';
button.style.zIndex = '9999';
button.style.padding = '8px 14px';
button.style.borderRadius = '8px';
button.style.backgroundColor = '#222';
button.style.color = '#fff';
button.style.border = '1px solid #555';
button.style.cursor = 'pointer';
button.style.fontSize = '14px';
button.style.boxShadow = '0 2px 6px rgba(0,0,0,0.3)';
button.style.fontFamily = 'Arial, sans-serif';
button.addEventListener('click', () => {
const newState = !isZenModeEnabled();
localStorage.setItem(STORAGE_KEY, newState);
button.textContent = newState ? 'Zen Mode: ON' : 'Zen Mode: OFF';
applyZenMode();
});
document.body.appendChild(button);
}
// Observe DOM for dynamic race updates
const observer = new MutationObserver(() => {
createToggle();
applyZenMode();
});
observer.observe(document.body, { childList: true, subtree: true });
// Initial setup
window.addEventListener('load', () => {
createToggle();
applyZenMode();
});
})();